var http_request = false;
var debug = true;
function makeRequest(url, query, action, method) 
{
	if(!url) url = document.location.href;
	//center_layer('progress_box');
	update_html('progress_box','progress_msg','Your request is being processed, please wait.');
	var winl = (window.innerWidth)?window.innerWidth:document.body.clientWidth; 
	var wint = (window.innerHeight)?window.innerHeight:document.body.clientHeight; 
	var obj = document.getElementById('progress_box');
	GetScrollXY();
	var w = parseInt(obj.style.width);
	var h = parseInt(obj.style.height);
	obj.style.left = parseInt((winl - w) / 2) + scrollXY.x + 'px';
	obj.style.top = parseInt((wint - h) / 2) + scrollXY.y + 'px';
	//box.top = mouse.x + scrollXY.x + 'px';
	//box.left = mouse.y + scrollXY.y + 'px';
	//center_layer('progress_box');
	//set_prop('progress','visibility','visible');
	/*
	http://www.xul.fr/en-xml-ajax.html
	http://forums.devx.com/showthread.php?t=159582
	Methods 
	open(mode, url, boolean) 
	mode: type of request, GET or POST
	url: the location of the file, with a path.
	boolean: true (asynchronous) / false (synchronous).
	optionally, a login and a password may be added to arguments. 
	send("string")  null for a GET command. 
	*/
		
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
     http_request = new XMLHttpRequest();
     if (http_request.overrideMimeType) {
        http_request.overrideMimeType('text/xml');
     }
  } else if (window.ActiveXObject) { // IE
     try {
        http_request = new ActiveXObject('Msxml2.XMLHTTP');
     } catch (e) {
        try {
           http_request = new ActiveXObject('Microsoft.XMLHTTP');
        } catch (e) {}
     }
  }
  if (!http_request) {
     alert('Cannot create XMLHTTP instance');
     return false;
  }
  http_request.onreadystatechange = function () 
  {
	  //if(action.length > 1)alert(action);
		if (http_request.readyState == 4)
		{
		  set_prop('progress_box','visibility','hidden');
	  	for(var i=0;i<action.length;i++)
	  	{
	  			eval(action[i])
	  	}
	  }
  }
  
  if(method=='POST')
  {
  	// POST ---- 
		http_request.open('POST', url, true);
		http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	  // FOR TESTING: document.getElementById('debug').innerHTML = url +'?' + query;
	  http_request.send(query);
	  //alert(query);
	}
	else
	{
		// GET -----
	  http_request.open('GET', url + '?' + query, true);
	  http_request.send(null);
	 }
}

function alertContents() 
{
  if (http_request.readyState == 4) 
  {
     if (http_request.status == 200) 
     {
     		var list = new Array();
        var xmldoc = http_request.responseXML;
        
       /*
        var parser = new DOMParser();
        dom = parser.parseFromString(xmldoc, 'text/xml');
        delete parser;
        */
        
        //var dom = parse(xmldoc);
	
	      var data = xmldoc.getElementsByTagName('data')[0];
				var text = '';
				if(data)
				{
					for (var i = 0; i < data.childNodes.length; i++)
					{
						if(data.childNodes[i].nodeName=='product') 
						{
							var arr = [];
							for (var x = 0; x < data.childNodes[i].childNodes.length; x++)
							{
								var tmp = data.childNodes[i].childNodes[x];
								if(tmp.nodeType==1) arr[arr.length] = window.ActiveXObject ? tmp.text : tmp.textContent;
							}
							if(arr.length) list[list.length] = arr;
						}
					}
				}
				
       	list_search_results('auto_search_results', list);
     } 
     else 
     {
       alert('There was a problem with the request.');
     }
  }
}

function traverse(tree,str) 
{
	if(tree.ChildNodes.length) 
	{
		str +='<ul><li>';
		str +='<b>'+tree.tagName+' : </b>';
		var nodes=tree.childNodes.length;
		for(var i=0; i<tree.childNodes.length; i++)
		        traverse(tree.childNodes(i),str);
		str += '</li></ul>';
	}
	else
		return str;
}

function parse(xml) {
    var dom;
    try 
    {
        dom = new ActiveXObject('Microsoft.XMLDOM');
        dom.async = false;
        dom.loadXML(xml);
    } 
    catch (error) 
    {
        try 
        {
            var parser = new DOMParser();
            dom = parser.parseFromString(xml, 'text/xml');
            delete parser;
        } catch (error2) 
        {
            if (debug)
                alert('XML parsing is not supported.');
        }
    }
    return dom;
}

function serialize(dom) 
{
    var xml = dom.xml;
    if (xml == undefined) 
    {
        try 
        {
            var serializer = new XMLSerializer();
            xml = serializer.serializeToString(dom);
            delete serializer;
        } 
        catch (error) 
        {
            if (debug)
                alert('DOM serialization is not supported.');
        }
    }
    return xml;
}

function list_search_results(listname, list) 
{
	//alert(listname);
	var str = '';
	if(list.length)
	{
	  //alert(list);return;
		var ele = document.getElementById(listname);
		var str = '<div style=\"border:1px solid #000000;overflow:auto;height:150px;\"><table class=\"content\" style=\"height:150px;width:200px;padding:0px;background: #FFFFFF;\">';
		for(var i=0; i < list.length; i++)
		{
			var max_length = 25;
			var product_sku = list[i][0];
			var product_title = list[i][1];
			if(product_title.length > max_length) product_title = product_title.substring(0,max_length) + '...';
			str += '<tr style=\"background: #eeeeee;padding:3px;\"><td valign=\"top\"><a href=\"product.php?sku='+product_sku+'\">' + product_sku + '</a> &nbsp; ' + product_title + '</td></tr>';
		}
		str += '<tr style=\"background: #eeeeee;padding:3px;\"><td height=\"*\">&nbsp;</td></tr></table></div>';
	}
	update_html(listname,listname,str);// ele.innerHTML = str;
}

