var xmlHttpColor = createXmlHttpRequestObject();
var xmlHttpCountry = createXmlHttpRequestObject();
var xmlHttpRegion = createXmlHttpRequestObject();
var colorAddress = "colors.php";
var countryAddress = "countrys.php";
var regionAddress = "regions.php";
var errorRetryInterval = 5;
var debugMode = true;
var mChngColor = false;
var mChngRegion = false;
var mChngCountry = false;

function createXmlHttpRequestObject()
{
	var xmlHttp;
	try
	{
		xmlHttp = new XMLHttpRequest();
	}
	catch (e)
	{
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
						"MSXML2.XMLHTTP.5.0",
						"MSXML2.XMLHTTP.4.0",
						"MSXML2.XMLHTTP.3.0",
						"MSXML2.XMLHTTP",
						"Microsoft.XMLHTTP");
		for (var i=0; i < XmlHttpVersions.length && !xmlHttp; i++)
		{
			try
			{
			xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			}
			catch (e) {}
		}
	}
	if(!xmlHttp) alert("Error creating the XMLHttpRequest object");
	else return xmlHttp;
}

function display($message)
{
	
}

function displayError($message)
{
	display("Error retrieving the news message! Will retry in " + errorRetryInterval + " seconds." +
	(debugMode ? "<br />" + $message : ""));
	setTimeout("process()", errorRetryInterval * 1000);
}

function process()
{
	if (xmlHttpColor)
	{
		try
		{
			doColorLoad("");
		}
		catch (e) { displayError(e.toString()); }
	}
	if (xmlHttpCountry)
	{
		try
		{
			doCountryLoad("");
		}
		catch (e) { displayError(e.toString()); }
	}
	if (xmlHttpRegion)
	{
		try
		{
			doRegionLoad("");
		}
		catch (e) { displayError(e.toString()); }
	}
}

function doColorLoad($annex)
{
	xmlHttpColor.open("GET", colorAddress+$annex, true);
	xmlHttpColor.onreadystatechange = handleColorLoad;
	xmlHttpColor.send(null);
}

function doCountryLoad($annex)
{
	xmlHttpCountry.open("GET", countryAddress+$annex, true);
	xmlHttpCountry.onreadystatechange = handleCountryLoad;
	xmlHttpCountry.send(null);
}

function doRegionLoad($annex)
{
	xmlHttpRegion.open("GET", regionAddress+$annex, true);
	xmlHttpRegion.onreadystatechange = handleRegionLoad;
	xmlHttpRegion.send(null);
}

function handleColorLoad()
{
	if (xmlHttpColor.readyState == 4)
	{
		if(xmlHttpColor.status == 200)
		{
		try { getColors(); }
		catch (e) { displayError(e.toString()); }
		}
		else displayError(xmlHttpColor.statusText);
	}
}

function handleCountryLoad()
{
	if (xmlHttpCountry.readyState == 4)
	{
		if(xmlHttpCountry.status == 200)
		{
		try { getCountrys(); }
		catch (e) { displayError(e.toString()); }
		}
		else displayError(xmlHttpCountry.statusText);
	}
}

function handleRegionLoad()
{
	if (xmlHttpRegion.readyState == 4)
	{
		if(xmlHttpRegion.status == 200)
		{
		try { getRegions(); }
		catch (e) { displayError(e.toString()); }
		}
		else displayError(xmlHttpRegion.statusText);
	}
}

function getColors()
{
	var response = xmlHttpColor.responseText;
	if ( response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0 || response.length == 0)
		throw(response.length == 0 ? "Server error." : response);
	imyColor = document.getElementById("myColor");
	imyColor.innerHTML = response;
	if ( imyColor.innerHTML != response ) // IE6/7-optimized 
	{
		var string = '<select name="farbe" id="myColor" onchange="chngColor()">';
		string += response + "</select>";
		imyColor.outerHTML = string;
	}
}

function getCountrys()
{
	var response = xmlHttpCountry.responseText;
	if ( response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0 || response.length == 0)
		throw(response.length == 0 ? "Server error." : response);
	imyCountry = document.getElementById("myCountry");
	
	imyCountry.innerHTML = response;
	if ( imyCountry.innerHTML != response ) // IE6/7-optimized 
	{
		var string = '<select name="land" id="myCountry" onchange="chngCountry()">';
		string += response + "</select>";
		imyCountry.outerHTML = string;
	}
}

function getRegions()
{
	var response = xmlHttpRegion.responseText;
	if ( response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0 || response.length == 0)
		throw(response.length == 0 ? "Server error." : response);
	imyRegion = document.getElementById("myRegion");
	imyRegion.innerHTML = response;
	if ( imyRegion.innerHTML != response ) // IE6/7-optimized 
	{
		var string = '<select name="region" id="myRegion" onchange="chngRegion()">';
		string += response + "</select>";
		imyRegion.outerHTML = string;
	}
}

function chngColor()
{
	imyColor = document.getElementById("myColor");
	imyCountry = document.getElementById("myCountry");
	imyRegion = document.getElementById("myRegion");

	if ( imyColor.value == 0 )
	{
		mChngColor = false;
		if ( xmlHttpColor ) 
			try { doColorLoad("?country="+imyCountry.value+"&region="+imyRegion.value); }
			catch (e) { displayError(e.toString()); }
	}
	else mChngColor = true;
	
	if ( !mChngCountry && xmlHttpCountry ) 
		try { doCountryLoad("?color="+imyColor.value); }
		catch (e) { displayError(e.toString()); }
	if ( !mChngRegion && !mChngCountry && xmlHttpRegion ) 
		try { doRegionLoad("?color="+imyColor.value+"&country="+imyCountry.value); }
		catch (e) { displayError(e.toString()); }
}

function chngCountry()
{
	imyColor = document.getElementById("myColor");
	imyCountry = document.getElementById("myCountry");
	imyRegion = document.getElementById("myRegion");
	
	if ( imyCountry.value == 0 ) 
	{
		mChngCountry = false;
		if ( xmlHttpCountry ) 
			try { doCountryLoad("?color="+imyColor.value); }
			catch (e) { displayError(e.toString()); }
	}
	else mChngCountry = true;
	
	if ( xmlHttpRegion ) 
		try { doRegionLoad("?country="+imyCountry.value); }
		catch (e) { displayError(e.toString()); }
	if ( !mChngColor && xmlHttpColor ) 
		try { doColorLoad("?country="+imyCountry.value); }
		catch (e) { displayError(e.toString()); }
}

function chngRegion()
{
	imyColor = document.getElementById("myColor");
	imyCountry = document.getElementById("myCountry");
	imyRegion = document.getElementById("myRegion");
	
	if ( imyRegion.value == 0 )
	{
		mChngRegion = false;
	}
	else mChngRegion = true;
	
	if ( imyRegion.value != 0 && !mChngCountry && xmlHttpCountry ) 
		try { doCountryLoad("?region="+imyRegion.value); }
		catch (e) { displayError(e.toString()); }
	if ( !mChngColor && xmlHttpColor ) 
		try { doColorLoad("?region="+imyRegion.value); }
		catch (e) { displayError(e.toString()); }
}

function doSearch()
{
	var search = "advanced_search_result.php";
	var addex = "?inc_subcat=1";
	imyColor = document.getElementById("myColor");
	imyCountry = document.getElementById("myCountry");
	imyRegion = document.getElementById("myRegion");
	imyPrice = document.getElementById("myPrice");
	imyFulltext = document.getElementById("myFulltext");
	
	if(imyFulltext.value != "" && imyFulltext.value != "Volltextsuche") addex += "&keywords="+imyFulltext.value;
	if(imyCountry.value != 0) addex += "&country_id="+imyCountry.value;
	if(imyRegion.value != 0) addex += "&region_id="+imyRegion.value;
	if(imyColor.value != 0) addex += "&color_id="+imyColor.value;
	switch(imyPrice.value)
	{
	case "1": addex += "&pfrom=0&pto=6";
		break;
	case "2": addex += "&pfrom=5&pto=11";
		break;
	case "3": addex += "&pfrom=10&pto=20";
		break;
	case "4": addex += "&pfrom=21";
		break;
	default: break;
	}
	window.location.href = search+addex;
}

function chng_fulltext()
{
	imyFulltext = document.getElementById("myFulltext");
	if ( imyFulltext.value == "Volltextsuche" ) imyFulltext.value = "";
}

function doNewSearch()
{
	var search = "advanced_search_result.php";
	var addex = "?inc_subcat=1";
	imynewSearch = document.getElementById("mynewsearch");
	window.location.href = search+addex+"&keywords="+imynewSearch.value;
}
