/**
* @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
var ebiz = Venda.namespace("Ebiz");

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

//2. declare function
ebiz.getIt = function (p1) {
	return p1 + 'TV.';
};

Venda.Ebiz.addClass = function(selector, className) {	
   $(selector).ready(function() {$(selector).addClass(className)});
};

$(document).ready(function() {
	Venda.Ebiz.addClass(".orderitems tbody tr:odd","orderitems-odd");
});
$(document).ready(function() {
	Venda.Ebiz.addClass(".orderitems tbody tr:even","orderitems-even");
});
$(document).ready(function() {
	Venda.Ebiz.addClass(".ordertable tbody tr:odd","ordertable-odd");
});
$(document).ready(function() {
	Venda.Ebiz.addClass(".ordertable tbody tr:even","ordertable-even");
});
 
/**
*  Alternative View Images
*/
Venda.Ebiz.allImages = new Array();

Venda.Ebiz.configSwitch = {
	paginationStyle: ""
};

Venda.Ebiz.configObjArea = {
	objDropdown: null,
	objDefaultImage: null,
	objMediumArea: null,
	objLinkArea: null,
	objAlternateViewArea: null,
	objAlternateViewHeader: null,
	objProduct: null
};

Venda.Ebiz.configPopupPanel = {
	popupHeader: "",
	loadingHeader: "",
	loadingImage: "",	
	closeImage: "",
	closeImageTitle: "",
	closeTextLink: ""
};

Venda.Ebiz.configAlternativeView = {
	productName: "",
	mediumAltText: "",	
	mediumTitleText: "",
	alternateViewAltText: "",
	alternateViewTitleText: "",
	alternateViewHeaderText: "",
	viewLargeText: "",
	viewLargeTitle: "",
	enableImageware: "",
	imagewareLink: "",	
	noImage: ""
};

/**
* Sets the config values to each config type
* @param {string} configType this is an config type
* @param {array} settings this is the value of each config type
*/
Venda.Ebiz.init = function(configType,settings) {
	for (var eachProp in settings) {
		this[configType][eachProp] = settings[eachProp];
	}
};

Venda.Ebiz.loadImage = function(attValue, imgSources) {
	this.allImages[attValue] = imgSources;
};

Venda.Ebiz.isClickable = function(dataChecking) {
	var able = false;
	if (dataChecking instanceof Array) {
		for (var i = 0; i < dataChecking.length; i++) {
			if (dataChecking[i] != "") {
				able = true;
			}
		}
	}
	return able;
};

/**
* Gets the image HTML tag
* @param {object} mappingData
* @returns "imgTag"
*/
Venda.Ebiz.getImageTag = function(mappingData) {
	var imgTag = "";
	
	if ((mappingData.imgSource == "") && (mappingData.noImage != "")) {
		mappingData.imgSource = mappingData.noImage;
	}
	if (mappingData.imgSource) {
		imgTag = "<img src=\""+mappingData.imgSource+"\" alt=\""+mappingData.imgAlt+"\">";
	}
	if (mappingData.imgChange) {		
		//alternative view images
		imgTag = "<a href=\""+mappingData.imgChange+"\" onclick=\"Venda.Ebiz.changeMainImage({attValue: '"+mappingData.attValue+"', no: "+mappingData.currentImage+"}); Venda.Ebiz.changeViewLargeLink({attValue: '"+mappingData.attValue+"', no: "+mappingData.currentImage+"}); Venda.Ebiz.highlightAltView(this,this.parentNode.id); return false;\" title=\""+mappingData.imgTitle+"\">"+imgTag+"</a>";
	}
	if (mappingData.imgPopup) {
		//main image
		if (this.configAlternativeView["enableImageware"] == "") {
			// not use image ware
			imgTag = "<a href=\""+mappingData.imgPopup+"\" onclick=\"Venda.Ebiz.doPopup('"+mappingData.attValue+"',this.href, "+mappingData.currentImage+"); return false;\" title=\""+mappingData.imgTitle+"\">"+imgTag+"</a>";
		} else {
			// use image ware
			imgTag = this.configAlternativeView["imagewareLink"] + imgTag + "</a>";
		}
	}
	return imgTag;
};

/**
* Sets the image HTML tag
* @param {object} mappingData
* 
*/
Venda.Ebiz.changeMainImage = function(mappingData) {
	var attValue = mappingData.attValue;
	var currentImage = mappingData.no || 0;
	var imgSource = (mappingData.no)? this.allImages[attValue].setlalt[mappingData.no-1] : this.allImages[attValue].setlarge;
	var imgPopup = (mappingData.no)? this.allImages[attValue].setlalt[mappingData.no-1] : this.allImages[attValue].setlarge;

	var mainImage = this.getImageTag({
																		noImage: this.configAlternativeView["noImage"]["medium"],
																		imgSource: imgSource,
																		imgPopup: imgPopup,
																		attValue: attValue,
																		imgAlt: this.configAlternativeView["mediumAltText"],
																		imgTitle: this.configAlternativeView["mediumTitleText"],
																		currentImage: currentImage			
														});

	this.configObjArea["objMediumArea"].innerHTML = mainImage;
	YAHOO.util.Event.addListener(["zoom_img2"],"click", Venda.Widget.Lightbox.showImageware);
};

/**
* Sets the image HTML tag
* @param {object} mappingData
* 
*/
Venda.Ebiz.changeViewLargeLink = function(mappingData) {
	var attValue = mappingData.attValue;
	var currentImage = mappingData.no || 0;
	var imgPopup = (mappingData.no)? this.allImages[attValue].setlalt[mappingData.no-1] : this.allImages[attValue].setlarge;	
	var viewLarge = "";

	if (imgPopup != "") {
		viewLarge = "<div class=\"enlarge\"><a href=\""+imgPopup+"\" onclick=\"Venda.Ebiz.doPopup('"+attValue+"',this.href, "+currentImage+"); return false;\" title=\""+this.configAlternativeView["viewLargeTitle"]+"\">"+ this.configAlternativeView["viewLargeText"] + "</a></div>";
	}
	
	this.configObjArea["objLinkArea"].innerHTML = viewLarge;
};

/**
* Generate entire images inside alternative view area
* @param {object} attValue
* 
*/
Venda.Ebiz.changeAltViewSet = function(attValue) {
	var newDataMedium = new Array();
	var newDataXSmall = new Array();
	var allSideview = "";
	var n = 0;
	var count = 0;
	var imgSequence = 0;
	
	//product name - attribute value (if it does) - Additional view [no.]  is used to define a short description of the image in 'alt' and 'title' attribute
	var imgAlt = (attValue) ? this.configAlternativeView["productName"] + " - " + attValue + " - " + this.configAlternativeView["alternateViewAltText"] : this.configAlternativeView["productName"] + " - " + this.configAlternativeView["alternateViewAltText"];
	
	/*Start merge entire datas between 'default image' and 'alternative view image' together */
	if (this.allImages[attValue].setxsmall != "" && this.allImages[attValue].setlarge != "") {
		newDataMedium[count] = this.allImages[attValue].setlarge;
		newDataXSmall[count] = this.allImages[attValue].setxsmall;
	} 

	for (var i = 0; i < this.allImages[attValue].setxsalt.length; i++) {
		count++;
		if (this.allImages[attValue].setlalt[i] != "" && this.allImages[attValue].setxsalt[i] != "") {
			newDataMedium[count] = this.allImages[attValue].setlalt[i];
			newDataXSmall[count] = this.allImages[attValue].setxsalt[i];
		}
	}
	/* End merge */
	
	for (var i = 0; i < newDataXSmall.length; i++) {
		if (typeof newDataXSmall[i] != "undefined") {imgSequence++;}
		allSideview = allSideview + this.getImageTag({
														currentImage: n,
														imgSource: newDataXSmall[i],
														imgChange: newDataMedium[i],											
														attValue: attValue,
														imgAlt: imgAlt + imgSequence,
														imgTitle: imgAlt + imgSequence
													});
		n++;
	}
	this.configObjArea["objAlternateViewArea"].innerHTML = allSideview;
	this.showAltViewHeader(this.configObjArea["objAlternateViewHeader"]);
};

/**
* Change attribute dropdown
* @param {object} attValue
*/
Venda.Ebiz.changeDropdown = function(attValue) {
	for (var i = 0; i < this.configObjArea["objDropdown"].options.length; i++) {
		if (this.configObjArea["objDropdown"].options[i].value == attValue) {
			this.configObjArea["objDropdown"].selectedIndex = i;
		}
	}
	
	this.configObjArea["objProduct"].changeAttributes(this.configObjArea["objDropdown"]);
};

/**
* Change
* @param {object} attValue
*/
Venda.Ebiz.changeSet = function(attValue) {
	this.changeMainImage({attValue:attValue});
	if(this.configAlternativeView["enableImageware"] == ""){this.changeViewLargeLink({attValue:attValue});}
	this.changeAltViewSet(attValue);
	this.changeDropdown(attValue);
};

/**
* Change
* @param {interger} number
* @param {} objLink
*/
Venda.Ebiz.changePopup = function(objLink) {
	$("#enlargedpopup").attr({src:objLink.href});
};

/**
* Generate alternative view header text
*/
Venda.Ebiz.showAltViewHeader = function(obj) {
	if (this.configObjArea["objAlternateViewArea"].innerHTML != "") {
		obj.innerHTML = this.configAlternativeView["alternateViewHeaderText"];
		obj.className = "";
	} else {
		obj.innerHTML = "";
		obj.className = "hide";
	}
};

Venda.Ebiz.highlightAltView = function (objLink,parentId) {
	parentId = "#"+parentId+" a";
	$(parentId).removeClass("selected");
	$(objLink).addClass("selected");
};
										
/**
* Change
* @param {object} attValue
* @param {interger} number
*/
Venda.Ebiz.createPopupPage = function(attValue,number) {
	var newDataLarge = new Array();
	var	newDataXSmall = new Array();
	var max = 0;
	var minusNumber = 0;
	var pageSequence = 1;
	var alternateView = "";// define entire images as pagination style
	
	//product name - attribute value (if it does) - Additional view [no.]  is used to define a short description of the image in 'alt' attribute
	var imgAlt = (attValue) ? this.configAlternativeView["productName"] + " - " + attValue + " - " + this.configAlternativeView["alternateViewAltText"] : this.configAlternativeView["productName"] + " - " + this.configAlternativeView["alternateViewAltText"];
	
	/* Start merge entire datas between 'default image' and 'alternative view image' together */
	if (this.allImages[attValue].setxsmall != "" && this.allImages[attValue].setlarge != "") {
		newDataXSmall[max] = this.allImages[attValue].setxsmall;
		newDataLarge[max] = this.allImages[attValue].setlarge;
	} else {
		minusNumber = 1;
	}
	
	for (var i = 0; i < this.allImages[attValue].setxsalt.length; i++) {
		max++;
		if (this.allImages[attValue].setxsalt[i] != "" && this.allImages[attValue].setlalt[i] != "") {
			newDataXSmall[max] = this.allImages[attValue].setxsalt[i];
			newDataLarge[max] = this.allImages[attValue].setlalt[i];
		}
	} 
	/* End merge */
	if (max > 1 && newDataXSmall.length > 0 && this.configSwitch["alternateViewStyle"] != "") {
			alternateView = alternateView + "<div id=\"alternateViewList\">";
			for (var i = 0; i < newDataXSmall.length; i++) {
				if (typeof newDataLarge[i] != "undefined" || typeof newDataXSmall[i] != "undefined") {
					if (this.configSwitch["alternateViewStyle"] == "image") {
						// Start image list
						if (i == (number - minusNumber)) {
							alternateView = alternateView + "<a href=\""+newDataLarge[i]+"\" onclick=\"Venda.Ebiz.changePopup(this); Venda.Ebiz.highlightAltView(this,this.parentNode.id); return false;\" class=\"selected\" title=\""+imgAlt + pageSequence+"\"><img src=\""+newDataXSmall[i]+"\" alt=\""+imgAlt + pageSequence+"\"></a>";	
						} else {
							alternateView = alternateView + "<a href=\""+newDataLarge[i]+"\" onclick=\"Venda.Ebiz.changePopup(this); Venda.Ebiz.highlightAltView(this,this.parentNode.id); return false;\" title=\""+imgAlt + pageSequence+"\"><img src=\""+newDataXSmall[i]+"\" alt=\""+imgAlt + pageSequence+"\"></a>";	
						}
						// End image list
					} else {
						// Start number list
						if (pageSequence == (number - minusNumber)) {
							alternateView = alternateView + "<a href=\""+newDataLarge[i]+"\" onclick=\"Venda.Ebiz.changePopup(this); Venda.Ebiz.highlightAltView(this,this.parentNode.id); return false;\" class=\"selected\" title=\""+imgAlt + pageSequence+"\">"+(pageSequence)+"</a>";
						} else {
							alternateView = alternateView + "<a href=\""+newDataLarge[i]+"\" onclick=\"Venda.Ebiz.changePopup(this); Venda.Ebiz.highlightAltView(this,this.parentNode.id); return false;\" title=\""+imgAlt + pageSequence+"\">"+(pageSequence)+"</a>";
						}
						// End number list
					}
					pageSequence++;
				}
			}
			alternateView = alternateView + "</div>";
		} else {
			// don't have any alternate view images so, it returned 'null'
			alternateView = "";
		}
	
	return alternateView;
};

var xPosition = (document.documentElement.clientWidth - 550) / 2;

Venda.Ebiz.loadingPanel = new YAHOO.widget.Panel("loading_panel",  
														{ 
															width:"240px", 
															fixedcenter:false, 
															close:true, 
															draggable:false,
															zindex:3,
															modal:true,
															visible:false,
															x:xPosition,
															y:10
														}
													);

Venda.Ebiz.enlargePanel = new YAHOO.widget.Panel("enlarge_panel",  
														{ 
															fade: 0.24,			
															fixedcenter:false,
															draggable: true,
															zindex:4,
															modal:true,
															visible:false,
															x:xPosition,
															y:10
														}
													);

/**
* Set panel dimension
* @param {} panel
* @param {object} objImage
*/
Venda.Ebiz.setWidthPanel = function (panel,objImage) {
	document.getElementById("tag-invtname").style.display = "inline";
	var widthValue = (objImage.width > (document.getElementById("tag-invtname").offsetWidth + 100)) ? objImage.width + 20: document.getElementById("tag-invtname").offsetWidth + 130;
	panel.cfg.setProperty("width", widthValue + "px");
	document.getElementById("tag-invtname").style.display = "none";
};

Venda.Ebiz.doPopup = function(attValue,sLink,number) {
	var alternateView = this.createPopupPage(attValue,number);

	// Insert 'Alternative View Image' header if it have alternate view image
	if (alternateView != "") {
		alternateView = "<div id=\"alternateViewHeader\">"+this.configAlternativeView["alternateViewHeaderText"]+"</div>" + alternateView;
	} else {
		alternateView = alternateView;
	}
	
	// HTML which will be in the 'popupContents' area
	var mainImage = "<div id=\"mainImage\"><a onclick=\"Venda.Ebiz.enlargePanel.hide(); return false;\" href=\"#\" title=\""+this.configPopupPanel["closeImageTitle"]+"\"><img src=\""+sLink+"\" id=\"enlargedpopup\" name=\"enlargedpopup\" onload=\"Venda.Ebiz.setWidthPanel(Venda.Ebiz.enlargePanel, this); Venda.Ebiz.loadingPanel.hide(); Venda.Ebiz.enlargePanel.show();\"></a></div>";
	alternateView = "<div id=\"alternateView\">"+alternateView+"</div>"
	var strCloseText = "<div id=\"closeWindow\"><a href=\"#\" onclick=\"Venda.Ebiz.enlargePanel.hide(); return false;\">"+this.configPopupPanel["closeTextLink"]+"</a></div>";

	Venda.Ebiz.loadingPanel.setHeader("<div class=\"tl\"></div><span>"+Venda.Ebiz.configPopupPanel.loadingHeader+"</span><div class=\"tr\"></div>");
	Venda.Ebiz.loadingPanel.setBody("<img src=\""+Venda.Ebiz.configPopupPanel.loadingImage+"\" />");
	Venda.Ebiz.loadingPanel.render(document.body);
	Venda.Ebiz.loadingPanel.show();

	Venda.Ebiz.enlargePanel.setHeader("<div class=\"tl\"></div><span>"+Venda.Ebiz.configPopupPanel.popupHeader+"</span><div class=\"tr\"></div>");
	Venda.Ebiz.enlargePanel.setBody( "<div class=\"popupContents\">"+mainImage + alternateView + strCloseText+"</div>");
	Venda.Ebiz.enlargePanel.render(document.body);
};

/**
* prepare entire images
* @param {array} imgSource
*/
Venda.Ebiz.preloadImage = function(imgSource) {
	if (imgSource != "") {
		new Image().src = imgSource;
	}
};

/**
* prepare entire images
* @param {array} imgSource
*/
Venda.Ebiz.preloadAllImage = function() {
	for (var eachAttrValue in this.allImages) {
		var allImageData = this.allImages[eachAttrValue];

		this.preloadImage(allImageData.setmedium);
		this.preloadImage(allImageData.setlarge);
		for (var eachImage in allImageData.setxsalt) {
			this.preloadImage(allImageData.setxsalt[eachImage]);
		}
		for (var eachImage in allImageData.setmalt) {
			this.preloadImage(allImageData.setmalt[eachImage]);
		}
		for (var eachImage in allImageData.setlalt) {
			this.preloadImage(allImageData.setlalt[eachImage]);		
		}		
	}
};

var relateditem = 0;

/**
* 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>');
};
//RT131831
 var feedComcj = new CookieJar({expires:'',path: '/'});
  	         if(getUrlParam(window.location.href,'source')!=""){
  	                 var feedComparamValue = getUrlParam(window.location.href,'source');
  	                 var feedComCookie = feedComcj.put("source",feedComparamValue);
  	         }
  	 /**
  	  * Gets the value of a specified URL parameter
  	  * @param {String} currURL      this is the URL which you wish to get the URL parameter value from
  	  * @param {String} urlParam     this is the name of the URL parameter you want to get the value for
  	  * @return match   unescaped value for parameter specified urlParam if true else false
  	  */
  	 function getUrlParam(url,urlParam) {
  	         //declare regular expression to be use.
  	         var re = new RegExp('[?&]'+urlParam+'=([^&]+)');
  	         var match = url.match(re);
  	         return match ? unescape(match[1]) : false;
  	 };
//RT131831
