/////************Callback object and functions ************//////////////rightNav
//if (oldQS=="#oldQS#"){alert(window.location);}
oldQS = checkQS(oldQS);
//alert(oldQS);

var divToFade;
var newContentFade;
var redirected=false;
var handleSuccess = function callBack(o) {
	//alert(o.responseText);
	//alert(o.argument[0]);
	var imagePane = document.getElementById('imagePane');
	imagePane.innerHTML = o.responseText;
}
var handleSuccessImagePane = function callBack(o) {
	var imagePane = document.getElementById('imagePane');
	imagePane.innerHTML = o.responseText;
}
var handleSuccessCopy = function callBack(o) {
	var copyBox = document.getElementById('copyBox');
	copyBox.innerHTML = o.responseText;
}
var handleSuccessInfoPane = function callBack(o) {
	var infoPane = document.getElementById('infoPane');
	infoPane.innerHTML = o.responseText;
}
var handleSuccessSidebar = function callBack(o) {
	//alert(o.argument[0]);
	if(o.argument[0]=='expandOptions'){
	  expand(o.argument[1],o.responseText);
	}
	else if (o.argument[0]=='collapseOptions'){
		collapse(o.argument[1],o.responseText);
	}
	else if (o.argument[0]=='newSidebar'){
		var sidebarContent = document.getElementById('rightNav');
		sidebarContent.innerHTML = o.responseText;
	}
}
var handleSuccessThumb = function callBack(o) {
	//alert(o.argument[0]);
	response = o.responseText;
	if(response.indexOf("doRedirect")>-1){
		redirect=response.substr(11,response.length);
		//alert(redirect);
		redirected=true;
		document.location.href=redirect;
	}
	else{
		var browser=navigator.userAgent.toLowerCase();
		if (browser.indexOf("safari")+1 || browser.indexOf("opera")+1) {
			var thumbContent = document.getElementById('thumbnails');
			thumbContent.innerHTML = response;
		}
		else{
			divToFade='thumbnails';
			newContentFade=response;
			changeDiv();
		}
		setTimeout(checkCompareItems,1250);//checkCompareItems() is in compare.js
	}
}
var handleSuccessPaging = function callBack(o) {
	var pagingOptionsTop = document.getElementById('pagingOptionsTop');
	pagingOptionsTop.innerHTML = o.responseText;
	var pagingOptionsBottom = document.getElementById('pagingOptionsBottom');
	pagingOptionsBottom.innerHTML=o.responseText;
}
var handleSuccessCount = function callBack(o) {
	//alert(o.argument[0]);
	response = o.responseText;
	document.getElementById("searchResultCount").innerHTML = response;
}
var handleSuccessQuickOrder = function callBack(o) {
	response = o.responseXML;
  sku = response.getElementsByTagName("sku")[0].childNodes[0].nodeValue;
  ohQty = response.getElementsByTagName("qty")[0].childNodes[0].nodeValue;
  price = response.getElementsByTagName("price")[0].childNodes[0].nodeValue;
  inv7 = sku.substr(0,7);
  change = price.substr(-3);
  if(change==".00"){price = price.substr(0,(price.length-3) );}
  if(document.getElementById(inv7+"qty")){document.getElementById(inv7+"qty").innerHTML = ohQty;}
  document.getElementById(inv7+"price").innerHTML = "$"+price;
}
var handleSuccessDetailXML = function callBack(o) {
	var imagePane = document.getElementById('productImage');
	var orderForm = document.getElementById('productOrderForm');
	var detailCopy = document.getElementById('detailCopy');
	var longDesc = document.getElementById('longDesc');
	var responseObj = o.responseXML;
  newImagePaneHtml = responseObj.getElementsByTagName('image')[0].firstChild.data;
  newOrderFormHtml = responseObj.getElementsByTagName('orderForm')[0].firstChild.data;
  newDetailCopyHtml = responseObj.getElementsByTagName('productCopy')[0].firstChild.data;
  imagePane.innerHTML = newImagePaneHtml;
  orderForm.innerHTML = newOrderFormHtml;
  detailCopy.innerHTML = newDetailCopyHtml;
  longDesc.innerHTML = responseObj.getElementsByTagName('longDesc')[0].firstChild.data;
}

var handleFailure = function callBack(o) {
	if (!redirected){
		//alert('failure');
	}
	return true;
}

var callback = { success:handleSuccess,
								 failure:handleFailure
	}
var callbackCopy = { success:handleSuccessCopy,
							 failure:handleFailure
}
var imagePaneCB = { success:handleSuccessImagePane,
							 failure:handleFailure
}
var infoPaneCB = { success:handleSuccessInfoPane,
							 failure:handleFailure
}
var thumbCallback={ success:handleSuccessThumb,
										failure:handleFailure
	}
var sideBarCallback={ success:handleSuccessSidebar,
										failure:handleFailure
	}
var pagingCallback={ success:handleSuccessPaging,
										failure:handleFailure
	}
var countCallback={ success:handleSuccessCount,
										failure:handleFailure
	}
var quickOrderCallback={ success:handleSuccessQuickOrder,
										failure:handleFailure
	}
var detailPageCallback={ success:handleSuccessDetailXML,
										failure:handleFailure
	}
var panelChangeCallback = {
      success : function(o) {
				var detailRequest = document.getElementById('detailRequest');
				detailRequest.innerHTML = o.responseText;
      },
      failure : function(o) {
				var detailRequest = document.getElementById('detailRequest');
        detailRequest.innerHTML ='<p>Ajax connection failed.</p><a onclick="YAHOO.example.container.testPanel.hide();"><img src="images/media/close_window_btn.gif"></a>';
      }
    }
//*********END callback information

//*********Detail Page ajax functions
function sendform(target,formName) {
   YAHOO.util.Connect.setForm(formName);
   YAHOO.util.Connect.asyncRequest('POST',target,callback);
}
function swatchClick(spec,item){
	var sendUrl = 'item='+item+'&spec='+spec;
	callback.argument=[item,spec,''];
	if(panelCheck==true){
		sendUrl += '&data=panel';
		YAHOO.util.Connect.asyncRequest('POST',base+'detailRequest.php',panelChangeCallback,sendUrl);
	}
	else{
		YAHOO.util.Connect.asyncRequest('POST',base+'detailRequest.php',detailPageCallback,sendUrl);
	}
	//alert(sendUrl);

	//YAHOO.util.Connect.asyncRequest('POST',base+'detailRequest.php',callback,sendUrl);
	//YAHOO.util.Connect.asyncRequest('POST',base+'detailRequest.php',imagePaneCB,sendUrl+'&data=imagePane');
	//YAHOO.util.Connect.asyncRequest('POST',base+'detailRequest.php',infoPaneCB,sendUrl+'&data=infoPane');

}
function tabClick(item,spec,displayPage){
	var sendUrl = 'item='+item+'&spec='+spec+'&tabPage='+displayPage;
	YAHOO.util.Connect.asyncRequest('POST',base+'detailRequest.php',callbackCopy,sendUrl);
}
//**********END detail page ajax

//**********Thumbnail page Ajax
var expandedList;
var oldListUrl;
var listToExpand;

function expand(list,newListStr){
	listToExpand=list;
	tmpList=document.getElementById("tmpDiv");
	tmpList.innerHTML=newListStr;
	xPos = tmpList.offsetHeight;
	var expandAnim = new YAHOO.util.Anim(list, { height: {to: xPos} }, 0.4 );
	expandAnim.onComplete.subscribe(doExpand);
	expandAnim.animate();
}
var doExpand = function(){
	oldList=document.getElementById(listToExpand);
	tmpList=document.getElementById("tmpDiv");
	oldList.innerHTML=tmpList.innerHTML;
	if(expandedList){
		hideExtraOptions(expandedList,oldListUrl);
	}
	expandedList=listToExpand;
}
function collapse(list,newListStr){
	if (list){
		tmpList=document.getElementById("tmpDiv");
		tmpList.innerHTML=newListStr;
		xPos = tmpList.offsetHeight;
		var collapseAnim = new YAHOO.util.Anim(list, { height: {to: xPos} }, 0.4 );
		collapseAnim.animate();
		oldList=document.getElementById(list);
		oldList.innerHTML=newListStr;
	}
	if (list==expandedList){
		expandedList="";
		oldListUrl="";
	}
}
function changeDiv(){
	//tmpDiv=document.getElementById(divToChange);
	var fadeOutAnim = new YAHOO.util.Anim(divToFade, { opacity: {to: 0.0} }, 0.5 );
	fadeOutAnim.onComplete.subscribe(doFadeIn);
	fadeOutAnim.animate();
}
var doFadeIn = function(){
	var thumbContent = document.getElementById(divToFade);
	thumbContent.innerHTML = newContentFade;
	var fadeInAnim = new YAHOO.util.Anim(divToFade, { opacity: {to: 1.0} }, 0.5 );
	fadeInAnim.animate();
}
function showAllOptions(divToChange,sendUrl, typeDesc){
	//typeDesc=divToChange.substring(0,divToChange.length-3);
	sideBarCallback.argument=['expandOptions',divToChange];
	oldListUrl=sendUrl;
	sendUrl+='&typeDesc='+typeDesc+'&data=oneRightNav&hide=false';
	YAHOO.util.Connect.asyncRequest('POST',base+'ajaxThumbHandler.php',sideBarCallback,sendUrl);
}
function hideExtraOptions(divToChange,sendUrl){
	typeDesc=divToChange.substring(0,divToChange.length-3);
	typeDesc = typeDesc.replace(/&/g,"%26");
	sideBarCallback.argument=['collapseOptions',divToChange];
	sendUrl+='&typeDesc='+typeDesc+'&data=oneRightNav&hide=true';
	YAHOO.util.Connect.asyncRequest('POST',base+'ajaxThumbHandler.php',sideBarCallback,sendUrl);
}
function doAddFilter(newFilter,sendUrl){
	sendUrl+=','+newFilter;
	var currentPR = YAHOO.util.History.getCurrentState( "pr" );
		if(currentPR!="" && currentPR!="none"){
				sendUrl=sendUrl+"&priceRange="+currentPR;
			}
	changeThumbPage('1');
	getThumbs(sendUrl+'&data=thumbs');
	getSidebar(sendUrl+'&data=fullRightNav');
	getPaging(sendUrl+'&data=paging');
}
function removeFilter(sendUrl){
	getThumbs(sendUrl+'&data=thumbs');
	getSidebar(sendUrl+'&data=fullRightNav');
	getPaging(sendUrl+'&data=paging');
}
function getThumbs(sendUrl){
	//alert(sendUrl);
	thumbCallback.argument=['newThumbs'];
	YAHOO.util.Connect.asyncRequest('POST',base+'ajaxThumbHandler.php',thumbCallback,sendUrl);
}
function getSidebar(sendUrl){
	expandedList="";
	sideBarCallback.argument=['newSidebar'];
	YAHOO.util.Connect.asyncRequest('POST',base+'ajaxThumbHandler.php',sideBarCallback,sendUrl);
}
function getPaging(sendUrl){
	YAHOO.util.Connect.asyncRequest('POST',base+'ajaxThumbHandler.php',pagingCallback,sendUrl);
}

function pad(charString, padChar,stringLength){
	returnString = "";
	charsToAdd = stringLength - charString.length;
	if(charsToAdd < 0){returnString = charString.substr(0,charString);}
	else{
		for(x=0;x<charsToAdd;x++){
			returnString+=''+padChar;
		}
		returnString+=''+charString;
	}
	return returnString;
}

function changePriceRange(priceRangeUrl){
	//alert(priceRangeUrl);
	getThumbs(priceRangeUrl+'&data=thumbs');
	getSidebar(priceRangeUrl+'&data=fullRightNav');
	getPaging(priceRangeUrl+'&data=paging');
	//return false;
}
function createPriceRange(high, low, sendUrl){
	priceRange=pad(high,'0',4).concat(pad(low,'0',4));
	changePriceRangeNew(priceRange);
}
function getThumbsPage (sendUrl){
	thumbCallback.argument=['newThumbs'];
	YAHOO.util.Connect.asyncRequest('POST',base+'ajaxThumbHandler.php',thumbCallback,sendUrl+'&data=thumbs');
	YAHOO.util.Connect.asyncRequest('POST',base+'ajaxThumbHandler.php',pagingCallback,sendUrl+'&data=paging');
}
function resort(sendUrl){
	//alert(sendUrl);
	getThumbs(sendUrl+"&data=thumbs");
	return true;
}

function calculateSearchResults(formObj,classId){
	sendUrl = "classId="+classId;
	defDesc = Array();
	count = 0;
	for(x=0;x<formObj.elements.length;x++){
		if(formObj.elements[x].type=="select-one" && formObj.elements[x].value!=""){
			defDesc[count]=formObj.elements[x].value;
			count++;
		}
	}
	sendUrl+="&defIds="+defDesc;
	sendUrl+="&data=resultCount";
	//alert(sendUrl);
	countCallback.argument=['resultCount'];
	YAHOO.util.Connect.asyncRequest('POST',base+'ajaxThumbHandler.php',countCallback,sendUrl);
}

function searchRugs(formObj){
	defDesc = Array();
	for(x=0;x<formObj.elements.length;x++){
		if(formObj.elements[x].type=="select-one" && formObj.elements[x].value!=""){
			defDesc[count]=formObj.elements[x].value;
			count++;
		}
	}
	if(defDesc.length > 0){
		document.location=base+"rugThumbs.php?classification=7&defDesc="+defDesc;
	}
}

//**********Quick Order page Ajax
function updateBaseIdDetails(sku){
  requestUrl = base+'quickOrderAjax.php';
  requestVars = 'sku='+sku;
  YAHOO.util.Connect.asyncRequest('POST',requestUrl,quickOrderCallback,requestVars);
}
//***************

//***** Browser History funtions
function registerBrowserHistory(){
	var pagingBookmarkedState = YAHOO.util.History.getBookmarkedState( "paging" );
	var initialPage = pagingBookmarkedState || "1";
	var filterBookmarkedState = YAHOO.util.History.getBookmarkedState( "filters" );
	var initialFilter = filterBookmarkedState || "none";
	var prBookmarkedState = YAHOO.util.History.getBookmarkedState( "pr" );
	var initialPR = prBookmarkedState || "none";


	YAHOO.util.History.register( "paging", initialPage, function( state ) {
    // Load the appropriate section:
    //loadSection( state );
		var sendUrl=oldQS;
		var currentFilter = YAHOO.util.History.getCurrentState( "filters" );
		if(currentFilter!=""){
			sendUrl=sendUrl+","+currentFilter;
		}
		var currentPR = YAHOO.util.History.getCurrentState( "pr" );
		if(currentPR!=""){
			sendUrl=sendUrl+"&priceRange="+currentPR;
		}
		getThumbsPage (sendUrl+'&page='+state);
		} );
	YAHOO.util.History.register( "filters", initialFilter, function( filter ) {
		if (filter != ""){
			doAddFilter (filter,oldQS);
		}
	} );
	YAHOO.util.History.register( "pr", initialPR, function( pr ) {
		var sendUrl=oldQS;
		var currentFilter = YAHOO.util.History.getCurrentState( "filters" );
		if(currentFilter!=""){
			sendUrl=sendUrl+","+currentFilter;
		}
	 if (pr != ""){
			changePriceRange (sendUrl+"&priceRange="+pr);
		}
	} );
}
function initializeBrowserHistory(){
	var currentPage = YAHOO.util.History.getCurrentState( "paging" );
	var currentFilter = YAHOO.util.History.getCurrentState( "filters" );
	var currentPR = YAHOO.util.History.getCurrentState( "pr" );
	var browser=navigator.userAgent.toLowerCase();

  if ( location.hash.substr(1).length > 0 ) {
      // If the section requested in the URL fragment is different from
      // the section loaded in index.php,
			var sendURL=oldQS;
			if(currentFilter!="" && currentFilter!="none"){
				sendURL=sendURL+","+currentFilter;
			}
			if(currentPage!="" && currentPage!="1"){
				sendURL=sendURL+"&page="+currentPage;
			}
			if(currentPR!="" && currentPR!="none"){
				sendURL=sendURL+"&priceRange="+currentPR;
			}
			if(currentPage != "1" || (currentFilter!="" && currentFilter!="none") || (currentPR!="" && currentPR!="none")){
				updateThumbs(sendURL);
			}
	}
}
function changeThumbPage(page){
	YAHOO.util.History.navigate( "paging", page );
}
function addFilter(newFilter,url,count){
  newFilter = newFilter.replace(/\\/g,"");
	if(count ==1){
		//this if is because if there is only one then we want it to do the detail page redirect,
		//but we do not want it to register with the browser history, becuase it messes up the back
		//button when on the detail page
		getThumbs(url+'&data=thumbs');
	}
	else{
		var currentFilter = YAHOO.util.History.getCurrentState( "filters" );
		if (currentFilter!="none"){
			//alert('oldFilter='+currentFilter);
			added=currentFilter+','+newFilter;
		}
		else{
			added=newFilter;
		}
		YAHOO.util.History.navigate( "filters", added );
	}
}
function removeFilterNew(rmFilter){
	//alert(rmFilter);
  rmFilter = rmFilter.replace(/\\/g,"");
	rmFilter = rmFilter.replace(/\+/g," ");
	var currentFilter = YAHOO.util.History.getCurrentState( "filters" );
	currentFilter = currentFilter.replace(/\+/g," ");
	//var pattern="/"+rmfilter+"/";
	var pattern= new RegExp(rmFilter,"i");
	//alert('pattern='+pattern);
	//alert('currentFilter='+currentFilter);
	currentFilter = currentFilter.replace(pattern,"");
	//alert('currentFilter='+currentFilter);
	var compattern= new RegExp(",,");
	currentFilter = currentFilter.replace(compattern,",");
	if (currentFilter == "" || currentFilter==","){
		currentFilter="none";
	}
	YAHOO.util.History.navigate( "filters", currentFilter );
}
function registerBrowserHistorySearchPage(){
	var pagingBookmarkedState = YAHOO.util.History.getBookmarkedState( "paging" );
	var initialPage = pagingBookmarkedState || "1";
	YAHOO.util.History.register( "paging", initialPage, function( state ) {
    // Load the appropriate section:
    //loadSection( state );
		getThumbsPage (oldQS+'&page='+state);
		} );
}
function initializeBrowserHistorySearchPage(){
	var currentPage = YAHOO.util.History.getCurrentState( "paging" );
  if ( location.hash.substr(1).length > 0 ) {
      // If the section requested in the URL fragment is different from
      // the section loaded in index.php, we have an unpleasant refresh
      // effect because we do an asynchronous XHR call. Instead of doing
      // a synchronous XHR call, we can fix this by erasing the initial
      // content of bd:
      if ( currentPage != "1" ){
         //YAHOO.util.Dom.get( "bd" ).innerHTML = "";
				 getThumbsPage (oldQS+'&page='+currentPage);
			}
	}
}
function updateThumbs(sendUrl){
	getThumbs(sendUrl+'&data=thumbs');
	getSidebar(sendUrl+'&data=fullRightNav');
	getPaging(sendUrl+'&data=paging');
}
function changePriceRangeNew(priceRange){
	YAHOO.util.History.navigate( "pr", priceRange );
}
function checkQS(qs){
	var defIds=YAHOO.util.History.getQueryStringParameter( "defIds",qs );
	var definition=YAHOO.util.History.getQueryStringParameter( "definition",qs );
	var defDesc=YAHOO.util.History.getQueryStringParameter( "defDesc",qs );
	if(!defIds && !definition && !defDesc){
		qs=qs+"&defIds=";
	}
	return qs;
}
function createWelcomePanel(popUpDiv,width,timeOutSeconds,cookieName){
	if(cookieName){ var panelCookie = new Cookie(document, cookieName,"","",".homedecorators.com");}
	popUp = new YAHOO.widget.Panel(popUpDiv, {
    close:true,
    draggable: false,
    zindex:4,
    modal: true,
    visible: false,
    width:width,
    fixedcenter:true} );
  popUp.render(document.body);
	if(!panelCookie.load()){
		popUp.show();
		if(cookieName){
			panelCookie.value=1;
			panelCookie.store();
		}
		if(timeOutSeconds>0){
			setTimeout("popUp.hide()",timeOutSeconds*1000);
		}
	}
}

var handleSuccessCartCount = function callBack(o) {
	//alert(o.argument[0]);
	response = o.responseText;
  //var cartCount = YAHOO.lang.JSON.parse(response);//TODO: Use this when YUI is upgraded to 2.7
  document.getElementById('cartCountSpan').innerHTML=response;
}
var cartCountCallback={ success:handleSuccessCartCount,
										failure:handleFailure
	}
function getCartCount(){
  var baseUrl = "https:" == document.location.protocol?secureBase:base;
	YAHOO.util.Connect.asyncRequest('GET',baseUrl+'cartCount.php',cartCountCallback,null);
}
