/**
* @fileoverview ebiz.js: A module used for client specific functionality
*
* This module defines a single symbol named "Venda.ebiz"
* all ebiz utility functions are stored as properties of this namespace
* functions that are spacific this site shoudl be added to this file only.
*/

//Declare namespace for ebiz
Venda.namespace("Ebiz");

 /**
 * Split a string so it can be displayed on multiple lines so it does not break display layout - used on order confirmation and order receipt page
 * @param {string} strToSplit string that needs to be split 
 * @param {Integer} rowLen length of row which will hold the string
 * @param {string} displayElem the html container which will display the splitted string
 */
Venda.Ebiz.splitString = function(strToSplit, rowLen, dispElem) {
	var stringlist = new Array();
	while (strToSplit.length > rowLen) {
	   stringlist.push( strToSplit.slice(0,rowLen));
	   strToSplit=strToSplit.substr(rowLen);
	}
	if (strToSplit.length) {
		stringlist.push(strToSplit);
	}
	document.getElementById(dispElem).innerHTML = stringlist.join('<br>');
};

 /**
 * A skeleton function for validating user extened fields - needs to be amended by the build team
 * @param {object} frmObj HTML form containing user extended field elements
 */
Venda.Ebiz.validateUserExtendedFields = function(frmObj) {
	if(frmObj) {
		if ( (frmObj.usxtexample1.checked==false) && (frmObj.usxtexample2.checked==false) && (frmObj.usxtexample3.checked==false))  {	
			alert("Please tick at least one checkbox");
			return false;
		}			
		return true;		
	} 
	return false;
}

/**
 * example function below
 * ebiz.myFunctionname = function(param1, param2) {
 *	..... Place function code here ....
 * }; 
 */

Venda.Ebiz.arrMembershipOptionsList=new Array();
Venda.Ebiz.arrMembershipOptionsList[0]="membership";

Venda.Ebiz.checkMembership = function (arrMembershipOptions,elSelectGiftwrap,bMembershipOnly) {
	var elLength=elSelectGiftwrap.length;
	var membershipOptionsLength=arrMembershipOptions.length;
	var i=0;
	var j=0;
	var found=false;

	i=0;
	while (i<elLength) {
		found=false;
		
		for(j=0;j<membershipOptionsLength;j++){
			if (elSelectGiftwrap.options[i].value==arrMembershipOptions[j]) {
				found=true;
			}
		}
		
		if (((found && !bMembershipOnly) || (!found && bMembershipOnly)) && elSelectGiftwrap.options[i].value!="") {
			elSelectGiftwrap.remove(i);
			elLength=elSelectGiftwrap.length;
		} else {
			i++;
		}
	}
}

//dynamic popup window script
// images default to venda-support directory, change the path to ebiz resources directory if you need to source your own versions
mingif = '/venda-support/images/min.gif';
closegif = '/venda-support/images/close.gif';
restoregif = '/venda-support/images/restore.gif';
resizegif = '/venda-support/images/resize.gif';

function dynamicWindow(where,name) {
	detailWin=dhtmlwindow.open('productdetailWin', 'iframe', where+'&layout=iframe&temp=productdetail_layer', name, 'width=650px,height=400px,resize=1,scrolling=1,center=1');
}
// you may edit the parameters in the final argument above to alter the appearance of the popup window

//Description: Returns the value of a specified URL parameter 
//Parameters:
//1. currURL = this is the URL which you wish to get the URL parameter value from
//2. urlParam = this is the name of the URL parameter you want to get the value for
//Returns: value for parameter specified urlParam.
function grabURL(currURL,urlParam) {
	//find out a value where is passed from current url
	var url = unescape(currURL);
	var spliter = '&';
	var sField = spliter+urlParam+'=';
	
	if (url.search(sField) == -1) {               
		sField = '?'+urlParam+'=';         
	}
	
	var urlArray = url.split(sField);
	if (urlArray[1]) {
		//get url param value
		var paramArray = urlArray[1].split(spliter);
		return(paramArray[0]);
	}
}

//order confirmation and order receipt page - split the email address on the RHN if too long
function splitEmailAdd(usemail) {
	var stringlist = new Array();
	while (usemail.length > 30) {
	   stringlist.push( usemail.slice(0,30));
	   usemail=usemail.substr(30);
	}
	if (usemail.length) {
	  stringlist.push(usemail);
	}
	document.write(stringlist.join( '<br>' ));
}

//dynamic nav script
turnonToggle = 1; //change this to 0 if you don't want to use toggling
// preload controls
// change path to the desired location
shown = new Image();
shown.src = "/venda-support/images/bulleton.gif";
hidden = new Image();
hidden.src = "/venda-support/images/bulletoff.gif";

function dynamicContent(where,what) {
	// find out what tag the function is called from so the correct value is passed for url
	identifyTag = where.tagName;
	if (identifyTag == "A"){
		ajaxFunction(where+'&layout=noheaders&temp=subcategories',what);
		if (turnonToggle == 1){toggle(where);}
	} else if (identifyTag == "INPUT" || identifyTag == "SELECT") {
		ajaxFunction(where.value,what);
	}
}

/**
 * Check the release date of each attribute then display the message what pre-order is and change "add to basket" button to "pre-order" button.
 **/
Venda.Ebiz.checkReleaseDate = function(selectElement){
	var attrString="";
	var attrOptionValue = document.getElementById(selectElement).getElementsByTagName("select");
	var parentPreorder = Venda.Ebiz.checkReleaseDate.releaseInstruction.parentPreorder;
	for (var i=0;i<attrOptionValue.length;i++){
		attrString+=attrOptionValue[i].value;
	}
	
	if (product.attributeValues[attrString]!=undefined){ // Select attribute
		if (product.attributeValues[attrString].data["atronhand"] > 0){ // attribute have stock
			if (parentPreorder !=""){ // Parent Release Date is Pre-order
				// each attribute has pre-order
				if (product.attributeValues[attrString].data["atrreleasedy"]!="" && product.attributeValues[attrString].data["atrreleasemn"]!="" && product.attributeValues[attrString].data["atrreleaseyr"]!=""){
					var releaseDate = product.attributeValues[attrString].data["atrreleasemn"]+"/"+product.attributeValues[attrString].data["atrreleasedy"]+"/"+product.attributeValues[attrString].data["atrreleaseyr"];
					if(Venda.Ebiz.checkReleaseDate.checkDate(releaseDate)==false){// release date is future date
					Venda.Ebiz.checkReleaseDate.releaseInstruction.hideAddtoBasketButton.style.display = "none";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.hidePreorderButton.style.display = "inline";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.style.display ="inline";
					//Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.innerHTML = Venda.Ebiz.checkReleaseDate.releaseInstruction.productAttributeName+" "+releaseDate;
					Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.innerHTML = Venda.Ebiz.checkReleaseDate.releaseInstruction.productAttributeName+"("+product.attributeValues[attrString].values["att1"]+") "+Venda.Ebiz.checkReleaseDate.releaseInstruction.productNoStock+" "+releaseDate;
					Venda.Ebiz.checkReleaseDate.releaseInstruction.hideQuantityBox.style.display = "inline";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.nostockMessage.style.display = "none";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.hidemainPreMessage.style.display = "none";
					}
					else{// release date is not future date
						Venda.Ebiz.checkReleaseDate.releaseInstruction.hideAddtoBasketButton.style.display = "inline";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.hidePreorderButton.style.display = "none";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.style.display ="none";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.hideQuantityBox.style.display = "inline";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.nostockMessage.style.display = "none";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.hidemainPreMessage.style.display = "none";
					}
				}
				else {// each attribute  doesn't have pre-order
					Venda.Ebiz.checkReleaseDate.releaseInstruction.hideAddtoBasketButton.style.display = "inline";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.hidePreorderButton.style.display = "none";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.style.display ="none";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.hideQuantityBox.style.display = "inline";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.nostockMessage.style.display = "none";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.hidemainPreMessage.style.display = "none";
				}
			}
			else {// Parent Release Date isn't Pre-order
				// each attribute has pre-order
				if (product.attributeValues[attrString].data["atrreleasedy"]!="" && product.attributeValues[attrString].data["atrreleasemn"]!="" && product.attributeValues[attrString].data["atrreleaseyr"]!=""){
					var releaseDate = product.attributeValues[attrString].data["atrreleasemn"]+"/"+product.attributeValues[attrString].data["atrreleasedy"]+"/"+product.attributeValues[attrString].data["atrreleaseyr"];
					if(Venda.Ebiz.checkReleaseDate.checkDate(releaseDate)==false){// release date is future date
						Venda.Ebiz.checkReleaseDate.releaseInstruction.hideAddtoBasketButton.style.display = "none";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.hidePreorderButton.style.display = "inline";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.style.display ="inline";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.innerHTML = Venda.Ebiz.checkReleaseDate.releaseInstruction.productAttributeName+"("+product.attributeValues[attrString].values["att1"]+") "+Venda.Ebiz.checkReleaseDate.releaseInstruction.productNoStock+" "+releaseDate;
						Venda.Ebiz.checkReleaseDate.releaseInstruction.hideQuantityBox.style.display = "inline";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.nostockMessage.style.display = "none";
					}
					else{ // release date is not future date
						Venda.Ebiz.checkReleaseDate.releaseInstruction.hideAddtoBasketButton.style.display = "inline";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.hidePreorderButton.style.display = "none";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.style.display ="none";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.hideQuantityBox.style.display = "inline";
						Venda.Ebiz.checkReleaseDate.releaseInstruction.nostockMessage.style.display = "none";
					}					
				}
				else {// each attribute doesn't have pre-order
					Venda.Ebiz.checkReleaseDate.releaseInstruction.hideAddtoBasketButton.style.display = "inline";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.hidePreorderButton.style.display = "none";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.style.display ="none";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.hideQuantityBox.style.display = "inline";
					Venda.Ebiz.checkReleaseDate.releaseInstruction.nostockMessage.style.display = "none";
				}
			}
		}
		else {// attribute doesn't have stock
			Venda.Ebiz.checkReleaseDate.releaseInstruction.hideAddtoBasketButton.style.display = "none";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.hidePreorderButton.style.display = "none";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.style.display ="none";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.hideQuantityBox.style.display = "none";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.nostockMessage.style.display = "inline";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.hidemainPreMessage.style.display = "none";
		}
	}
	else {// Back to default
		if (parentPreorder !=""){// if product has pre-order
			Venda.Ebiz.checkReleaseDate.releaseInstruction.hideAddtoBasketButton.style.display = "none";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.hidePreorderButton.style.display = "inline";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.style.display ="none";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.hideQuantityBox.style.display = "inline";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.nostockMessage.style.display = "none";// might change
			Venda.Ebiz.checkReleaseDate.releaseInstruction.hidemainPreMessage.style.display = "inline";
		}
		else {
			Venda.Ebiz.checkReleaseDate.releaseInstruction.hideAddtoBasketButton.style.display = "inline";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.hidePreorderButton.style.display = "none";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.preOrderMessage.style.display ="none";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.hideQuantityBox.style.display = "inline";
			Venda.Ebiz.checkReleaseDate.releaseInstruction.nostockMessage.style.display = "none";
		}
	}
};//close function

 /**
 * Take the release date of the attribute then compare to now date 
 */
Venda.Ebiz.checkReleaseDate.checkDate = function(chkDate){
		var chkDate = chkDate.split("/");
		var curDate = Venda.Ebiz.checkReleaseDate.releaseInstruction.currentDate.split("/");
		var releaseDate = new Date(chkDate[2],chkDate[0],chkDate[1]);
		var nowDate = new Date(curDate[2],curDate[0],curDate[1]);
		return (releaseDate<nowDate);
};