var NOWjax = {};
NOWjax.xhr; 

/* -----------------------------
	Add Event
----------------------------- */
function addEvent(el, e, fn) {
	if (el.addEventListener) {
		el.addEventListener(e, fn, false);
		return true;
	}
	else if (el.attachEvent) {
		var r = el.attachEvent('on' + e, fn);
		return r;
	}
	else {
		el['on' + e] = fn;
	}
}

/* -----------------------------
	Request
----------------------------- */
NOWjax.request = (function(){
			
	/** REQUEST SETUP **/
	var ie_try = ['MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
		
	if(typeof window.XMLHttpRequest === 'function' || typeof window.XMLHttpRequest === 'object'){
		NOWjax.xhr = new XMLHttpRequest();
	} else {
		for(var i = 0, l = ie_try.length; i < l; i++){
			try {
				NOWjax.xhr = new ActiveXObject(ie_try[i]);
				break;
			} catch(e){}
		}
	}
	
	/** REQUEST FUNCTION **/
	return function(url, callback){
		try {
			NOWjax.xhr.onreadystatechange = (function(myxhr){
				return function(){
					callback(myxhr);
				}
			})(NOWjax.xhr);

			NOWjax.xhr.open('GET', url, true);
			NOWjax.xhr.send('');
		} catch(e){}
	}

})()


var xmlDoc;
var x;

addEvent(window, 'load', function(){
	
	NOWjax.request('XML/ei_prod_all.xml', function(o){
			if(o.readyState == 4){
				xmlDoc = o.responseXML;
				x = xmlDoc.getElementsByTagName("C01");
			}			
	});	
		
});






function searchIndex() { // search the index (duh!)

	if (!xmlDoc) {

		loadIndex();

	}

	

	if (document.getElementById("searchType").value == 'searchKeyword') {

		// get the search term from a form field with id 'searchme'
		var searchterm = document.getElementById("searchme").value;
		var allitems = xmlDoc.getElementsByTagName("name");
		var allcodes = xmlDoc.getElementsByTagName("code");
		var allinfo = xmlDoc.getElementsByTagName("prod_info");
		var allimg = xmlDoc.getElementsByTagName("image_src");				

		results = new Array;
		codes = new Array;
		info = new Array;
		image = new Array;	

		if (searchterm.length < 3) {
			alert("Enter at least three characters");
		} else {
			for (var i=0;i<allitems.length;i++) {
				// see if the XML entry matches the search term,
				// and (if so) store it in an array
				var name = allitems[i].lastChild.nodeValue;
				var exp = new RegExp(searchterm,"i");

				if ( name.match(exp) != null) {
					results.push(allitems[i]);	
					codes.push(allcodes[i]);
					info.push(allinfo[i]);
					image.push(allimg[i]);
				}

			}	

		// send the results to another function that displays them to the user

		showResultsKeyword(results, codes, info, image, searchterm);

		}

	} else {

		var searchterm = document.getElementById("searchme").value;
		var allitems = xmlDoc.getElementsByTagName("name");
		var allcodes = xmlDoc.getElementsByTagName("code");
		var allinfo = xmlDoc.getElementsByTagName("prod_info");
		var allimg = xmlDoc.getElementsByTagName("image_src");				

		results = new Array;
		items = new Array;
		info = new Array;
		image = new Array;	

		if (searchterm.length < 3) {
			alert("Enter at least three characters");
		} else {
			for (var i=0;i<allcodes.length;i++) {
				// see if the XML entry matches the search term,
				// and (if so) store it in an array

				var code = allcodes[i].lastChild.nodeValue;
				var exp = new RegExp(searchterm,"i");

				if ( code.match(exp) != null) {
					results.push(allcodes[i]);	
					items.push(allitems[i]);
					info.push(allinfo[i]);
					image.push(allimg[i]);
				}

			}	

			// send the results to another function that displays them to the user
			showResultsCode(results, items, info, image, searchterm);

		}	

	}

}

/* 
	this function accepts the code of a product and 
	searches the whole XML database for the product 
	then returns it's details 
*/
function showDetailByCode(code) {
	var x = xmlDoc.getElementsByTagName('code');
	for(var i = 0, l = x.length; i < l; i++){
		if(x[i].lastChild.nodeValue == code){			
			var node = x[i].parentNode;	
		}
	}
	var iDet = "<table cellpadding='0' width=\"100%\" cellspacing='0' border='0' style=\"padding: 20px 10px 10px 25px;\"><tr><td class=\"pgTitle\" colspan=\"2\">" + node.getElementsByTagName("name")[0].childNodes[0].nodeValue + "</td></tr><tr><td class='detailCode'>" + node.getElementsByTagName("code")[0].childNodes[0].nodeValue + "</td>";
	
	iDet += "<td class='detailName' width='100%'>" + node.getElementsByTagName("name")[0].childNodes[0].nodeValue + "</td></tr>";
	iDet += "<tr><td class='detailImg' colspan='2'><img src='XML/images_all/" + node.getElementsByTagName("image_src")[0].childNodes[0].nodeValue + ".jpg' /></td></tr>";
	iDet += "<tr><td colspan='2'><table width='100%' cellpadding='0' cellspacing='0' border='0'>";
	
	var z = node.getElementsByTagName("prod_info");
	for (var c = 0; c < z.length; c++) { 
		iDet += "<tr><td class='detailInfo'>" + node.getElementsByTagName("prod_info")[c].childNodes[0].nodeValue + "</td></tr>";
	}
	
	iDet += "</table></td></tr><tr><td colspan='2' align='right' style='padding:15 0 15 0'><a href='javascript:(history.go(0));'><img src='images/btn_back.gif' border='0' alt=''Back' /></a></td></tr></table>";
	
	var container = document.getElementById('pgCont');
	if(container){
		container.innerHTML = iDet;	
	}
}



function showResultsKeyword(results, codes, info, image, searchterm) {
	
	if (results.length > 0) {
		var insRes = "<table cellpadding='0' width='100%' cellspacing='0' border='0' style='padding:20 10 10 25'>";	
		insRes += "<tr><td class='pgTitle' colspan='3'>You searched for <b>" + searchterm + "</b></td></tr>";
		
		for(var i=0; i<results.length; i++) {
			insRes += "<tr><td class='prodCode'>" + codes[i].lastChild.nodeValue + "</td>";
			insRes += "<td class='prodTitle' valign='top'><a href=\"javascript: void(0);\" onclick=\"showDetailByCode('" + codes[i].lastChild.nodeValue + "');\">" + results[i].lastChild.nodeValue + "</a></td>";
			insRes += "<td valign='top'><a href=\"javascript: void(0);\" onclick=\"showDetailByCode('" + codes[i].lastChild.nodeValue + "');\"><img src='XML/images_all/" + image[i].lastChild.nodeValue + ".jpg' alt='' /></a></td></tr>";
			insRes += "<tr><td colspan='3'><img src='images/spacer.gif' width='1' height='10' alt='' /></td></tr>";
		}

		insRes += "<table>";

		document.getElementById("pgCont").innerHTML = insRes;
		document.close();

	} else {
		// else tell the user no matches were found
		var notfound = alert('No results found for '+searchterm+'!');
	}

}



function showResultsCode(results, items, info, image, searchterm) {

	if (results.length > 0) {

		var insRes = "<table cellpadding='0' cellspacing='0' width='100%' border='0' style='padding:20 10 10 25'>";	
		insRes = insRes + "<tr><td class='pgTitle' colspan='3'>You searched for <b>" + searchterm + "</b></td></tr>";

		for(var i=0; i<results.length; i++) {
			insRes = insRes + "<tr><td class='prodCode'>" + results[i].lastChild.nodeValue + "</td>";
			insRes = insRes + "<td class='prodTitle' valign='top'><a href=\"javascript: void(0);\" onclick=\"showDetailByCode('" + results[i].lastChild.nodeValue + "')\">" + items[i].lastChild.nodeValue + "</a></td>";
			insRes = insRes + "<td valign='top'><a href=\"javascript: void(0);\" onclick=\"showDetailByCode('" + results[i].lastChild.nodeValue + "');\"><img src='XML/images_all/" + image[i].lastChild.nodeValue + ".jpg' alt='' /></a></td></tr>";
			insRes = insRes + "<tr><td colspan='3'><img src='images/spacer.gif' width='1' height='10' alt='' /></td></tr>";
		}

		insRes = insRes + "<table>";
		document.getElementById("pgCont").innerHTML = insRes;
		document.close();

	} else {
		// else tell the user no matches were found
		var notfound = alert('No results found for '+searchterm+'!');
	}

}	

			

			// -->
