function cdcTrainingExpandCallback(txt, status, xhr){
	jQuery(this).slideDown();
}
function cdcTrainingExpand(linq){
	var ajaxPath = "/custom/customtags/plugin/cdcTraining/public/ajax/getDescription.cfm";
	var linkParamIndex = linq.href.lastIndexOf("?");
	if(linkParamIndex != -1){
		jQuery(linq).closest("td").children("div.enterprisedetail").load(ajaxPath + linq.href.substring(linkParamIndex), null, cdcTrainingExpandCallback);
		return false;
	}
	return true;
}

function cdcTrainingShowLogin(){
	jQuery("#accountdetail").toggle("slow");
	return false;
}

function cdcTrainingCloseLogin(){
	jQuery("#accountdetail").hide("slow");
	return false;
}

function cdcTrainingShowHelp(){
	jQuery("#cdcTrainingHelp").toggle("slow");
	return false;
}

function cdcTrainingCloseHelp(){
	jQuery("#cdcTrainingHelp").hide("slow");
	return false;
}

function cdcTrainingLoginFromFlyout(event){
	if(event != null && event.keyCode != 13) return;
	document.getElementById('cdcTrainingLoginFormEmail').value=document.getElementById('cdcTrainingLoginFlyoutEmail').value;
	document.getElementById('cdcTrainingLoginFormPassword').value=document.getElementById('cdcTrainingLoginFlyoutPassword').value;
	document.forms['cdcTrainingLoginForm'].submit();
}

function cdcTrainingFakeClickIfUnchecked(cBox){
	if(!cBox.checked && !cBox.disabled){
		cBox.checked = true;
		jQuery(cBox).triggerHandler("click");
	}
}

function cdcTrainingCart(){
	this._key = "CDCTRAININGCARTITEMS";
	var cartItems = this._getArray(this._key);
	var validCartItems = new Array();
	var tickyBoxes = jQuery("form[name^=cdcTraining]:first input[type=checkbox][name^=cdcTrainingItem]");
	var self = this;
	var i,j,k;
	// untick all boxes and clear all hidden fields first
	tickyBoxes.each(function(){this.checked=false;});
	jQuery("form[name^=cdcTraining]:first input[type=hidden][name^=cdcTrainingItem]").each(function(){this.value="0";});
	// loop over all cart items
	for(i=0; i<cartItems.length; i++){
		// is there something with a matching name?
		j = document.getElementsByName("cdcTrainingItem_"+cartItems[i]);
		if(j != null && j.length > 0){
			// check any checkboxes we found, set any hidden fields we found
			for(k=0; k<j.length; k++){
				if(j[k].tagName=="INPUT"){
					if(j[k].type=="checkbox"){
						j[k].checked = true;
					}else if(j[k].type=="hidden"){
						j[k].value = "1";
					}
				}
			}
			// we assume that the presence of a matching named element means it's valid
			validCartItems[validCartItems.length]=cartItems[i];
		}
	}
	this._setArray(this._key, validCartItems);
	cartItems = validCartItems;
	tickyBoxes.click(function(){
		var bits = this.name.split("_");
		if(bits.length > 1){
			if(this.checked){
				self.addItem(bits[1]+"_"+bits[2]);
			}else{
				self.removeItem(bits[1]+"_"+bits[2]);
			}
		}
	});
	this._cartItemsChanged();
}

cdcTrainingCart.prototype._serialiseArray=function(array){
	var result=new String();
	for(var i=0;i<array.length;i++){
		result+=escape(array[i].toString());
		if(i!=(array.length-1)){
			result+="#";
		}
	}
	return escape(result);
};

cdcTrainingCart.prototype._deserialiseArray=function(string){
	var result=new Array();
	if(string.length < 1) return result;
	var input=unescape(string).split("#");
	for(var i=0; i<input.length; i++){
		result[i]=unescape(input[i]);
	}
	return result;
};

cdcTrainingCart.prototype._setArray=function(key, array){
	var nextWeek=new Date(new Date().getTime()+(1000*60*60*24*7));
	document.cookie=key+"="+this._serialiseArray(array)+"; path=/; expires="+nextWeek.toUTCString();
};

cdcTrainingCart.prototype._getArray=function(key){
	var chocolateChips=new RegExp(key.replace(/[.*+?|()\[\]{}\\]/g,"\\$&")+"\s*=\s*([^;]*)(;|$)", "").exec(document.cookie);
	if(chocolateChips!=null && chocolateChips.length>=1){
		return this._deserialiseArray(chocolateChips[1]);
	}else{
		return new Array();
	}
};

cdcTrainingCart.prototype.addItem=function(itemId){
	var cartItems = this._getArray(this._key);
	if(jQuery.inArray(itemId, cartItems) == -1){
		cartItems[cartItems.length] = itemId;
		this._setArray(this._key, cartItems);
	}
	this._cartItemsChanged();
};

cdcTrainingCart.prototype.removeItem=function(itemId){
	var cartItems = this._getArray(this._key);
	var newCartItems = new Array();
	var i;
	for(i=0; i < cartItems.length; i++){
		if(cartItems[i] != itemId){
			newCartItems[newCartItems.length] = cartItems[i];
		}
	}
	this._setArray(this._key, newCartItems);
	this._cartItemsChanged();
};

cdcTrainingCart.prototype._cartItemsChanged=function(){
	var cartItems = this._getArray(this._key);
	var promptBit = jQuery("#cdcTrainingBasketPrompt");
	var statusBit = jQuery("#cdcTrainingBasketStatus");
	var pluralBit = statusBit.children(".plural")
	if(cartItems.length > 0){
		promptBit.fadeOut("fast", function(){statusBit.fadeIn("fast");});
		statusBit.children(".count").text(cartItems.length);
		if(cartItems.length == 1){
			pluralBit.hide();
		}else{
			pluralBit.show();
		}
	}else{
		statusBit.fadeOut("fast", function(){promptBit.fadeIn("fast");});
	}
};

window.preInit[window.preInit.length]=function(){
	var cart = new cdcTrainingCart();
	jQuery("#cdcTrainingLoginFlyoutPassword").keydown(cdcTrainingLoginFromFlyout);
	jQuery("#cdcTrainingLoginFlyoutEmail").keydown(cdcTrainingLoginFromFlyout);
}
