/**
 ** This js file should be used only by configurator.jsp
**/

// this is the indicator for saving kitbag.
var kitbagSaved='false';

// for quit //alert on leaving the configurator the variable holds the href of the 
// clicked link
var linkFromConfigurator;

// global kitbagId to keep the reference for the current kitbag id being workid upon
// share to friend from saved shoes have to set this kitbag id.
var kitBagId;

var gResponse="response";
var saveOVKey=undefined;

// global variable to indicate from where share to friend overlay came
var fromConfigurator;
// whenever the kitbag is changed, this attribute is set to true. 
// whenever a user quits without saving the kitbag. This indicator is used to //alert
// the user for saving the kitbag
var changes='false';
//Infosys changes for sharethis functionality : START
//Kitbag image to be passed to the sharethis
var imageContent;
//Configurator url to be passed to the sharethis
var kitbagIdForUrl;
var shareTitle;
var shareSummary;
var applicationContextPath;
var newWindow = null;
var applicationUrl;
var imagePath;
//Infosys changes for sharethis functionality : END
/**
 * checks whether the kitbag is saved. If not then prompts the user for saving the 
 * kitbag.
 * @return false if the kitbag has been saved, true otherwise.
**/
function checkKitbag(link){
     if(changes=='true'){
       linkFromConfigurator=link;
       wm_Panel.show('ov_prompt_quit');
       return false;
     }else{
       window.location.href = link;
       return true;
     }
     
}

function kitbagChanged(){
     changes='true';
}


/**
 * Populates the shoe size for the selected gender.
 * For unisex shoes the size options for the shoe has to be shown on 
 * runtime depending on the selection of the gender.
 * @param the size div id
 * @return true for success. 
**/
function populateUnisexSizes(sizes)
{
    clearSizeAndWidth("shoesize_left", "shoesize_right","Choose a size" )
  clearSizeAndWidth("left_foot_width", "right_foot_width","Choose a width" )
    var fieldArray=document.getElementById(sizes).innerHTML.split(",");
    var x;
    for(x=0;x< fieldArray.length-1;x++){

    var option1=document.createElement('option');
    var txt1 = document.createTextNode(fieldArray[x]);
       option1.setAttribute('value',fieldArray[x]);
       option1.appendChild(txt1);
        var option2=document.createElement('option');
    var txt2 = document.createTextNode(fieldArray[x]);
       option2.setAttribute('value',fieldArray[x]);
       option2.appendChild(txt2);
        document.getElementById("shoesize_left").appendChild(option1); 
         document.getElementById("shoesize_right").appendChild(option2); 
    }
   return true;
}


/**
 * Clears the shoe size div and width div.
 * For unisex shoes the size options for the shoe has to be shown on 
 * runtime depending on the selection of the gender.
 * @param the left shoe size div id
 * @param the right shoe size div id
 * @param the default message to be shown. 
 * This is for internationalization.
**/
function clearSizeAndWidth(leftId, rightId, message)
{
  document.getElementById(leftId).innerHTML=''; 
  document.getElementById(rightId).innerHTML='';
  var optionLeftSize=document.createElement('option');
  optionLeftSize.setAttribute('value','-');
  optionLeftSize.innerHTML=message + ' &nbsp; &nbsp;';
  var optionRightSize=document.createElement('option');
  optionRightSize.setAttribute('value','-');
  optionRightSize.innerHTML=message + ' &nbsp; &nbsp;';
  document.getElementById(leftId).appendChild(optionLeftSize); 
  document.getElementById(rightId).appendChild(optionRightSize); 
}

/**
 * on click of the left shoe size it automatically populates the right shoe
 * size, then it makes ajaz calls to populates the width divs.
**/
function selectRightShoeAndPopulateWidth(sizeSelectId,gender,divId,kitBagId){

 if(sizeSelectId=="shoesize_left"){
  document.getElementById("shoesize_right").selectedIndex=
  document.getElementById("shoesize_left").selectedIndex;
 }
  
  gender = getGenderForUnisex(gender);
   
  
    var size=document.getElementById(sizeSelectId).value;
    var shoeType= (sizeSelectId=="shoesize_left")?'left':'right';
    if(sizeSelectId=="shoesize_left") {
      var sel = document.getElementById("left_foot_width");
      var leftLastNo = sel.options[sel.selectedIndex].value;
      var queryString = constructQueryString('populateWidths','gender,size,shoeType,leftLastNbr,kitBagId', gender+','+size+',left,' + leftLastNo + ',' + kitBagId);
     new Ajax.Updater(divId, '/SaveConfigurator.action', {method:'post', parameters:queryString});
  }
  // right gets called always
  var sel = document.getElementById("right_foot_width");
  var rightLastNo = sel.options[sel.selectedIndex].value;
  var queryString = constructQueryString('populateWidths','gender,size,shoeType,rightLastNbr,kitBagId', gender+','+size+',right,' + rightLastNo + ',' + kitBagId);
  new Ajax.Updater('right_width_div', '/SaveConfigurator.action', {method:'post', parameters:queryString});
  
}

/**
 * on click of the left width , it makes the right width 
 * same as left width.
**/
function selectRightWidth(selectId){
 if(selectId=="left_foot_width"){
  document.getElementById("right_foot_width").selectedIndex=
  document.getElementById("left_foot_width").selectedIndex;
  }
  return true;
}

/**
 * on click of the color swatches , the selected color is shown
 * on the screen.
 * @param  color. The selected color.
 * @param  elementId .The div id which shows the selected color.
**/
function showSelectedColor(color, elementId)
{
 document.getElementById(elementId).value= color;
}

/**
 * Constructs a query string to pass in the url.
 * @param methodName In stripes method name also can be specified 
 *                     in the url
 * @param paramNames1 parameter names
 * @param paramValues1 parameter values
 * @return the query string for appending to the url.
**/
function constructQueryString(methodName,paramNames1,paramValues1){

   var paramArray1=paramNames1.split(',');
   var valueArray1=paramValues1.split(',');

     var x;
     var appendString1='';
     for(x=0;x<paramArray1.length;x++){

     appendString1=appendString1+'&'+paramArray1[x]+'=';

     if(valueArray1.length > x){
      appendString1=appendString1+valueArray1[x];

     }
        }

     //suffix a time stamp to the url so that browser interprets 
     //it as a new request everytime
     appendString1=appendString1 +'&time=' + new Date() +'';
           
         var params = appendString1; 
         
              params=methodName+'='+params;
              return params;             
              
}

/**
 * Initializes the listeners after ajax updater updates the div content.
**/
 //Apr 02, 2009  Infosys		Ticket# 1050232,1050207 ::Start
 function slideToPartAndChars(){  
    wm_Cfgr.init();
    Core.start(wm_Cfgr);
    wm_Panel.init();
    Core.start(wm_Panel);
    stateChange1();
    cursorNormal();
    
}

//Apr 02, 2009  Infosys		Ticket# 1050232,1050207 ::END




/**
 * Initializes the listeners after ajax updater updates the div content.
**/


/**
 * loads the partsAndCharacteristics.jsp depending on the size and width selected.
 * @param url the url containing the size and width information
 * @param methodName the action class method name 
 * which will return the response from the server.
 * @param divId the div id to be replaced by the content.
 * @param gender
**/
function loadModelAndCharacteristics(url, methodName, divId, gender){
  // first declare all the parameters and get associated values 	
  var params='leftSelectedSize,rightSelectedSize,leftSelectedWidth,rightSelectedWidth,gender';
  var values=document.getElementById("shoesize_left").value+','+document.getElementById("shoesize_right").value;
  values=values+','+document.getElementById("left_foot_width").value+','+document.getElementById("right_foot_width").value;
  values=values+','+gender;
  
  // now build the query string
  var queryString = constructQueryString(methodName,params,values);
 
 
  queryString = queryString + '&' + Form.serialize(document.partsAndCharacteristicsForm);
 
  
 // new Ajax.Updater(divId, url, {method:'post', parameters:queryString, onComplete:afterUpdate});
 
 // make the ajax call to validate the sizes supplied by the user
 //Apr 02, 2009  Infosys		Ticket# 1050232,1050207 ::Start
    var myAjax = new Ajax.Request("/SaveConfigurator.action", {method:'post', parameters:queryString,onComplete: validateSelectedSizes});    
 //Apr 02, 2009  Infosys		Ticket# 1050232,1050207 ::END
}


//Apr 02, 2009  Infosys		Ticket# 1050232,1050207 ::Start
 function validateSelectedSizes(response){
 
   	var returnXML = response.responseXML;
    
    if((returnXML==null)||(returnXML.getElementsByTagName("response").length==0)) {
    	var responseText=response.responseText;
    	document.getElementById('part_column_div').innerHTML=responseText;
    	slideToPartAndChars();
    } else if(returnXML.getElementsByTagName("status")[0].childNodes[0].nodeValue == 'Fail') {
    	
    	
    	//Apr 15, 2009  Infosys		Ticket#  ::Start
    	//make the divisions visible when user input false values
    	document.getElementById("foot_selector").style.visibility="visible";
    	document.getElementById("foot_selector_submit").style.visibility="visible";
    	//Apr 15, 2009  Infosys		Ticket#  ::End
    	
    	cursorNormal();
    	document.getElementById('ov_prompt_option_msg').innerHTML= returnXML.getElementsByTagName("msg")[0].childNodes[0].nodeValue;
    	wm_Panel.show('ov_prompt_option');
    }
    
    //Apr 15, 2009  Infosys               Ticket# 1067947 ::Start
        else if(returnXML.getElementsByTagName("status")[0].childNodes[0].nodeValue == 'SessionTimedOut') {
             window.location.href = "/Main.action";
        }
    //Apr 15, 2009  Infosys               Ticket# 1067947 ::End
    
}


//Apr 15, 2009  Infosys               Ticket# 1050232,1050207,1050276 ::Start

function validateSizeOnSave() {

	if (checkShoeSizes()) { 
  		document.getElementById("foot_selector").style.visibility="hidden";
  		document.getElementById("foot_selector_submit").style.visibility="hidden";
    	validateSizeOnSaveAjaxCall();
  	} else {
  		var shoeSizeLeft = document.getElementById("shoesize_left");
		var shoeSizeRight = document.getElementById("shoesize_right");
		var shoeWidthLeft = document.getElementById("left_foot_width");
		var shoeWidthRight = document.getElementById("right_foot_width");
  		if (shoeSizeLeft.selectedIndex==0 | shoeSizeRight.selectedIndex==0 ){
  			return;
		} else if(shoeWidthLeft.selectedIndex==0 | shoeWidthRight.selectedIndex==0) {
			return;
		} else {
			  validateSizeOnSaveAjaxCall();
		}
  	}
}


function validateSizeOnSaveAjaxCall() {
  var params = 'leftSelectedSize,rightSelectedSize,leftSelectedWidth,rightSelectedWidth,gender';
  var values = document.getElementById("shoesize_left").value+','+document.getElementById("shoesize_right").value;
  values     = values + ',' + document.getElementById("left_foot_width").value+','+document.getElementById("right_foot_width").value;

  
  

  
 if (document.getElementById("gender_male") != null) {
         gender = getGenderForUnisex("UNISEX");
     } else {
         gender = "WOMENS";
    }
  
  values	 = values + ',' + gender;
  var queryString = constructQueryString('saveKitbag', params,values);
 
 
 
 queryString = queryString + '&' + Form.serialize(document.partsAndCharacteristicsForm);
 //alert("queryString: " + queryString);
 // new Ajax.Updater(divId, url, {method:'post', parameters:queryString, onComplete:afterUpdate1});
 
 var myAjax = new Ajax.Request("/SaveConfigurator.action", {method:'post', parameters:queryString,onComplete: validateSizeOnSaveErrorOrOverlay});    
}

function validateSizeOnSaveErrorOrOverlay(response){
	var returnXML;
	
   	if(response == null) {
   		
    } else {
     returnXML = response.responseXML;
   
    }
     
    if((returnXML==null)||(returnXML.getElementsByTagName("response").length==0)) {
 
     	document.getElementById("foot_selector").style.visibility="visible";
     	document.getElementById("foot_selector_submit").style.visibility="visible";
   		showSaveOverlay();
    } else if(returnXML.getElementsByTagName("status")[0].childNodes[0].nodeValue == 'Fail') {
    	document.getElementById("foot_selector").style.visibility="visible";
    	cursorNormal();
    	var divNext=document.getElementById("foot_selector_submit");
    	divNext.style.visibility="visible";
    	document.getElementById('ov_prompt_option_msg').innerHTML= returnXML.getElementsByTagName("msg")[0].childNodes[0].nodeValue;
    	
    		wm_Panel.show('ov_prompt_option');
    } 
    
    //Apr 15, 2009  Infosys               Ticket# 1067947 ::Start
    else if(returnXML.getElementsByTagName("status")[0].childNodes[0].nodeValue == 'SessionTimedOut') {
         window.location.href = "/Main.action";
    }
    //Apr 15, 2009  Infosys               Ticket# 1067947 ::End
    
      
}
//Apr 15, 2009  Infosys		Ticket# ::end




/**
 * load the ov_form_share div with the content of the overlayFormShare.jsp
**/
function populateShareToFriend(inConfigurator){
//      wm_Panel.show("ov_form_share");
 if('true'==inConfigurator){
  fromConfigurator='true';
  //Infosys changes for sharethis functionality : START
  var myAjax = new Ajax.Request('/ConfiguratorSendToFriend.action?populateShareForm=',
         {method:'post',onComplete:populateAndShowShareToFriendDiv});
  //Infosys changes for sharethis functionality : END      
 }
 else{
  fromConfigurator='false';
  new Ajax.Updater('ov_form_share', '/SendToFriend.action?populateShareForm=&sendToFriendJspName=overlayFormShare.jsp',
         {method:'post',onComplete:showShareToFriendDiv});
 }       
}
//Infosys changes for sharethis functionality : START
//Kitbag is saved with anonymous user id before send to 
//friend overlay is displayed to the user, so that the 
//saved kitbag is available for the sharethis.
function populateAndShowShareToFriendDiv(request)
{

   var returnXML = request.responseXML;

   var overlay = returnXML.getElementsByTagName("overlay")[0].childNodes[0].nodeValue;
   imageContent = returnXML.getElementsByTagName("imageContent")[0].childNodes[0].nodeValue;
   kitbagIdForUrl = returnXML.getElementsByTagName("kitbagId")[0].childNodes[0].nodeValue; 
   new Ajax.Updater('ov_form_share', '/ConfiguratorSendToFriend.action?populateBlankShareForm=',
         {method:'post',onComplete:showShareToFriendDiv});

}
//Infosys changes for sharethis functionality : START

function showShareToFriendDiv(request)
{
wm_Panel.show("ov_form_share");
}
/**
 * load the ov_form_share div with the content of the overlayFormShare.jsp
 * @param gender
 * @param leftSize
 * @param rightSize
 * @param leftLastNo
 * @param rightLastNo
**/

function validateAndPopulateShareToFriend(gender,leftSize,rightSize,leftLastNo,rightLastNo, srcPage){
fromConfigurator='false';
var params='gender,leftSize,rightSize,leftLastNo,rightLastNo,kitBagId,sendToFriendJspName,srcPage';
var values=gender+','+leftSize+','+rightSize+','+leftLastNo+','+rightLastNo+','+kitBagId+','+'overlayFormShare.jsp,' + srcPage;
var queryString = constructQueryString('validateShareForm',params,values);
var myAjax = new Ajax.Request(
            "/SendToFriend.action?" + queryString,
                {onComplete: populateShareToFriendDiv
            });
}

            
function populateShareToFriendDiv(request){
var returnXML = request.responseXML;

    var overlay = returnXML.getElementsByTagName("overlay")[0].childNodes[0].nodeValue;
    var conflictMessageKey = returnXML.getElementsByTagName("message")[0].childNodes[0].nodeValue;
    if(overlay=="ov_prompt_option")
    {
      document.getElementById('ov_prompt_option_msg').innerHTML='';
      showMessageForChecks1(conflictMessageKey); //Jul 03,2009   Infosys        Ticket# 1134664::blank message overlay sendto friend 
      wm_Panel.show(overlay);
    } else {
      populateShareToFriend('false');
    }
    
}


function showMessageForChecks1(conflictMessageKey)     //Jul 03,2009   Infosys   Ticket# 1134664::blank message overlay sendto friend 
{
  var url = "/SendToFriend.action";     //Jul 03,2009   Infosys   Ticket# 1134664::blank message overlay send to friend
  var pars = "showMessageForChecks=&conflictMessageKey=" + conflictMessageKey + "&closeFunctions=" + 
  escape("window.location.reload(true);" );
    new Ajax.Updater(
   'ov_prompt_option_msg',
  url,
  {
  method: 'post',
  parameters: pars
  });
} 



/** 
 * Sends the send to friend overlay form data to the server.
**/
function sendToFriend(event){
  var form=document.getElementById('frmshare');
  var params = Form.serialize(form, {submit:event});
  params=event+'=&'+params;
  if(null != kitBagId && '' != kitBagId){
   params = params + '&kitBagId='+ kitBagId +'&time=' + new Date() +'';
  }
  if('true'==fromConfigurator){
  params=params+'&sendToFriendJspName=configuratorOverlayFormShare.jsp';
  var myAjax = new Ajax.Request(form.action, {method:'post', parameters:params,onComplete: hideOverlay});    
  }else{
  params=params+'&sendToFriendJspName=overlayFormShare.jsp';
  var myAjax = new Ajax.Request(form.action, {method:'post', parameters:params,onComplete: hideOverlay});    
  }
   
 }


/**
 *to hide the send to friend overlay
 */
function hideOverlay(request){


         //alert(request.responseText);
      var returnXML = request.responseXML;
      //alert(returnXML);
   
 
    
   if((returnXML==null)||(returnXML.getElementsByTagName("response").length==0)) {
    var responseText=request.responseText;
    document.getElementById("ov_form_share").innerHTML=responseText;
    // wm_Panel.show('ov_form_register');

    } else {
    var status = returnXML.getElementsByTagName("status")[0].childNodes[0].nodeValue;
if('success' == status)
{

 var msg = returnXML.getElementsByTagName("msg")[0].childNodes[0].nodeValue; 
   wm_Panel.hide('ov_form_share');
    document.getElementById('design_name').innerHTML=msg;
    wm_Panel.show('ov_confirm');
 }
 //Jul 03,2009   Infosys        Ticket# 1134664 :: Exception handling send to friend in case image missing:: start
 if('fail' == status)
 {
	    var msg = returnXML.getElementsByTagName("msg")[0].childNodes[0].nodeValue;
		wm_Panel.hide('ov_form_share');
		document.getElementById('design_name_fail').innerHTML=msg;
	    wm_Panel.show('ov_fail');
		 }
		 //Jul 03,2009   Infosys        Ticket# 1134664 :: Exception handling send to friend in case image missing:: End
 }
}


function isKitbagSaved(url){
var XMLHttpRequestObject=false;
if(window.XMLHttpRequest){
XMLHttpRequestObject=new XMLHttpRequest();
}else if(window.ActiveXObject){
XMLHttpRequestObject=new ActiveXObject("microsoft.XMLHTTP");
}

  var dataSource=url;
  
  if(XMLHttpRequestObject){
      XMLHttpRequestObject.open("GET",dataSource);
      XMLHttpRequestObject.onreadystatechange =
      function ()
                      {
             if(XMLHttpRequestObject.readyState == 4 &&
             XMLHttpRequestObject.status == 200){
             var responseText=XMLHttpRequestObject.responseText;
                       if(responseText=='true'){
                       kitbagSaved='true';
                       }
                           
             }

                       }
              XMLHttpRequestObject.send(null);    
            }
            
            return true;
}

/*
function invokeFromPartsAndChars(form, event, container) {
              var params = Form.serialize(form, {submit:event});
              params=event+'='+params;
               new Ajax.Request(form.action, {method:'post', parameters:params,onComplete:populateDiv});
}
*/

function populateDiv(request)
{
  var returnXML = request.responseXML;
    //alert(returnXML);  
    var overlay = returnXML.getElementsByTagName("overlay")[0].childNodes[0].nodeValue;
    //alert(overlay);
  document.getElementById('summary_div').innerHTML;
  if (document.getElementById("print_buttons").style.display != "none") 
  {
    //alert("In populateDiv");
      var designName = returnXML.getElementsByTagName("designName")[0].childNodes[0].nodeValue;
      //alert(designName);
    document.getElementById('design_name').innerHTML=designName;
    changes = 'false';
    wm_Panel.show('ov_confirm');
  }
}

function onFinish(gender){

     var params='leftSelectedSize,rightSelectedSize,leftSelectedWidth,rightSelectedWidth,gender';
     var values=document.getElementById("shoesize_left").value+','+document.getElementById("shoesize_right").value;
     values=values+','+document.getElementById("left_foot_width").value+','+document.getElementById("right_foot_width").value;
     var gender = getGenderForUnisex(gender);
     //alert('gender = '+gender);
     values=values+','+gender;
     var queryString = constructQueryString('onFinish',params,values);
     var param1 = Form.serialize(document.partsAndCharacteristicsForm);
  var designName=document.getElementById("designName").value;
   designName=replacePlus(escape(designName));
  params = queryString + '&' + param1 + '&designName=' +designName + '&time=' + new Date() +''; 
     new Ajax.Request('/SaveConfigurator.action', {method:'post', parameters:params, onComplete:populateSummaryDiv});
    //invoke(document.getElementById('partsAndCharacteristicsForm'),'onFinish', 'summary_div');
}  


function populateSummaryDiv(request){

   var returnXML = request.responseXML;
   
  
   
   if((returnXML==null)||(returnXML.getElementsByTagName("response").length==0)) {
            document.getElementById('summary_div').innerHTML=request.responseText;
            goToSummary('finish');
   } 
   
   //Apr 15, 2009  Infosys               Ticket# 1067947 ::Start
     else if(returnXML.getElementsByTagName("status")[0].childNodes[0].nodeValue == 'SessionTimedOut') {
              window.location.href = "/Main.action";
    }
   //Apr 15, 2009  Infosys               Ticket# 1067947 ::End
     
}



function showSaveOverlay()
{
  //alert("before prototype.js call");
    //fnCallAjax ("/AddToKitbag.action?isUserLoggedIn", showOverlay, false);
    var myAjax = new Ajax.Request(
            "/AddToKitbag.action?isUserLoggedIn",
                {onComplete: showOverlay
            });
     
} 
function showOverlay(request)
{
     
      var returnXML = request.responseXML;
    var overlay = returnXML.getElementsByTagName("overlay")[0].childNodes[0].nodeValue;
     
    //alert(overlay);
       if(overlay=="save_form_ov")
       {
      var designName=$F('designName');
            //wm_Panel.show('ov_form_save');
            openDesigNameSaveOverlay(designName);
       }
       else if(overlay=="register_form_ov")
       {
          //alert("going to show register overlay");
           updateKitbagBeforeSave();
            
       }
}
function validateDesignName(designName)
{
      //var designName = document.getElementById('dname').value;
      //alert("var design name: " + designName);
      if((designName.length == 0) || (designName == null))
      {
            //alert("The design name is null.");
            wm_Panel.show('ov_form_save_error');
      }
      else
      {
            
            //var url="/AddToKitbag.action";
                  //url=url+"?validateDesignName";
                  //url=url+ "&designName=" + designName;
            //alert("url is "+url);   
            //fnCallAjax (url, showOverwriteOrConfirmation, false);
            //alert("before prototype2.js call");
            designName=replacePlus(escape(designName));
            var params = "validateDesignName=&designName=" + designName;
      var myAjax = new Ajax.Request(
      "/AddToKitbag.action",
      {
        method: 'post',
        parameters: params,
        onComplete: showOverwriteOrConfirmation
      });
      }
}
function replacePlus (string) {
 for (var n = 0; n < string.length; n++) {
if(string.charCodeAt(n)==43)
{
  string = string.replace('+',"%2B");
}

 }  
  //alert(string+"plus replaced");
        return string;
  }

function showOverwriteOrConfirmation(request)
{
  
  //alert("in proper overlay");
    var returnXML = request.responseXML;
    //var returnXML1 = request.transport.responseXML;
    //var returnText = request.responseText;
    
    //alert(returnXML.xml);  
    //alert(returnXML);  
    //alert(returnText);  
    //alert(returnXML.getElementsByTagName("overlay")[0].nodeValue);
    //alert(returnXML.getElementsByTagName("overlay")[0].childNodes[0]);
    var overlay = returnXML.getElementsByTagName("overlay")[0].childNodes[0].nodeValue;
    //alert(overlay);
    //May 28, 2009  Infosys	Ticket# 1101197:: SQL exception Fix : Start  
    if(overlay=="retry")
    	    {
    		   var message=returnXML.getElementsByTagName("msg")[0].childNodes[0].nodeValue;
    		    wm_Panel.show('ov_retry');
		 }
	//May 28, 2009  Infosys	Ticket# 1101197:: SQL exception Fix : End 
    if(overlay=="name_error_ov")
  {
    wm_Panel.show('ov_error_name');
  }
    else if(overlay=="no_overlay")
    {
      setInSessionAndSave();
  }         
    else if(overlay=="showConfirmation")
    {
    document.getElementById("ov_form_save_body").innerHTML=''; 
      //alert("In confirmation overlay");
      var designName = returnXML.getElementsByTagName("designName")[0].childNodes[0].nodeValue;
      //alert(designName);
    document.getElementById('design_name').innerHTML=designName;
    // to reset the indicator used to show the quit //alert
    changes = 'false';
    wm_Panel.show('ov_confirm');
    }
    else if(overlay=="ShowError")
  {
    wm_Panel.show('ov_form_save_error');
  }  
  //for refreshing header    
     new Ajax.Updater(
   'navbar',
  "/AddToKitbag.action?refreshConfigHeader",
  {
  method: 'get',
  parameters:""
  });      
}

function setInSessionAndSave()
{
   // check if this is Save from Size and Intro or Part and Char
    if (document.getElementById("print_buttons").style.display == "none")
    {
      // check if this IS ON SUMMARY PAGE
    //alert("Save To My Account is not enabled");
    //var url1 ="/AddToKitbag.action";
    //url1=url1+"?saveToUserKitbag";
    //alert("url is "+url1);
    //fnCallAjax (url1, showOverwriteOrConfirmation, false);
    var params = submitKitbagDetails('saveToUserKitbag');
    var myAjax = new Ajax.Request(
            "/SaveConfigurator.action",
            {
                method: 'post',
                parameters: params,
                onComplete: showOverwriteOrConfirmation
            });
    
      //alert("saving..." + document.configuratorForm);
      //invoke(document.configuratorForm,'onSaveKitBag', 'dummy');
  }
    else
    {
      if (document.getElementById("finishbutton").style.visibility != "visible") 
        {
          //alert (" IN SIZE");
         
      var params = submitKitbagDetails('saveKitBagSize');
      var myAjax = new Ajax.Request(
      "/SaveConfigurator.action",
      {
        method: 'post',
        parameters: params,
        onComplete: showOverwriteOrConfirmation
      });     
    } 
    else 
    {
      //alert ("IN PARTS and CHARS");
      var params = submitKitbagDetails('saveKitbagParts');
      var form = document.partsAndCharacteristicsForm;
      new Ajax.Request(form.action, {method:'post', parameters:params,onComplete:populateDiv});
      //invokeFromPartsAndChars(document.partsAndCharacteristicsForm,'saveKitbagParts','dummy');
    }   
    }
}

function submitKitbagDetails(methodName){

 var gender;
          
          if (document.getElementById('gender_male') != null)
          {
            gender = getGenderForUnisex('UNISEX');
          } else 
          {
            gender = "";
          }
     var params='leftSelectedSize,rightSelectedSize,leftSelectedWidth,rightSelectedWidth,gender';
     var values=document.getElementById("shoesize_left").value+','+document.getElementById("shoesize_right").value;
     values=values+','+document.getElementById("left_foot_width").value+','+document.getElementById("right_foot_width").value;

     values=values+','+gender;
     var queryString = constructQueryString(methodName,params,values);
     var param1 = Form.serialize(document.partsAndCharacteristicsForm);
     params = queryString + '&' + param1 + '&time=' + new Date() +''; 
     return params;
}

 function showOverlayforSave(showSave)
   {
   //alert(showSave+"showSaveOverlay");
   //alert(saveOVKey);
   if((saveOVKey ==undefined)&&(showSave!=undefined)&&(showSave.match('true')))
   {
   //alert("inside");
    saveOVKey='true';
   showSaveOverlay();
 }
  }
function updateKitbagBeforeSave(){

  var gender;
      
          if (document.getElementById('gender_male') != null)
          {
           gender = getGenderForUnisex('UNISEX');
          } else 
          {
            gender = "WOMENS";
          }
          
     var params='leftSelectedSize,rightSelectedSize,leftSelectedWidth,rightSelectedWidth,gender,kitBagId';//Apr 15, 2009  Infosys	Ticket# 1067912 
     var values=document.getElementById("shoesize_left").value+','+document.getElementById("shoesize_right").value;
     values=values+','+document.getElementById("left_foot_width").value+','+document.getElementById("right_foot_width").value;
     values=values+','+gender;
     values=values+','+document.getElementById("kitBagId").value;//Apr 15, 2009  Infosys	Ticket# 1067912 
     var queryString = constructQueryString('saveKitbag',params,values);
     
     //alert("queryString: " + queryString);
     //queryString = queryString + '&' + Form.serialize(document.partsAndCharacteristicsForm);
    // alert("queryString: " + queryString);
        var form=document.partsAndCharacteristicsForm;
        
        form.action="/SaveConfigurator.action"+"?"+queryString;
    form.submit();

}


function setExclusionMessage(exclusionString, selectedValue)
{
  var url = "/ConflictAlert.action";
  //alert('Exclusion String1 : ' + exclusionString + '     Selected Values : ' + selectedValue);
  var modelId = document.getElementById('modelId').value;
  //alert('ModelId : ' + modelId);
  var pars = 'setExclusionMessage=&exclusionString=' + exclusionString + '&selectedValue=' + selectedValue + '&modelId=' + modelId;
  var ExclusionMessageAjax = new Ajax.Updater(
   'ov_prompt_option_msg',
  url,
  {
  method: 'post',
  parameters: pars
  
  });

}


function populateInfoOverlay(eventSrc)
{
  var url = "/ConflictAlert.action";
  var modelId = document.getElementById('modelId').value;
 
  var pars = 'setInfoMessage=&infoIconId=' + eventSrc.id + '&modelId=' + modelId ;
  var InfoMessageAjax = new Ajax.Updater(
   'ov_info_msg',
  url,
  {
  method: 'post',
  parameters: pars
  
  });
  
}
    
    
    
    
function showFittingTips(){
var modelId = document.getElementById('modelId').value;
document.getElementById("ov_info_msg").innerHTML=''; 
wm_Panel.show('ov_generic');  
var url = "/ConflictAlert.action";
var pars = 'showFittingTips=&modelId=' + modelId;;
var FittingTipsAjax = new Ajax.Updater(
   'ov_info_msg',
  url,
  {
  method: 'post',
  parameters: pars
  
  });

}         
          
  
/**
 * onclick of next , it checks for size and width. If size and/or width 
 * is not selected , then prompts an overlay to inform for selecting size 
 * and/or width. If size and width are selected, then it makes an ajax call to 
 * get the partAndCharacteristic jsp and populates the partColumnDiv.
 * @param url the url containing the query string to be passed to the server.
 * @param  event the method name of the action class to be called.
 * @param partColumnDiv the div id of the div whoose inner html has to be 
 * replaced with the server response 
**/
function checkSizeAndCallAjax(url, event, partColumnDiv, gender) {
  if (checkShoeSizes()) { 
  	// making the divisions invisible so that the user does not have a second opportunity
  	// to change the gender after pressing the Next button
  //Apr 15, 2009  Infosys		Ticket#  ::Start
  	document.getElementById("foot_selector_submit").style.visibility="hidden";
  	document.getElementById("foot_selector").style.visibility="hidden";
  	//Apr 15, 2009  Infosys		Ticket#  ::End
  	cursorHourglass();
  	gender = getGenderForUnisex(gender);
  	loadModelAndCharacteristics(url, event, partColumnDiv, gender);
  }	else {
 
  	return false;
  }
}      

/**
 * @return the selected gender.
**/
function getGenderForUnisex(gender)
{
  if(gender == 'UNISEX')
     {
       if(document.getElementById("gender_male").checked == true)
         return 'MENS';
       else
         return 'WOMENS';
    }
    return gender;
}


function checkBlackWords(textId)
{

var isBad = false;
  // trim to remove leading and ending spaces
  var trimmedText = document.getElementById(textId).value.replace(/^\s+|\s+$/g, '');

  // To test each word individually then the text
  // needs to be split into individual words and looped through

  var enteredText = document.getElementById(textId).value;
  var words = enteredText.split(/\s/g);
  for ( i=0; i<words.length; i++) {
    if (patternWithoutSpaces.test(words[i])){
      isBad = true;
      break;
    }
  }

  if(patternWithSpaces.test(enteredText)) {
    isBad = true;
  }

  if(patternWithoutSpaces.test(enteredText.replace(/\s+/g, ''))) {
    isBad = true;
  }

  return isBad;
}       

function showLoginAgain()
{
  //alert("Showing designName again");
  invokeFromForgotPassword(document.forgotPwdForm,'getPassword','dummy');
}
function invokeFromForgotPassword(form, event, container)
{
   var params = Form.serialize(form, {submit:event});
     params=event+'&'+params;
     new Ajax.Request(form.action, {method:'post', parameters:params,onComplete:showSaveOverlay});  
}
//function populateLoginDiv()
//{
  //wm_Panel.show('ov_form_register');
//}

function checkLogIn()
{
  //alert("After logging in.");
  invokeFromLogIn(document.frmLogin,'getAlreadyLogged','dummy');
}
function invokeFromLogIn(form, event, container)
{
  var params = Form.serialize(form, {submit:event});
    params=event+'&'+params;
    new Ajax.Request(form.action, {method:'post', parameters:params,onComplete:showOverwriteOrConfirmation}); 
}

function doRegisteration()
{
  //alert("After registering in.");
  invokeFromRegister(document.regForm,'registerUser','dummy');
}
function invokeFromRegister(form, event, container)
{
  var params = Form.serialize(form, {submit:event});
    params=event+'&'+params;
    new Ajax.Request(form.action, {method:'post', parameters:params,onComplete:showOverwriteOrConfirmation});
}

function setFocus()
{
  if(textID != null)
  document.getElementById(textID).focus();
  textID = null;
}


function getLoginRegisterOverlay() 
{
  var url = "/AddToKitbag.action";
  var pars = "populateLoginOverlay=&selectedDesignName=";

  //alert(pars+"params in getLoginRegisterOverlay");
    new Ajax.Updater(
   'ov_form_register_body',
  url,
  {
  method: 'post',
  parameters: pars,
  onSuccess : wm_Panel.show('ov_form_register')
  });
       
} 

function showFitFromSummary(gender)
{
//Apr 15, 2009  Infosys               Ticket# 1050232,1050207 ::Start
  var divNext=document.getElementById("foot_selector");
  divNext.style.visibility="visible";
//Apr 15, 2009  Infosys               Ticket# 1050232,1050207 ::End
  var params='leftSelectedSize,rightSelectedSize,leftSelectedWidth,rightSelectedWidth,gender';
  var values=document.getElementById("shoesize_left").value+','+document.getElementById("shoesize_right").value;
  values=values+','+document.getElementById("left_foot_width").value+','+document.getElementById("right_foot_width").value;
  gender = getGenderForUnisex(gender);
  values=values+','+gender;
  var queryString = constructQueryString('populateSizes',params,values);
  queryString = queryString + '&' + Form.serialize(document.partsAndCharacteristicsForm);
  //alert('query string ='+queryString);
    var myAjax = new Ajax.Updater(
            'foot_selector',
            "/SaveConfigurator.action?",
                {
                method: 'post',
                parameters: queryString,
                onComplete: editFitFromSummary
            });
  //swing('home');
}

function openDesigNameSaveOverlay(designName) 
{  
  var url = "/AddToKitbag.action";
  //alert(url);
  var pars = "populateDesignNameOverlay=";
  
    if(designName!=undefined)
    {
   
    pars=pars+"&selectedDesignName="+replacePlus(escape(designName));
    }
  new Ajax.Request(
  url,
  {
  method: 'post',
  parameters: pars,
  onComplete : showDesign
  });      
} 

function showDesign(request)
{
document.getElementById("ov_form_save_body").innerHTML=request.responseText;
wm_Panel.show('ov_form_save');

}
function saveDesignName(form, event)
{
//alert("in login and save");
  var url = "/AddToKitbag.action";
   var params = Form.serialize(form, {submit:event});
   // BEGIN COREMETRICS SUPPORT
   		cmconversionTagForSave();
	// END COREMETRICS SUPPORT
     params=event+'&'+params;
     //alert(url+params+"::::request going");
     new Ajax.Request(
  url,
  {
  method: 'post',
  parameters:params,
  onSuccess : afterSavingDesign 
  })
}
 // BEGIN COREMETRICS SUPPORT
   	function cmconversionTagForSave(){
   	var eventCatId="USeCom/"+document.getElementById('kitBagIdForCoremetrics').value;
   	var adidas=new Adidas();
   	adidas.Analytics.prePendCountryCodeToCategoryId(true);
	//cmCreateConversionEventTag("Saved",2,eventCatId,null);
	adidas.Analytics.tagConversionEvent("Customized",2,eventCatId,null, null);
	}
	// END COREMETRICS SUPPORT
function afterSavingDesign(request)
{
      
       //alert(request.responseText);
      var returnXML = request.responseXML;
     // alert(returnXML);
   
 
    
   if((returnXML==null)||(returnXML.getElementsByTagName(gResponse).length==0)) {
      document.getElementById("ov_form_save_body").innerHTML=request.responseText;
   //  wm_Panel.show('ov_form_register');

    } else {
       
    var overlay = returnXML.getElementsByTagName("overlay")[0].childNodes[0].nodeValue;
   // alert(overlay);
    wm_Panel.hide('ov_form_save');
     // document.getElementById("ov_form_save_body").innerHTML=''; 
     //  alert("no error: new overlay");
      showOverwriteOrConfirmation(request);
      
      
       }
}


function disableEnterKey(e)
{    
    if ( e.keyCode == 13 )
         return false;
     else
         return true;
}

function keepSessionAlive()
{
        
          var params = "keepSessionAlive=&";
                  var myAjax = new Ajax.Request(
                  "/RefreshConfigurator.action",
                  {
                    method: 'post',
                    parameters: params,
                    onComplete: function() {
                    }
        });
}

function printSummary(){
 var url = '/RefreshConfigurator.action?printSummary=' + '&time=' + new Date() +'';
 window.open(url);
}

function editSpecifyFromSummary(sectionAndPartNum,blazePosition){
editFromSummary(sectionAndPartNum);
swing(blazePosition);
}

function doSubmitStartAgain(form, event) 
{
     var evHolder = document.getElementById("startAgainEvent");
     evHolder.name = event;
     form.submit();
}

function cursorHourglass(){
    document.body.style.cursor = "wait";
}

function cursorNormal(){
    document.body.style.cursor = "default";
}

function hideAddToCart()
{
  var divSummaryFooter=document.getElementById("summary_footer_buttons");
  divSummaryFooter.style.visibility="hidden";
  cursorHourglass();
  
}

function populateSizeDrpDn()
{
  if(document.getElementsByName('gender'))
  {    
    if(document.getElementById('shoesize_left').value == '-')
    {
      if(document.getElementsByName('gender')[0].checked)
      {
        populateUnisexSizes('maleLeftSizes');
      }
      else if(document.getElementsByName('gender')[1].checked)
      {
        populateUnisexSizes('femaleLeftSizes');
      }
    }
  }
}

function loadConfigShareThisPopup(){

closeWin();
applicationUrl = applicationContextPath + '/CustomizeShoe.action?displayConfigSummary=&kitBagId=' + kitbagIdForUrl;
imagePath = applicationContextPath + imageContent;
var name = 'newWindow';
var url='/shareThisPopup.html';

	var width=350; var height=400;
	var top = (screen.availHeight - height)/2;
	var left = (screen.availwidth - width)/2;
	var sFeatures = 'width='+width+',height='+height+',top='+top+',status=yes,resizable=no,toolbar=no,scrollbars=no,left='+left;
	var dataWin = window.open(url,name,sFeatures);
	dataWin.focus();

}

function closeWin(){
	if (newWindow != null){
		if(!newWindow.closed)
			newWindow.close();
	}
}


function loadShareThisPopup(content, url){

closeWin();
applicationUrl = url;
imagePath = content;
var name = 'newWindow';
var url='/shareThisPopup.html';

	var width=350; var height=400;
	var top = (screen.availHeight - height)/2;
	var left = (screen.availwidth - width)/2;
	var sFeatures = 'width='+width+',height='+height+',top='+top+',status=yes,resizable=no,toolbar=no,scrollbars=no,left='+left;
	var dataWin = window.open(url,name,sFeatures);
	dataWin.focus();

}
