/**
 * Updated By: Abdullah Yaseen - 08/28/2008
 * Description: Updated in order to refresh fabrics for COM items when Back button is pressed . per jira#: BD-481.
 *
 * Updated By: Abdullah Yaseen - 08/31/2008
 * Description: Update to add new function - showDefaultSwatch - that take 2 parameters in order to
 * 				Updated to select the option as default value when only one option type exist.
 *				(don not prompt the user to select this option because it the only option exist). per jira#: BD-523.
 */
 
// the ID for the view or edit links
var optionLinks = "optionLink_"; 

// the option panel ID
var optionMainID = "optionMain_";

// to display the selected swatch name in the option panel head
var optionSwatchName = "optionSwatchName_"; 

// to display the selected swatch name in the summary body
var summarySwatchName = "summarySwatchName_"; 

// for the tabs inside a option panel body
var optionTabs = "optionTabs_"; 

// for the selected swatch desc display inside a option panel body
var optionSwatchBody = "optionSwatchBody_"; 

// div id for the final cost display.
var finalCost = "finalCost";

// div id for the error Msg display.
var errorMsg = "errorMsg";

// to store the total number of customizable options
var totalOptions; 

// to store the present selected option which is being customised
var currentOption; 

// action url 
var sUrl = "customProdAction.do";

// post data string for option data
var postDataOptionBody = "action=getOptionPanelBody";
var postDataOptionBodyParameter ="&selectedOption=";

// post data string for option data
var postDataSwatchDesc = "action=getSwatch&selectedOption=";

// post data string for option data
var postDataSummary = "action=showSummary";

// char to separate the response text
var DATA_SEPARATOR = '||';

// char for div id splitting
var DIV_SEPARATOR = '_';

// to store the mini summary body
var summaryDump;

// id of the summary body div
var summaryBody = "summaryFinal";

// default image div id
var defaultImage = "defaultImage";

// custom image div id
var customImage = "customImage";

// div id of the zoom controls
var zoomControls = "zoomControls";

// var containing the greyed out zoom buttons
var greyedZoom = "";

//boolean to control the zoom button images changing
var selectionStarted = false;

// div id of the add to cart and add to wishlist buttons
var addButtons = "addButtons";

// var to store the enabled add to cart and wishlist buttons
var cartEnabledButtons = "";

// var to store the disabled add to cart and wishlist buttons
var cartDisabledButtons = "";

// div id of the custom image tag
var customImg = "customImg";

// var for loading status...
var loadingStatus = "<div valign=\"top\" bgcolor=\"#ff0000\"><b>Loading...</b></div>";

// flag for add to cart...
var addButtonsFlag = false;

//alert error msg..
var alertErrorMsg = "Please select all the options";

function adjustAccordians(optionsHeight){

	var accpanel = document.getElementById("accordian_main")
	var getPanels = accpanel.getElementsByTagName("dt")
	var accContainer = document.getElementById("accordian_container")
	
	var setHeight=0;
	for(i=0; i<getPanels.length; i++)
	{
		//setHeight += getPanels[i].offsetHeight;
		setHeight += 25;
	}
	accpanel.style.height= (setHeight + optionsHeight)+"px";
	accContainer.style.height= (setHeight + optionsHeight)+"px";

} 
// Updated By: Ala' Abulebdeh
// Updated to change verbiage on error to "Please enable your browser cookies to customize this item." per jira BD-322
// Date: 06/16/2008
function handleFailedCall(){
	alert("Please enable your browser cookies to customize this item.");
	window.location.reload();
}

function hideLinks(){
	document.getElementById(optionLinks + currentOption).style.display="none";
}

function showLinks(){
	for(i=1; i <= totalOptions; i++){
		document.getElementById(optionLinks + i).style.display="block";
	}
}

function analyseOption(cuurOptionID){
	var arr = cuurOptionID.split(DIV_SEPARATOR);
	currentOption = arr[1];
	hideLinks();
	
	if(summaryDump != undefined){
		document.getElementById(summaryBody).innerHTML = summaryDump;
	}
	document.getElementById(summaryBody).style.height = "";
	
	if(currentOption != '0'){
	//	need to make ajax call from here to get the data
	clearAllOptionBody();
	makeRequestOptionBody();
	}
}

function changeMainImage(imageURL){

	if(!selectionStarted){
		document.getElementById(customImage).style.display="block";
		document.getElementById(defaultImage).style.display="none";
		// need to write function to grey out the zoom buttons
		document.getElementById(zoomControls).innerHTML = greyedZoom;
		selectionStarted = true;
	}
	document.getElementById(customImg).src=imageURL;
	document.getElementById(customImg).alt='';
}

function showNext(prsntOption){
	if(prsntOption == totalOptions){
		// show the summary window totally.
		showLinks();
		AccordionMenu.closeDtById(optionMainID + currentOption);
		showSummary();
	}else{
		currentOption = parseInt(currentOption) + 1;
		AccordionMenu.openDtById(optionMainID + currentOption);
	}
}

function clearAllOptionBody(){
	for(i=1; i <= totalOptions; i++){
		document.getElementById(optionTabs + i).innerHTML = loadingStatus;
	}
}

var handleSuccessOptionBody = function(o){
	if(o.responseText !== undefined){
						 
		var actionResponseText = o.responseText;
		var responseArr = new Array();
		var optionTabHtml = "";
		var swatchDescHtml = "";
		
		if(actionResponseText != null && actionResponseText.indexOf(DATA_SEPARATOR) != -1) {
			responseArr = actionResponseText.split(DATA_SEPARATOR);
			currentOption = responseArr[0];
			optionTabHtml = responseArr[1];
			swatchDescHtml = responseArr[2];
			
			
			document.getElementById(optionTabs + currentOption).innerHTML = optionTabHtml;
			document.getElementById(optionSwatchBody + currentOption).innerHTML = swatchDescHtml;				 
			starttabs();
		}else{
			handleFailedCall();
		}
	}
};

var handleFailure = function(o){

	if(o.responseText !== undefined){
		alert("Status code message: " + o.statusText );
	}
};

var callbackOptionBody =
{
  success:handleSuccessOptionBody,
  failure:handleFailure
};

function makeRequestOptionBody(){
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callbackOptionBody, postDataOptionBody + currentOption);

}

function changeOptionValue(swatchName){
	document.getElementById(optionSwatchName + currentOption).innerHTML = swatchName;
	document.getElementById(summarySwatchName + currentOption).innerHTML = swatchName;
}

var handleSuccessShowSwatch = function(o){
	if(o.responseText !== undefined){
						 
		var actionResponseText = o.responseText;
		var responseArr = new Array();
		var swatchName = "";
		var swatchDescHtml = "";
		var mainImageUrl = "";
		var skuPrice = "";
		var errorMsgge = "";
		var enableAddButtons = "";
		
		if(actionResponseText != null && actionResponseText.indexOf(DATA_SEPARATOR) != -1) {
			responseArr = actionResponseText.split(DATA_SEPARATOR);
			currentOption = responseArr[0];
			swatchName = responseArr[1];
			mainImageUrl = responseArr[2];
			swatchDescHtml = responseArr[3];
			skuPrice = responseArr[4];
			errorMsgge = responseArr[5];
			enableAddButtons = responseArr[6];
		
			document.getElementById(optionSwatchBody + currentOption).innerHTML = swatchDescHtml;
			changeOptionValue(swatchName);				 
			changeErrorMsg(errorMsgge);
			changeSkuPrice(skuPrice);
			handleCartButtons(enableAddButtons);
			
			if(mainImageUrl != null && mainImageUrl.length > 0){
				changeMainImage(mainImageUrl);
			}
		}else{
			handleFailedCall();
		}
	}
};

var callbackShowSwatch =
{
  success:handleSuccessShowSwatch,
  failure:handleFailure
};

function changeImageBorder(obj){
	var imgarray = document.getElementsByTagName('img');
	for(i=0;i<imgarray.length;i++) 	{
	imgarray[i].className="";
	}
	obj.childNodes[0].className="imgborder";
}

function showSwatch(tabName, swatchCode, obj){
	changeImageBorder(obj);
	var postData = postDataSwatchDesc + currentOption + "&tabName=" + tabName + "&swatchCode=" + swatchCode;
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callbackShowSwatch, postData);
}

function showDefaultSwatch(tabName, swatchCode){
	//changeImageBorder(obj);
	var postData = postDataSwatchDesc + currentOption + "&tabName=" + tabName + "&swatchCode=" + swatchCode;
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callbackShowSwatch, postData);
}

function changeErrorMsg(errorMsgge){
	document.getElementById(errorMsg).innerHTML = "";
	if(errorMsgge != ""){
		document.getElementById(errorMsg).innerHTML = "<font color=\"#cc0033\"><b>" + errorMsgge + "</b></font>";
		alertErrorMsg = errorMsgge;
	}
}

function changeSkuPrice(skuPrice){
	if(skuPrice != null && skuPrice.length > 0 ){
		document.getElementById(finalCost).innerHTML = skuPrice;
	}else{
		document.getElementById(finalCost).innerHTML = "Please select all options";
	}
}

function handleCartButtons(enableAddButtons){
		if(enableAddButtons != null && enableAddButtons == "true"){
			addButtonsFlag = true;
			//document.getElementById(addButtons).innerHTML = cartEnabledButtons;
		}else{
			addButtonsFlag = false;
			//document.getElementById(addButtons).innerHTML = cartDisabledButtons;
		}
}

var handleSuccessShowSummary = function(o){
	if(o.responseText !== undefined){
						 
		var actionResponseText = o.responseText;
		var responseArr = new Array();
		var summaryBodyResponse = "";
		var skuPrice = "";
		var errorMsgge = "";
		var skuStr = "";
		var enableAddButtons = "";
		
		if(actionResponseText != null && actionResponseText.indexOf(DATA_SEPARATOR) != -1) {
			responseArr = actionResponseText.split(DATA_SEPARATOR);
			summaryBodyResponse = responseArr[0];
			skuPrice = responseArr[1];
			errorMsgge = responseArr[2];
			skuStr = responseArr[3];
			enableAddButtons = responseArr[4];
		
			summaryDump = document.getElementById(summaryBody).innerHTML;
			document.getElementById(summaryBody).innerHTML = summaryBodyResponse;
//			document.getElementById(summaryBody).style.height = "200px";
			changeErrorMsg(errorMsgge);
			changeSkuPrice(skuPrice);
			handleCartButtons(enableAddButtons);
		}else{
			handleFailedCall();
		}
	}
};

var callbackShowSummary =
{
  success:handleSuccessShowSummary,
  failure:handleFailure
};

function showSummary(){
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callbackShowSummary, postDataSummary);
}

function validateComShop() {  
  var isValid = false;
  if(!addButtonsFlag){
  	alert(alertErrorMsg);
  	isValid = false;
  }else{
  	isValid = true;
  }
  return isValid;
}
