var menuHttp
var pageHttp
var productpageHttpXML
var searchHttp

var currentPGroup = 0
var currentPSGroup = 0
var currentPSGroupName = "";

function getPage(page_title)
{
	var url="AJAX/getpage.php?&p=" + page_title
	pageHttp=GetXmlHttpObject(pageStateChanged)
	pageHttp.open("GET", url , true)
	pageHttp.send(null)
	
	document.getElementById("pageinfo").innerHTML="<b class='selected'>"+page_title+"</b>"
}

function getProductPage(level, GroupID, subgroup_ID, subgroup_name)
{
	if (level == null) level = ""
	if (GroupID==null) GroupID = "00"
	if (subgroup_ID==null)subgroup_ID = "000"
	if (subgroup_name==null)subgroup_name=""
	
	previousGroup = currentPGroup
	closed_a_group = (GroupID == -1) ? true : false;
	
	showProductenMenu(GroupID, subgroup_ID, subgroup_name);
	
	//although you closed a productgroup
	// you might have had the intention to view it
	//  so why not show it anyway
	if(closed_a_group) GroupID = previousGroup; 
	
	var url="AJAX/getproductsXML.php?hash=" + Math.random() + "&level=" + level + "&GroupID=" + GroupID + "&subgroup_ID=" + subgroup_ID + "&subgroup_name=" + subgroup_name
	productpageHttpXML=GetXmlHttpObject(productpageStateChanged)
	productpageHttpXML.open("GET", url , true)
	productpageHttpXML.send(null)
}

function pageStateChanged() 
{ 
	if(pageHttp.readyState==1 || pageHttp.readyState=="loading")
    	{
	  	document.getElementById("content").innerHTML="Loading..."
	}
  	else if (pageHttp.readyState==4 || pageHttp.readyState=="complete")
	{ 
		document.getElementById("content").innerHTML=pageHttp.responseText
	} 
}

function productpageStateChanged()
{ 
  	if(productpageHttpXML.readyState==1 || productpageHttpXML.readyState=="loading")
    {
	  	document.getElementById("content").innerHTML="Loading..."
	}
	if (productpageHttpXML.readyState == 4 || productpageHttpXML.readyState=="complete") {
    	// only if "OK"
    	if (productpageHttpXML.status == 200 || productpageHttpXML.statusText=="OK") {
	        //alert("XML data:\n" + productpageHttpXML.responseXML + "\nText data:\n" + productpageHttpXML.responseText + "\nStatus:\n" +productpageHttpXML.status + "" + productpageHttpXML.statusText+""+productpageHttpXML.getResponseHeader("Content-type"));

			response  = productpageHttpXML.responseXML.documentElement;
			method    = response.getElementsByTagName('method')[0].firstChild.data;
		    result    = response.getElementsByTagName('result')[0];
			eval(method+ '(result)');
	    } else {
	        alert("There was a problem retrieving the XML data:" +productpageHttpXML.status + "" + productpageHttpXML.statusText+""+productpageHttpXML.getResponseHeader("Content-type"));
	    }
    }
}

function showProductPage(response)
{
	level = response.getElementsByTagName("level")[0].getAttributeNode("name").value;
	  
	switch(level)
	{
  		case "groepen":
  		showGroepen(response);
	  	break;
	  	case "subgroepen":
	  	showSubGroepen(response);
		break;
		case "producten":
		showProducten(response);
		break;	   
	} 
}

function showGroepen(response)
{
  	document.getElementById("pageinfo").innerHTML="Producten - <b class='selected'>Groepen</b>";
  		
	pagecontent="<table class='product'><tr><th>Groep</th><th>Groep naam</th></tr>";
  	
  	groepen = response.getElementsByTagName("group");
  	
  	for(i =0 ; i < groepen.length ; i++)
  	{
	    groep = groepen.item(i);
	    id    = groep.getAttributeNode("id").value;
	    naam  = groep.getAttributeNode("name").value;
	    
	    //firefox doesn't collapse table border with td border the right way
	    td_style="";
	    if(i == groepen.length-1) td_style=' style="border-bottom: 1px solid #C9C5C6;"';
	    
	    pagecontent+="<tr><td"+td_style+">"+id+"</td><td"+td_style+"><a href='javascript:getProductPage(\"subgroepen\",\""+id+"\");'>"+naam+"</a></td></tr>";
	}
	pagecontent+="</table>";	
	document.getElementById("content").innerHTML=pagecontent;
}

function showSubGroepen(response)
{
  	groep       = response.getElementsByTagName('group')[0];
	groep_id    = groep.getAttributeNode("id").value;
	groep_naam  = groep.getAttributeNode("name").value;
	groep_image = groep.getAttributeNode("image").value;
  	//document.getElementById("pageinfo").innerHTML="Producten - <a href='javascript:getProductPage(\"groepen\");'>Groepen</a> - <b class='selected'>"+groep_naam+"</b>";
  	document.getElementById("pageinfo").innerHTML="<a href=\"javascript:getPage('Home');\">Home</a> - <b class='selected'>"+groep_naam+"</b>";
  	
  	pagecontent="<h3>"+groep_naam+"</h3>";
  	pagecontent+="<table class='product' style='width:400px;position:absolute;top:50px;'><tr><th>Subgroep</th><th>Subgroep naam</th></tr>";
	
	subgroepen = response.getElementsByTagName("subgroup");
	
	for(i =0 ; i < subgroepen.length ; i++)
  	{
	    subgroep           = subgroepen.item(i);
	    id                 = subgroep.getAttributeNode("id").value;
	    naam               = subgroep.getAttributeNode("name").value;
	    groep              = subgroep.getAttributeNode("group").value;
	    //prijs_per          = subgroep.getAttributeNode("prijs_per").value;
	    //verpakt_per        = subgroep.getAttributeNode("verpakt_per").value;
	    //kortingspercentage = subgroep.getAttributeNode("kortingspercentage").value;
	    
	    //firefox doesn't collapse table border with td border the right way
	    td_style="";
	    if(i == subgroepen.length-1) td_style=' style="border-bottom: 1px solid #C9C5C6;"';
	    
	    pagecontent+="<tr><td"+td_style+">"+groep+"."+id+"</td><td"+td_style+"><a href='javascript:getProductPage(\"producten\",\""+groep+"\",\""+id+"\",\""+naam+"\");'>"+naam+"</a></td></tr>";
	}
	pagecontent+="</table>";
	
	pagecontent+="<img src='http://www.timson.nl/download.php?type=group&amp;id="+groep_id+"' alt='"+groep_naam+"' title='"+groep_naam+"' style='position:absolute;top:50px;left:459px;'/>";
	
	document.getElementById("content").innerHTML=pagecontent;
			
}

function showProducten(response)
{
	groep         = response.getElementsByTagName('group')[0];
	groep_id      = groep.getAttributeNode("id").value;
	groep_naam    = groep.getAttributeNode("name").value;
	
	subgroep      = response.getElementsByTagName('subgroup')[0];
	subgroep_id   = subgroep.getAttributeNode("id").value;
	subgroep_naam = subgroep.getAttributeNode("name").value;
	subgroep_image= subgroep.getAttributeNode("image").value;
	prijs_per     = subgroep.getAttributeNode("prijs_per").value;
	verpakt_per   = subgroep.getAttributeNode("verpakt_per").value;
	kortingspercentage = subgroep.getAttributeNode("kortingspercentage").value;
	
	document.getElementById("pageinfo").innerHTML="<a href=\"javascript:getPage('Home');\">Home</a> - <a href=\"javascript:getProductPage('subgroepen','"+groep_id+"');\">"+groep_naam+"</a> - <b class=\"selected\">"+subgroep_naam+"</b>";
	
	pagecontent = "";
	
	korting="";
	if(prijs_per != "") prijs_per=", prijs per "+prijs_per;
	if(verpakt_per != "") verpakt_per=", verpakt per "+verpakt_per;
	if(kortingspercentage != "netto" && kortingspercentage != "") korting = " (Kortingspercentage: "+kortingspercentage+")";
		
	pagecontent="<h3>"+subgroep_naam+prijs_per+verpakt_per+korting+"</h3>";
	pagecontent+="<table class='product' style='width:400px;position:absolute;top:50px;'><tr><th>Product</th><th>Naam</th><th>Prijs</th></tr>";
	
	producten = response.getElementsByTagName("product");
	
	for(i =0 ; i < producten.length ; i++)
  	{
	    product            = producten.item(i);
	    id                 = product.getAttributeNode("nummer").value;
	    naam               = product.getAttributeNode("beschrijving").value;
	    prijs              = product.getAttributeNode("prijs").value;
	    	    
	    //firefox doesn't collapse table border with td border the right way
	    td_style="";
	    if(i == producten.length-1) td_style=' style="border-bottom: 1px solid #C9C5C6;"';
	    
	    pagecontent+="<tr><td"+td_style+">"+groep_id+"."+subgroep_id+"."+id+"</td><td"+td_style+">&nbsp;"+naam+"</td><td"+td_style+" class='right'>&nbsp;&euro;"+prijs+"</td></tr>";
	}
	pagecontent+="</table>";
	
	//pagecontent+="<a href=\"http://www.timson.nl/images/subgroepen/originals/"+subgroep_image+"\" target=\"_new\">";
	pagecontent+="<img src='http://www.timson.nl/download.php?type=subgroup&amp;id="+subgroep_id+"&amp;subgroup_group="+groep_id+"&amp;subgroup_name="+subgroep_naam+"' title='"+subgroep_naam+"' style='position:absolute;top:50px;left:459px;'/>";
	//pagecontent+="</a>";
		
	//display page content
	document.getElementById("content").innerHTML=pagecontent;
}

function showSearchResults(str)
{
  	var url="AJAX/getsuggestionsXML.php?hash=" + Math.random() + "&q=" + str
	searchHttp=GetXmlHttpObject(suggestionsStateChanged)
	searchHttp.open("GET", url , true)
	searchHttp.send(null)
}

function showSuggestions(str)
{ 
	var url="AJAX/getsuggestionsXML.php?hash=" + Math.random() + "&q=" + str + "&trim=1"
	searchHttp=GetXmlHttpObject(suggestionsStateChanged)
	searchHttp.open("GET", url , true)
	searchHttp.send(null)
} 

function suggestionsStateChanged() 
{ 
    if(searchHttp.readyState==1 || searchHttp.readyState=="loading")
    {
	  document.getElementById("search_results").innerHTML="Loading..."
	}
  	else if (searchHttp.readyState==4 || searchHttp.readyState=="complete")
	{ 
		unhideSearch();
		document.getElementById("search_results").innerHTML=searchHttp.responseText;
	} 
} 

function hideSearch()
{
  document.getElementById("search_box").style.visibility="hidden";
}

function unhideSearch()
{
  document.getElementById("search_box").style.visibility="visible";
}

function GetXmlHttpObject(handler)
{ 
	var objXmlHttp=null
	
	if (navigator.userAgent.indexOf("Opera")>=0)
	{
		alert("AJAX functionality doesn't work in Opera") 
		return 
	}
	if (navigator.userAgent.indexOf("MSIE")>=0)
	{ 
		var strName="Msxml2.XMLHTTP"
		if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
		{
			strName="Microsoft.XMLHTTP"
		} 
		try
		{ 
			objXmlHttp=new ActiveXObject(strName)
			objXmlHttp.onreadystatechange=handler 
			return objXmlHttp
		} 
		catch(e)
		{ 
			alert("Error. Scripting for ActiveX might be disabled") 
			return 
		} 
	} 
	if (navigator.userAgent.indexOf("Mozilla")>=0)
	{
		objXmlHttp=new XMLHttpRequest()
		objXmlHttp.onload=handler
		objXmlHttp.onerror=handler 
		return objXmlHttp
	}
} 

function initializeEverything()
{
  getPage("Home");
  showProductenMenu(-1,-1,"");
}

function showProductenMenu(groep, subgroep, subgroepnaam)
{
  	currentPSGroup     = subgroep;
	currentPSGroupName = subgroepnaam;
	  	
  	if(groep != currentPGroup)
	{
	  	currentPGroup      = groep; 

		var url="AJAX/getproductmenu.php?hash=" + Math.random() + "&group=" + groep
		menuHttp=GetXmlHttpObject(productenStateChanged)
		menuHttp.open("GET", url , true)
		menuHttp.send(null)
	}
	else
		emphasizeSubGroup(subgroep, subgroepnaam);
}

function emphasizeSubGroup(subgroep_id, subgroepnaam)
{
  	subgroepen_divs = getElementsByClassName(document.getElementById("producten_menu"),"div","subgroep_selected");
	for(i=0;i<subgroepen_divs.length;i++)
	{
	  subgroepen_divs[i].className = "subgroep";
	}
	if(document.getElementById("subgroep_"+subgroep_id+"_"+subgroepnaam))
	{
	  document.getElementById("subgroep_"+subgroep_id+"_"+subgroepnaam).className = "subgroep_selected";
	}
}

function productenStateChanged() 
{ 
    if (menuHttp.readyState==4 || menuHttp.readyState=="complete")
	{ 
		document.getElementById("producten_menu").innerHTML=menuHttp.responseText 
		emphasizeSubGroup(currentPSGroup,currentPSGroupName);
	} 
}

/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}



