var activeRequest = '';

function xmlhttpPost(strURL , form) {
    var xmlHttpReq = false;
    var self = this;
    
    //var form     = document.forms['parts'];
    
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    form.fieldName.value = activeRequest;
    
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = 
    function (){
        if (self.xmlHttpReq.readyState == 4) {
        	if (self.xmlHttpReq.status == 200) {
        		
        		//alert (self.xmlHttpReq.responseText);
        		
        		
        		//alert (response.getElementsByTagName('imageName')[0].firstChild.data);
        		//alert(activeRequest);
        		if ( activeRequest == 'categories' || activeRequest == 'parttypes' || activeRequest == 'brands' || activeRequest == 'models' ){
        			response  = self.xmlHttpReq.responseXML.documentElement;
        			if ( typeof (response.getElementsByTagName('selectValue')[0]) != "undefined"){
        				updatepage(response.getElementsByTagName('selectValue')[0].firstChild.data , response.getElementsByTagName('imageName')[0].firstChild.data);
        			}
        			
        		}
        			 
        		if (activeRequest == 'itemlist')
        		{
        			displayItems(self.xmlHttpReq.responseText);
        		}
        		if (activeRequest == 'itemdetail')
        		{
        			displayItemDetail(self.xmlHttpReq.responseText);
        		}
        		if (activeRequest == "addtocart")
        		{
        			alert('add to cart finished.');
        		}
        		
            	activeRequest = '';
        	} else {
            		//alert("There was a problem in the returned data:\n");
        		activeRequest = '';
        	}

        }
    };
    
    self.xmlHttpReq.send(getquerystring(form));
    
}


function getquerystring(form) {
	var qstr = "";
    if (activeRequest == 'addtocart')
    {
    	qstr = 'ITMSUF=' + escape(form.ITMSUF.value);
    	qstr = qstr + '&uom=' + escape(form.uom.value);
    	qstr = qstr + '&IID=' + escape(form.IID.value);
    	qstr = qstr + '&actn=' + escape(form.actn.value);
    }
    else
    {
	    var word = form.fieldName.value;
	    qstr = 'fieldName=' + escape(word);  // NOTE: no '?' before querystring
	    qstr = qstr + '&categoryId=' + escape(form.categories.value);
	    qstr = qstr + '&parttypeId=' + escape(form.parttypes.value);
	    qstr = qstr + '&brandId=' + escape(form.brands.value);
	    qstr = qstr + '&modelId=' + escape(form.models.value);
	    qstr = qstr + '&itemId=' + escape(form.itemId.value);
	    qstr = qstr + '&partnumbertxt=' + escape(form.partnumbertxt.value);
    }
    //alert (qstr);
    return qstr;
}



function updatepage(str , img){
	var form     = document.forms['parts'];
	
	document.getElementById("displayimg").src = img;
	if (activeRequest == 'categories')
	{
		form.categories.disabled = false;
		form.parttypes.selectedIndex = 0;
		form.brands.selectedIndex = 0;
		form.models.selectedIndex = 0;
    	document.getElementById("categorydiv").innerHTML = str;
	}
	else if (activeRequest == 'parttypes')
	{
		form.categories.disabled = false;
		form.parttypes.disabled = false;
		form.brands.selectedIndex = 0;
		form.models.selectedIndex = 0;
		document.getElementById("parttypediv").innerHTML = str;
	}
	else if (activeRequest == 'brands')
	{
		form.categories.disabled = false;
		form.parttypes.disabled = false;
		form.brands.disabled = false;
		form.models.selectedIndex = 0;
		//form.searchbutton.disabled = false;
		document.getElementById("branddiv").innerHTML = str;
	}
	else if (activeRequest == 'models')
	{
		form.categories.disabled = false;
		form.parttypes.disabled = false;
		form.brands.disabled = false;
		form.models.disabled = false;
		//form.searchbutton.disabled = false;
		document.getElementById("modeldiv").innerHTML = str;
	}
	activeRequest = '';
}

function displayItems(htmlItems)
{
	//alert (htmlItems);
	document.getElementById("itemlistdiv").innerHTML = htmlItems;
}
function displayItemDetail(htmlItems)
{
	//alert (htmlItems);
	document.getElementById("itemdetaildiv").innerHTML = htmlItems;
}                            
//===============================================================================

function getCategories()
{
	 var form     = document.forms['parts'];
	//activeRequest = '';
	if (activeRequest == '' ) 
	{
		clearPage(form);
		
		activeRequest = 'categories';
		form.fieldName.value = activeRequest;
		xmlhttpPost('/servlet/Parts' , form);
	}
}

function getPartTypes()
{
	 var form     = document.forms['parts'];
	//activeRequest = '';
	if (activeRequest == '' ) 
	{
		clearPage(form);

		// we need to stop because another request is being processed.
		activeRequest = 'parttypes';
		form.fieldName.value = activeRequest;
		xmlhttpPost('/servlet/Parts' , form);
	}
}

function getBrands()
{
	 var form     = document.forms['parts'];
	//activeRequest = '';
	if (activeRequest == '' ) 
	{
		clearPage(form);
		
		// we need to stop because another request is being processed.
		activeRequest = 'brands';
		form.fieldName.value = activeRequest;
		xmlhttpPost('/servlet/Parts' , form);
	}
}
function getModels()
{
	 var form     = document.forms['parts'];
	//activeRequest = '';
	if (activeRequest == '' ) 
	{
		clearPage(form);
		// we need to stop because another request is being processed.
		activeRequest = 'models';
		form.fieldName.value = activeRequest;
		xmlhttpPost('/servlet/Parts' , form);
	}
}

function getItemList()
{
	var form     = document.forms['parts'];
	activeRequest = 'itemlist';
	if ( (form.categories.value > 0 && form.parttypes.value > 0 ) || form.partnumbertxt.value != '')
	{
		form.fieldName.value = activeRequest;
		xmlhttpPost('/servlet/Parts' , form);
	}
	else
	{
		//not enough data to do a search.
		activeRequest = '';
		return false;
	}
	
}

function getItemDetail(itemId)
{
	var form     = document.forms['parts'];
	activeRequest = 'itemdetail';
	form.fieldName.value = activeRequest;
	//alert('getItemDetail' + itemId);
	form.itemId.value = itemId;
	xmlhttpPost('/servlet/Parts' , form);
}

function clearPage(form)
{
	//form.categories.disabled = true;
	form.parttypes.disabled = true;
	form.brands.disabled = true;
	form.models.disabled = true;
	//form.searchbutton.disabled = true;
	document.getElementById("itemlistdiv").innerHTML = "&nbsp;";
	document.getElementById("itemdetaildiv").innerHTML = "&nbsp;";	
}
function addToCart()
{
	activeRequest = 'addtocart';
	xmlhttpPost('/Shop' , document.forms['Product_Form']);
}