var waitHTML = '<div style="height:600px;"><img src="/_resources/common/images/icon_busy.gif">&nbsp;<b>loading...</b></div>';

var AjaxBackURL;
var IsPreviousPageAjax;

var UseAjaxSearch;
var SearchType;

function RunAjax(xmlHttpReq,element,url,waitHTML){
	if(xmlHttpReq) {
		
		if (xmlHttpReq.readyState != 0){
			xmlHttpReq.abort();
			element.innerHTML = waitHTML;
		}
		
		xmlHttpReq.open("GET", url, true);
		xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xmlHttpReq.onreadystatechange = function() {
			if(xmlHttpReq.readyState == 4 || xmlHttpReq.readyState=="complete") {
				element.innerHTML = xmlHttpReq.responseText;
				try{
					pageTracker._trackPageview(url);
				}
				catch(err){
					//alert(err);	
				}
				setCookie( 'AjaxBackURL', url.replace('GetSearchResults.asp',''), '', '/', '', '' );
				setCookie( 'IsPreviousPageAjax', 'true', '', '/', '', '' );
				//alert("IsCurrentPageAjax = true");
				//alert("IsPreviousPageAjax = " + IsPreviousPageAjax);
			}
		}
		xmlHttpReq.send("");
	}
	else{
		element.innerHTML = "xmlHttpReq undefined";
	}
}

function ChangeSearchPage(url){
    url = unescape(url);
	/*
	if(UseAjaxSearch){
		SearchUpdate(getElement("SearchForm"),'',url);
	}
	else{
		window.location = url;
    } 
    */
    window.location = url;
}

function ChangeSearchSupplier(url,mfgid){
	if(UseAjaxSearch){
		if(getElement("mfgid")){
			getElement("mfgid").value = mfgid;
		}
		SearchUpdate(getElement("SearchForm"),'',url);
	}
	else{
		window.location = url;
	}
}

function SearchUpdate(form,page,url,mfgid){
	
	setCookie( 'AjaxBackURL', '', '', '/', '', '' );
	
	if(page == ''){
		var temp = url;
		if(temp.indexOf('page=') > 0){
			temp = temp.substr(temp.indexOf('page=') + 5,temp.length - temp.indexOf('page='));
			if(temp.indexOf('&') > 0){
				temp = temp.substr(0,temp.length - temp.indexOf('&'));
			}
			if(temp > 0){
				page = temp;
			}
		}	
	}
	
	if(UseAjaxSearch == false){
		//alert("0");
		form.submit();
	}	
	else if(getElement("ResultsPane") && getCookie('search') == "advanced"){						
		//alert("1");
		AdvancedSearchUpdate(form,'','',page);
	}
	else if(getElement('Search_Basic_Link') && getElement('Search_Advanced_Link') && getElement("ResultsPane") && url != ''){
		if((getElement('Search_Basic_Link').display || getElement('Search_Basic_Link').display != 'none') && (getElement('Search_Advanced_Link').display || getElement('Search_Advanced_Link').display != 'none')){
			//alert("2a");
			BasicSearchUpdate(form,page);
		}
		else{
			//alert("2b");
			form.submit(); // submitting the form will refresh the page and remove the selected category from the left nav
		}
	}
	else{
		//alert("3");
		form.submit();		
	}
	
}

function BasicSearchUpdate(form,page){
	var url;
	if(SearchType == "supplier" && getElement("keyword").value == ''){
		url = "/Products-by-Supplier/GetSearchResults.asp?page="+page+"&rnd="+randomNum();
		if(getElement("mfgid")){
			url = url + "&mfgid="+getElement("mfgid").value
		}
	}
	else{
		url = "GetSearchResults.asp?keyword="+getElement("keyword").value+"&page="+page+"&rnd="+randomNum();
		if(getElement("mfgid")){
			url = url + "&mfgid="+getElement("mfgid").value
		}
		if(SearchType == "supplier"){
			url = "/Search-Suppliers/" + url + "&custom=search-suppliers";
		}
		else{
			url = "/Search/" + url;
		}
	}
	if(InDistributorDashboard){
		url = "/Distributors" + url;
	}
	RunAjax(xmlHttpReq,getElement("ResultsPane"),url,waitHTML);	
}

function AdvancedSearchUpdate(form,thisParentCategoryID,thisCategoryID,page){
	
	if(page > 0 == false){
		page = 1;	
	}
	
	var ParentCategoryID;
	var CategoryID;
	
	var elementName;
	var elementValue;
	
	var CatMod="CatMod="
	var ManMod="ManMod="
	var RegMod="RegMod="
	
	var tmpStr=""
	var tmpLen=0
	
	var modstring = "mod=none"
	
	for(i=0; i < form.elements.length; i++) {
		elementName = form.elements[i].name
		
		if (elementName.indexOf("Category_")==0){
			
			tmpStr = Right(elementName,(elementName.length-9));
			CategoryID = Right(tmpStr,(tmpStr.length-tmpStr.indexOf("_")-1));
			ParentCategoryID = tmpStr.replace("_"+CategoryID,"");
			
			if(ParentCategoryID == thisCategoryID){
				if(getElement(elementName)){
					form.elements[i].checked = getElement("Category_0_"+ParentCategoryID).checked;
				}
			}
			
			elementValue = form.elements[i].checked;
			
			if (elementValue == false){
				CatMod += CategoryID + ",";
				if(ParentCategoryID == thisParentCategoryID && ParentCategoryID != 0){
					// uncheck parent category
					getElement("Category_0_"+ParentCategoryID).checked = false;
					CatMod += ParentCategoryID + ",";
				}
			}
		}
	}
	
	//Clean off any extra commas
	if (Right(CatMod,1) == ",") {
		tmpLen=CatMod.length;
		tmpStr=Left(CatMod,tmpLen-1);
		CatMod=tmpStr;
	}
	
	modstring=CatMod
		
	var url;
	if(SearchType == "supplier" && getElement("keyword").value == ''){
		url = "/Products-by-Supplier/GetSearchResults.asp?page="+page+"&rnd="+randomNum()+"&"+modstring;
		if(getElement("mfgid")){
			url = url + "&mfgid="+getElement("mfgid").value
		}	
	}
	else{
		url = "GetSearchResults.asp?keyword="+getElement("keyword").value+"&page="+page+"&rnd="+randomNum()+"&"+modstring;
		if(getElement("mfgid")){
			url = url + "&mfgid="+getElement("mfgid").value
		}	
		if(SearchType == "supplier"){
			url = "/Search-Suppliers/" + url + "&custom=search-suppliers";
		}
		else{
			url = "/Search/" + url;
		}
	}
	if(InDistributorDashboard){
		url = "/Distributors" + url;
	}

	if((SearchType != "supplier" && getElement("keyword").value != '') || SearchType == "supplier"){
	
		if(getElement("ResultsPane")){	
			
			getElement("ResultsPane").innerHTML = waitHTML;
			
			RunAjax(xmlHttpReq,getElement("ResultsPane"),url,waitHTML);
		
		}
		else{
			
			window.location = url.replace("GetSearchResults.asp","");
			
		}
	}
}

function ShowSubcategories(CategoryID){
	toggleElement("Subcategories_"+CategoryID);
}

function initializeSearch(){
	AjaxBackURL = getCookie("AjaxBackURL") + '';
	if(AjaxBackURL == "null"){ 
		AjaxBackURL = '';
	}
	IsPreviousPageAjax = getCookie('IsPreviousPageAjax');
	setCookie( 'IsPreviousPageAjax', 'false', '', '/', '', '' );
	
	//alert("IsCurrentPageAjax = false");
	//alert("IsPreviousPageAjax = " + IsPreviousPageAjax);
	
	if(getQuerystring("catid") != ''){
		UseAjaxSearch = false;
	}else if(getElement('ResultsPane') && getQuerystring("bc") == '' && getElement('keyword').value != ''){
		UseAjaxSearch = true;
	}
	else if(window.location.pathname.toLowerCase().indexOf("/distributors/products-by-supplier/") >= 0 || (window.location.pathname.toLowerCase().indexOf("/distributors/search-suppliers/") >= 0 && getQuerystring("mfgid") == '' )){
		UseAjaxSearch = true;
	}
	else{
		UseAjaxSearch = false;
	}
	
	if(UseAjaxSearch){
		//setCookie( 'IsPreviousPageAjax', 'true', '', '/', '', '' );
		if(AjaxBackURL != '' && IsPreviousPageAjax == 'false'){			
			setCookie( 'AjaxBackURL', '', '', '/', '', '' );
			// redirect to non ajax version of last ajax page viewed
			//alert("redirect to non ajax version of last ajax page viewed");
			window.location = AjaxBackURL;
		}
	}
	else if(IsPreviousPageAjax == 'true'){
		setCookie( 'IsPreviousPageAjax', 'false', '', '/', '', '' );
		// force page to refresh when back button is hit
		//alert("force page to refresh when back button is hit");
		window.onbeforeunload = function(){}
	}
	
	if(window.location.pathname.toLowerCase() == "/" || window.location.pathname.toLowerCase() == "/default.asp"){
		// if on homepage then clear previous search
		setCookie( 'AjaxBackURL', '', '', '/', '', '' );
	}
	
	if(window.location.pathname.toLowerCase() == "/distributors/" || window.location.pathname.toLowerCase() == "/distributors/default.asp"){
		// if on distributor dashboard homepage then clear previous search
		setCookie( 'AjaxBackURL', '', '', '/', '', '' );
	}
	
	if(UseAjaxSearch){
		showElement('Search_Advanced_Link');
		if(getCookie("search") == "advanced"){						
			showAdvancedSearch();
		}
		else{
			showBasicSearch();
		}
	}
	else{
		hideElement('Search_Advanced');
		hideElement('Search_Basic_Link');
		if(getElement("ProductSearchTitle")){
			if(SearchType == "supplier"){
				getElement("ProductSearchTitle").innerHTML = "Supplier Search";
			}
			else{
				getElement("ProductSearchTitle").innerHTML = "Product Search";
			}
		}
	}
	
}
function showBasicSearch(){
	deleteCookie('search');
	setCookie( 'search', 'basic', '', '/', '', '' );
	hideElement('Search_Advanced');
	hideElement('Search_Basic_Link');
	showElement('Search_Advanced_Link');
	if (getElement("ProductSearchTitle")) {
	    if (SearchType == "supplier") {
	        getElement("ProductSearchTitle").innerHTML = "Supplier Search";
	    }
	    else {
	        getElement("ProductSearchTitle").innerHTML = "Product Search";
	    }
	}
}
function showAdvancedSearch(){
	deleteCookie('search');
	setCookie( 'search', 'advanced', '', '/', '', '' );
	showElement('Search_Advanced');
	hideElement('Search_Advanced_Link');
	showElement('Search_Basic_Link');
	if(SearchType == "supplier"){
		getElement("ProductSearchTitle").innerHTML = "Supplier Search";
	}
	else{
		getElement("ProductSearchTitle").innerHTML = "Advanced Search";
	}
	
	// display parent subcategory tree if at least one subcategory is checked...
	var form = getElement("SearchForm");
	var elementName;
	var elementValue;
	var CategoryID;
	var ParentCategoryID;
	
	for(i=0; i < form.elements.length; i++) {
		elementName = form.elements[i].name
		
		tmpStr = Right(elementName,(elementName.length-9));
		CategoryID = Right(tmpStr,(tmpStr.length-tmpStr.indexOf("_")-1));
		ParentCategoryID = tmpStr.replace("_"+CategoryID,"");
		
		if (elementName.indexOf("Category_")==0 && CategoryID > 0){
			
			elementValue = form.elements[i].checked;
			
			if (elementValue && getElement("Category_0_"+ParentCategoryID)){
				if(getElement("Category_0_"+ParentCategoryID).checked == false){
					showElement("Subcategories_"+ParentCategoryID);
				}
			}
		}
	}
}