// JavaScript Document

//Thanks to www.webpasties.com for this source code.
function getHTTPObject() {

  var xmlhttp;

  /*@cc_on

  @if (@_jscript_version >= 5)

    try {

      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (e) {

      try {

        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

      } catch (E) {

        xmlhttp = false;

      }

    }

  @else

  xmlhttp = false;

  @end @*/

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {

    try {

      xmlhttp = new XMLHttpRequest();

    } catch (e) {

      xmlhttp = false;

    }

  }

  return xmlhttp;

}

var http = getHTTPObject(); // We create the HTTP Object
	function changeStatus(){ //test
		window.status= ( "Waiting response from server...");
	}
//_______________________________________________________________________


    function hideProgressBar(){

        progressBar.hideBar();
        //document.getElementById("year").style.cursor = "default";
        //document.getElementById("make").style.cursor = "default";
        //document.getElementById("model").style.cursor = "default";
        //document.getElementById("engine").style.cursor = "default";
        //document.getElementById("product").style.cursor = "default";
    }


	function handleHttpResponseMake()
	{
			if (http.readyState == 4)
			{

			    document.getElementById("year").style.cursor = "default";
			    document.body.style.cursor = "default";
				results = http.responseText;

				var cbo = document.getElementById("make");
				var lstMakes = results.split(",");
				setItemsCBO(cbo, lstMakes);
			}
			else{
			   document.getElementById("year").style.cursor = 'wait';
			   document.body.style.cursor = "wait";
			}
	}
     function updateMake()
	 {
	 	if(document.getElementById("partcolumntext")){
	  		document.getElementById("partcolumntext").value = "";
		}
		document.getElementById("search_results").innerHTML = "";
		
		var cbo3 = document.getElementById("make");
		removeAllItems(cbo3);

	  	// clear year and engine boxes
		var cbo2 = document.getElementById("engine");
		removeAllItems(cbo2);
	  
		var cbo = document.getElementById("model");
		removeAllItems(cbo);
		
		var cboProd = document.getElementById("product");
		cboProd.selectedIndex = -1;

		var yearID = document.getElementById("year").value;

        var sessionName =  document.getElementById("sessionName").value;
        http.open("GET", "../wclib/dispatch.php?function=getMakes&sessionName="+sessionName+"&yearID=" + yearID, true);
		http.onreadystatechange = handleHttpResponseMake;
		http.send(null);
      }



		function handleHttpResponseModel()
		{

			if (http.readyState == 4)
			{
			  	document.getElementById("make").style.cursor = "default";
			   	document.body.style.cursor = "default";
				results = http.responseText;

				var cbo = document.getElementById("model");
				var lstModels = results.split("|");

				setItemsCBO(cbo, lstModels);
			}
			else{
			   	document.getElementById("make").style.cursor = 'wait';
			  	document.body.style.cursor = "wait";
			}
		}
	  //Update the model list according to selected make.
	  function updateModel(isSearchByYear)
	  {
	  	if(document.getElementById("partcolumntext")){
	  			document.getElementById("partcolumntext").value = "";
		}
		document.getElementById("search_results").innerHTML = "";
		

	  	
	  	var cbo1 = document.getElementById("year");
		//removeAllItems(cbo1);
		var cbo2 = document.getElementById("engine");
		removeAllItems(cbo2);
	  
		var cbo = document.getElementById("model");
		removeAllItems(cbo);

		
		
		if(isSearchByYear == false)
		{
		      removeAllItems(cbo1);
		}
	
		
		var yearID = document.getElementById("year").value;
		var makeID = document.getElementById("make").value;


        var isCustom = -1;
        if(makeID.indexOf(";") > -1) //support for custom.
        {
           var tab = makeID.split(";");
           makeID = tab[0];
           isCustom = tab[1];
        }

        var sessionName =  document.getElementById("sessionName").value;
        var param = "function=getModels&sessionName="+sessionName+"&makeID=" + makeID + "&yearID=" + yearID + "&isCustom=" + isCustom;
        http.open("GET", "../wclib/dispatch.php?" + param, true);
		http.onreadystatechange = handleHttpResponseModel;
		http.send(null);
      }
	  
	  //_________________________________________________________________________________
	  
	  function handleHttpResponseYear()
		{
			if (http.readyState == 4)
			{
				document.getElementById("model").style.cursor = 'default';
				document.body.style.cursor = "default";
				results = http.responseText;

				var cbo = document.getElementById("year");

                //alert(results);
				var lstYears = results.split(",");
				setItemsCBO(cbo, lstYears);
			}
			else{
				document.getElementById("model").style.cursor = 'wait';
				document.body.style.cursor = "wait";
			}
		}
	  //Update the model list according to selected make.
	  function updateYear()
	  {
	  	//alert('');//test
		var cbo = document.getElementById("year");
		removeAllItems(cbo);
		var cbo2 = document.getElementById("engine");
		removeAllItems(cbo2);
		
		var makeID = document.getElementById("make").value;
		var modelID = document.getElementById("model").value;
		
		var isCustom = "";
        if(modelID.indexOf(";") > -1) //support for custom.
        {
           var tab = modelID.split(";");
           modelID = tab[0];
           isCustom = tab[1];
        }

        var makeCustomID =-1;
        if(makeID.indexOf(";") > -1) //support for custom.
        {
           var tab = makeID.split(";");
           makeID = tab[0];
           makeCustomID = tab[1];
        }


        var sessionName =  document.getElementById("sessionName").value;

		var param = "function=getYears&sessionName="+sessionName+"&makeID=" + makeID + "&modelID=" + modelID +
        "&makeCustomID="+makeCustomID+"&isCustom=" + isCustom;
		http.open("GET", "../wclib/dispatch.php?" + param, true);
		http.onreadystatechange = handleHttpResponseYear;
		http.send(null);

      }

	  
	  //_______________________________________________________________
	  function searchPart_engine_or_text(isSearchByYear)
	  {
	  		var txtVal= "";
			if(document.getElementById("partcolumntext")){
				txtVal=  document.getElementById("partcolumntext").value;
			}
			
	  		if(txtVal !="")
			{
				searchPartsAlt(isSearchByYear);
			}
			else
			{
	  			searchPartFromEng();
			}
	  }
	  
	  
	  function searchPartFromEng()
	  {
	  	if( document.getElementById("product").value != ""){
					searchPart();
		}
	  }
	  
	  function handleHttpResponseEngine()
	  {
			if (http.readyState == 4)
			{
				document.body.style.cursor = "default";
				results = http.responseText;
				if(results != "")
				{
					var cbo = document.getElementById("engine");
					var lstEngines = results.split(",");
					setItemsCBO(cbo, lstEngines);
				}
				if( document.getElementById("product").value != ""){
					searchPart();
				}
			}
			else{
					document.getElementById("year").style.cursor = 'wait';
					document.body.style.cursor = "wait";

				}
	  }

      //Update the engine list according to selected year.
	  function updateEngine()
	  {
		var cbo = document.getElementById("engine");
		removeAllItems(cbo);

		var makeID = document.getElementById("make").value;
		var modelID = document.getElementById("model").value;
		var yearID = document.getElementById("year").value;

        if(makeID.indexOf(";") > -1) //support for custom.
        {
           var tab = makeID.split(";");
           makeID = tab[0];
        }

        var isCustom = "";
        if(modelID.indexOf(";") > -1) //support for custom.
        {
           var tab = modelID.split(";");
           modelID = tab[0];
           isCustom = tab[1];
        }

        var sessionName =  document.getElementById("sessionName").value;
		var param = "function=getEngines&sessionName="+sessionName+"&makeID=" + makeID +
         "&modelID=" + modelID + "&yearID=" + yearID + "&isCustom=" + isCustom;

	    http.open("GET", "../wclib/dispatch.php?" + param, true);
		http.onreadystatechange = handleHttpResponseEngine;
		http.send(null);
     }
	  
	  //_________________________________________________________________
	  
	   function handleHttpResponseParts()
		{
			if (http.readyState == 4)
			{
				document.getElementById("product").style.cursor = 'default';
				document.body.style.cursor = 'default';
				results = http.responseText;
				if(results != "")
				{
					document.getElementById("search_results").innerHTML = results;
				}
			}
			else{
				document.getElementById("product").style.cursor = 'wait';
				document.body.style.cursor = 'wait';
			}
		}
	  function searchPart()
	  {
	 	var makeID = document.getElementById("make").value;
		var modelID = document.getElementById("model").value;
		var yearID = document.getElementById("year").value;
		var engineID = document.getElementById("engine").value;
		var productID = document.getElementById("product").value;
    	var categoryID = "";
		if(document.getElementById("category") != null) //not supported everywhere
        {
		  categoryID = document.getElementById("category").value;
		}
		var lang = "";
		if(document.getElementById("lang") != null)
        { //not supported everywhere
		  lang = document.getElementById("lang").value;
		}
		
		var makeCustomID = -1;
        if(makeID.indexOf(";") > -1) //support for custom.
        {
           var tab = makeID.split(";");
           makeID = tab[0];
           makeCustomID = tab[1];
        }

        var modelCustomID = -1;
        if(modelID.indexOf(";") > -1) //support for custom.
        {
           var tab = modelID.split(";");
           modelID = tab[0];
           modelCustomID = tab[1];
        }

        var sessionName =  document.getElementById("sessionName").value;
		var param = "sessionName="+sessionName +"&makeID=" + makeID + "&modelID=" + modelID + "&yearID=" + yearID +
         "&productID=" + productID + "&engineID=" + engineID + "&lang=" + lang  +"&categoryID=" + categoryID +
         "&makeCustomID=" + makeCustomID + "&modelCustomID=" + modelCustomID;

		http.open("GET", "getParts.php?" + param, true);
		http.onreadystatechange = handleHttpResponseParts; 
		http.send(null);	
	  }
	  
	  //isSearchByYear param is true when the order search is:
	  // Y-M-M  otherwise is false (M-M-Y)
	  //Depending of the search mode, we remove either the years or the makes.
	 function searchPartsAlt(isSearchByYear)
	 {
	 	// clear other list boxes
	  	var cbo1 = document.getElementById("year");
		var cbo3 = document.getElementById("make");

       	if(isSearchByYear == true)
        {
            cbo1.selectedIndex = -1;
            removeAllItems(cbo3);	
       	}
       	else
        {
            removeAllItems(cbo1);
            cbo3.selectedIndex = -1;
        }

	  	var cbo2 = document.getElementById("model");
		removeAllItems(cbo2);
		
		var cbo4 = document.getElementById("engine");
		removeAllItems(cbo4);
	 
	 	var productID = document.getElementById("product").value;
		if(productID =="")
		{
			productID = "0";
		}
		
	    var colField = "PartNumber";
		var colValue = document.getElementById("partcolumntext").value;
		colValue =  colValue.replace(/^\s+/g, '').replace(/\s+$/g, '');

	    var lang = "";
	    if(document.getElementById("lang") != null)
	    {
		  lang = document.getElementById("lang").value;
		}

		var searchType = "PN";
		if(document.getElementById("searchtype") != null)
		{
		  for (var i=0; i < document.searchtype.group1.length; i++)
   		   {
   			  if (document.searchtype.group1[i].checked)
      		    {
      			   searchType = document.searchtype.group1[i].value;
      		    }
   		   }
   		}

		if(colField != "" && colValue != "")
		{
            var sessionName =  document.getElementById("sessionName").value;

        	var param = "sessionName="+sessionName+"&productID=" + productID + "&field=" + colField + "&value=" +
             colValue + "&lang=" + lang +"&searchType=" + searchType;
  
			http.open("GET", "getParts.php?" + param, true);
			http.onreadystatechange = handleHttpResponseParts; 
			http.send(null);
		}

	 }


     ///////////////////////////////////////////////////////////////////////////
  	  /** in test only used by rich **/
      function searchPart_engine_or_text2(isSearchByYear)
	  {
	  		var txtVal= "";
			if(document.getElementById("partcolumntext")){
				txtVal=  document.getElementById("partcolumntext").value;
			}

	  		if(txtVal !="")
			{
				fetchCountAltSearch(isSearchByYear, true);
			}
			else
			{
			     searchPartFromEng();
			}
	 }
     /** in test only used by richporter **/
     function handleHttpResponsePartsRichporter()
	 {

            progressBar.hideBar();
			if (http.readyState == 4)
			{
			    document.body.style.cursor = 'default';

                results = http.responseText;

                if(results != ""){
                  progressBar.hideBar();
				  document.getElementById("search_results").innerHTML = results;
				}


            }
            else
            {
                 document.body.style.cursor = 'wait';
                 progressBar.showBar();
            }
	 }

      /** in test only used by richporter **/
     function handleHttpResponseCount()
	 {
			if (http.readyState == 4)
			{
			    progressBar.hideBar();

			   	document.body.style.cursor = "default";
                if(parseInt(http.responseText) < 500)
                {
                    if( parseInt(http.responseText)>300)
                    {
                        if (confirm(http.responseText + " results found.  Loading records may take time.  Do you wish to proceed?"))
                        {
                            fetchCountAltSearch(true, false);
                        }
                    }
                    else
                    {
                        fetchCountAltSearch(true, false);
                    }
                }
                else if(parseInt(http.responseText) > 500)
                {
                    alert("More than 500 results found.  Please refine your search.");
                }
                else{}
			}
			else{
			    document.body.style.cursor = "wait";
                progressBar.showBar();
			}
	 }
     /** in test only used by richporter **/
	 function fetchCountAltSearch(isSearchByYear, blnIsCount)
	 {
	  	var cbo1 = document.getElementById("year");
		var cbo3 = document.getElementById("make");

       	if(isSearchByYear == true){
            cbo1.selectedIndex = -1;
            removeAllItems(cbo3);
       	}
       	else{
            removeAllItems(cbo1);
            cbo3.selectedIndex = -1;
        }

	  	var cbo2 = document.getElementById("model");
		removeAllItems(cbo2);

		var cbo4 = document.getElementById("engine");
		removeAllItems(cbo4);

	 	var productID = document.getElementById("product").value;
		if(productID ==""){
			productID = "0";
		}

		var colField = "PartNumber";
		var colValue = document.getElementById("partcolumntext").value;
		colValue =  colValue.replace(/^\s+/g, '').replace(/\s+$/g, '');

	    var lang = "";
	    if(document.getElementById("lang") != null){
		  lang = document.getElementById("lang").value;
		}

		var searchType = "PN";
		if(document.getElementById("searchtype") != null)
		{
		  for (var i=0; i < document.searchtype.group1.length; i++)
   		   {
   			  if (document.searchtype.group1[i].checked)
      		    {
      			   searchType = document.searchtype.group1[i].value;
      		    }
   		   }
   		}

        var countConcat = "";
        if(blnIsCount == true)
        {
            countConcat= "&isCount=true";
        }

		if(colField != "" && colValue != "")
		{
            var sessionName =  document.getElementById("sessionName").value;
        	var param = "sessionName="+sessionName+"&productID=" + productID + "&field=" + colField + "&value=" +
             colValue + "&lang=" + lang +"&searchType=" + searchType +countConcat;

			http.open("GET", "getParts.php?" + param, true);
			if(searchType == "PN")
			{
				http.onreadystatechange = handleHttpResponsePartsRichporter;
			}
			else
			{

			    //if(blnIsCount == true)
                //{
                 //   alert("Here");
			       //	http.onreadystatechange = handleHttpResponseCount;
                //}
               // else
               // {
                    http.onreadystatechange = handleHttpResponsePartsRichporter;
               // }
			}

            http.send(null);
		}
	 }

     function searchforPN(pn)
     {
        document.getElementById("partcolumntext").value = pn;
        document.getElementById("searchtype").group1[0].checked = true;
        fetchCountAltSearch(true, false);
     }
     ///////////////////////////////////////////////////////////////////////////


	 function test(){
	 	var cbo = document.getElementById("make");
		removeAllItems(cbo);
	 }

	 function removeAllItems(cbo)
	 {
		for(var x=cbo.options.length-1; x>=0; x--)
		{
			cbo.options[x] = null;
		}
	 }

	 function showImage(pic1, pic2, partnumber)
	 {
	 	var url = "showPic.php?pic1=" + pic1 + "&pic2=" + pic2 + "&pn=" + partnumber;

	 	newwindow = window.open(url,'name','fullscreen=yes,menubar=yes,location=no,resizable=yes,scrollbars=no,status=no');
		if (window.focus) {newwindow.focus();}
	 }

	 function showImage(pic1, pic2, partnumber, pnNotes, inter)
	 {

	 	var url = "showPic.php?pic1=" + pic1 + "&pic2=" + pic2 + "&pn=" + partnumber + 
		 "&pnNotes=" + pnNotes + "&inter=" + inter;
		
	 	newwindow =
		  window.open(url,'name','fullscreen=yes,menubar=yes,location=no,resizable=yes,scrollbars=yes,status=no');
		if (window.focus) {newwindow.focus();}
	 }
	 
	   function showImagesPIES(concaPics, partnumber)
	 {
	 	var url = "showPic2.php?pics=" + concaPics + "&pn=" + partnumber;
		
	 	newwindow = window.open(url,'name','fullscreen=yes,menubar=yes,location=no,resizable=yes,scrollbars=yes,status=no');
		if (window.focus) {newwindow.focus();}
	 }
	 
	 function setItemsCBO(cbo, arr) //test
	{
		for(var i=0; i<arr.length; i++)
		{
			sva = arr[i].split(":");
			var op = new Option(sva[1], sva[0]);
			cbo.options[i] = op;
		}
	}
	
	function setSessionVars()
	{
	  var url = "session.php";
	  http.open("POST", url, true);				
	  http.send();
	}
	
	//Now: it is specific for ADN. They have their cutom categories.
	function handleHttpResponseProd() 
		{ 
			if (http.readyState == 4) 
			{ 
				document.getElementById("category").style.cursor = "default";
				document.body.style.cursor = "default";
				results = http.responseText; 
				var cbo = document.getElementById("product");
				var lstProds = results.split("|");
				setItemsCBO(cbo, lstProds);
			} 
			else{
				document.getElementById("category").style.cursor = 'wait';
				document.body.style.cursor = "wait";
			}
		}
	
	 //Update the products list according to selected Category.
	  function updateProd() 
	  {
	  	if(document.getElementById("partcolumntext")){
	  			document.getElementById("partcolumntext").value = "";
		}
		document.getElementById("search_results").innerHTML = "";
	  
		var cbo = document.getElementById("product");
		removeAllItems(cbo);
		

		var catID = document.getElementById("category").value;

        var sessionName =  document.getElementById("sessionName").value;

        var param = "sessionName="+sessionName+"&categoryID=" + catID;
		http.open("GET", "getProdsByCat.php?" + param, true); 
		http.onreadystatechange = handleHttpResponseProd; 
		http.send(null);
	
      }   
      
      function categoryClicked()
      {
      	updateProd();
      	//searchPart();
      }
	 
	 

