var AJAX_banner					= createXMLHttpRequest();
var AJAX_herstellersuche		= createXMLHttpRequest();
var AJAX_katalogansicht			= createXMLHttpRequest();
var AJAX_login 					= createXMLHttpRequest();
var AJAX_main					= createXMLHttpRequest();
var AJAX_menu					= createXMLHttpRequest();
var AJAX_suchenach				= createXMLHttpRequest();
var AJAX_ueberschriften			= createXMLHttpRequest();
var AJAX_warenkorbsmall 		= createXMLHttpRequest();
var AJAX_fuss					= createXMLHttpRequest();
var AJAX_otherdiv				= createXMLHttpRequest();

var currentMainDivID = '';

function createXMLHttpRequest() 
{ 
	var req = null; 
	
	try 
	{ 
		req = new ActiveXObject("MSXML2.XMLHTTP"); 
	} 
	catch (err_MSXML2) 
	{ 
		try 
		{ 
			req = new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch (err_Microsoft) 
		{ 
			if (typeof XMLHttpRequest != "undefined")  
				req = new XMLHttpRequest; 
		} 
	} 
	
	return req; 
} 

var currentMainDiv =
{
	set: function(newDivID)
	{
		var newDiv = document.getElementById(newDivID)
		if (newDiv) 
		{
			newDiv.style.display = 'block';
			currentMainDivID = newDivID;
		}
	},
	change: function(newDivID)
	{
		if (currentMainDivID != newDivID)
		{
			var oldDiv = document.getElementById(currentMainDivID)
			var newDiv = document.getElementById(newDivID)
			if (oldDiv && newDiv) 
			{
				oldDiv.style.display = 'none'; oldDiv.style.height = '0px';
				newDiv.style.display = 'block';
				currentMainDivID = newDivID;
			}
		}
	}
}

function form2param(formID)
{
	var param = '';
	var form = document.getElementById(formID)
	if (form)
	{
		var inputs = form.getElementsByTagName('input')
		if (inputs)
		{
			for (var i=0; i < inputs.length; i++) 
			{
				//alert(inputs[i].id + ' : ' + inputs[i].type);
				if (inputs[i].type.toLowerCase() == 'radio' || inputs[i].type.toLowerCase() == 'checkbox')
				{
					if (inputs[i].checked)
					{
						param += '&' + inputs[i].name + '=' + encodeURIComponent(inputs[i].value);
					}
				}
				else
				{
					param += '&' + inputs[i].name + '=' + encodeURIComponent(inputs[i].value);
				}
			}
		}
	}
	return param.substr(1);
}

var ajax =
{
	checkURL: function(URL)
	{
		if (URL.toLowerCase().indexOf('ajax=1') == -1)
		{
			if (URL.toLowerCase().indexOf('asp?') == -1)
			{
				URL += '?ajax=1';
			}
			else
			{
				URL += '&ajax=1';
			}
		}
		return URL;
	},

	replacepage: function(URL, divID)
	{
		//alert('ReplacePage: ' + URL + ' in das DivTag ' + divID);
		if (divID.toLowerCase() == 'parent.banner')
		{	banner.request('GET', URL);	}
		else if (divID.toLowerCase() == 'parent.herstellersuche')
		{	herstellersuche.request('GET', URL);	}
		else if (divID.toLowerCase() == 'parent.katalogansicht')
		{	katalogansicht.request('GET', URL);	}
		else if (divID.toLowerCase() == 'parent.login')
		{	login.request('GET', URL);	}
		else if (divID.toLowerCase() == 'parent.main')
		{ 	main.request('GET', URL);	}
		else if (divID.toLowerCase() == 'parent.menu')
		{	menu.request('GET', URL);	}
		else if (divID.toLowerCase() == 'parent.suchenach')
		{	suchenach.request('GET', URL);	}
		else if (divID.toLowerCase() == 'parent.ueberschriften')
		{	ueberschriften.request('GET', URL);	}
		else if (divID.toLowerCase() == 'parent.warenkorbsmall')
		{	warenkorbsmall.request('GET', URL);	}
		else if (divID.toLowerCase() == 'parent.fuss')
		{	fuss.request('GET', URL);	}
		else
		{
			otherdiv.request('GET', URL);				//alert('Für das Senden einer Anfrage in das DivTag ' + divID + ' exisitert keine Funktion!\n\nAngeforderte URL : ' + URL);
		}
	},
	
	parseandexecutescript: function(content)
	{
		if (content)
		{
			//http://dojotoolkit.org/pipermail/dojo-interest/2006-January/003635.html
			// Remove the script tags we matched
			repl = new RegExp('<script.*?src=".*?".*?</script>');
			content = content.replace(repl, '');
			// Clean up content: remove inline script  comments
			repl = new RegExp('//.*?$', 'gm');
			content = content.replace(repl, '\n');
			// Clean up content: remove carraige returns
			repl = new RegExp('[\n\r]', 'g');
			content = content.replace(repl, ' ');
			// Match anything inside <script> tags
			src = new RegExp('<script.*?</script>', 'g');
			matches = content.match(src);
			// For each match that is found...
			if (matches != null)
			{
				for (i = 0; i < matches.length; i++)
				{
					// Remove begin tag
					var repl = new RegExp('<script.*?>', 'gm');
					var script = matches[i].replace(repl, '');
		
					// Remove end tag
					repl = new RegExp('</script>', 'gm');
					script = script.replace(repl, '');

					// Execute commands
					if (script != '')
					{
						//alert('Script ' + i + ' : \n\n' + script);
						setTimeout(script, 250);
					}
				}
			}
		}
	}
}

var banner = 
{
	request: function(method, URL, formID)
	{
		if ((AJAX_banner) && (URL) && (document.getElementById('parent.banner')))
		{
			URL = ajax.checkURL(URL); //alert(URL);
			AJAX_banner.open(method, URL, true);
			AJAX_banner.onreadystatechange = banner.showContent;
			if (method.toUpperCase() == 'POST')
			{
				AJAX_banner.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				AJAX_banner.send(form2param(formID));
			}
			else
			{
				AJAX_banner.send(null);
			}
		}
	},

	showContent: function() 
	{
		if (AJAX_banner.readyState == 4 && document.getElementById('parent.banner')) 
		{
			var content = AJAX_banner.responseText;
			//alert('banner: \n\n' + content);
			document.getElementById('parent.banner').innerHTML = content;
			ajax.parseandexecutescript(content);
		}
	}
};

var herstellersuche = 
{
	request: function(method, URL, formID)
	{
		if ((AJAX_herstellersuche) && (URL) && (document.getElementById('parent.herstellersuche')))
		{
			URL = ajax.checkURL(URL); //alert(URL);
			AJAX_herstellersuche.open(method, URL, true);
			AJAX_herstellersuche.onreadystatechange = herstellersuche.showContent;
			if (method.toUpperCase() == 'POST')
			{
				AJAX_herstellersuche.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				AJAX_herstellersuche.send(form2param(formID));
			}
			else
			{
				AJAX_herstellersuche.send(null);
			}
		}
	},

	showContent: function() 
	{
		if (AJAX_herstellersuche.readyState == 4 && document.getElementById('parent.herstellersuche')) 
		{
			var content = AJAX_herstellersuche.responseText;
			document.getElementById('parent.herstellersuche').innerHTML = content;
			ajax.parseandexecutescript(content);
		}
	}
};

var login = 
{
	request: function(method, URL, formID)
	{
		if ((AJAX_login) && (URL) && (document.getElementById('parent.login')))
		{
			URL = ajax.checkURL(URL); //alert(URL);
			AJAX_login.open(method, URL, true);
			AJAX_login.onreadystatechange = login.showContent;
			if (method.toUpperCase() == 'POST')
			{
				AJAX_login.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				AJAX_login.send(form2param(formID));
			}
			else
			{
				AJAX_login.send(null);
			}
		}
	},

	showContent: function() 
	{
		if (AJAX_login.readyState == 4 && document.getElementById('parent.login')) 
		{
			var content = AJAX_login.responseText;
			//alert('login: \n\n' + content);
			document.getElementById('parent.login').innerHTML = content;
			ajax.parseandexecutescript(content);
		}
	}
};

var main = 
{
	request: function(method, URL, formID)
	{
		//alert('Senden einer Anfrage im Hauptbereich\n\nAngeforderte URL : ' + URL);
		if ((AJAX_main) && (URL) && (document.getElementById('parent.main')))
		//if ((AJAX_main) && (URL))
		{
			URL = ajax.checkURL(URL); //alert(URL);
			if (document.getElementById('PageLoading')) { document.getElementById('PageLoading').style.display='block'; }
			AJAX_main.open(method, URL, true);
			AJAX_main.onreadystatechange = main.showContent;
			//document.getElementById('PageLoading').style.display='block';
			if (method.toUpperCase() == 'POST')
			{
				AJAX_main.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//alert('POST : ' + URL + '\n Parameter : ' + form2param(formID));
				AJAX_main.send(form2param(formID));
			}
			else
			{
//alert('GET : ' + URL);
              	AJAX_main.send(null);
			}

		}
		else
		{
			alert('main.request nicht möglich, AJAX_main : ' + (AJAX_main) + ' URL : ' + URL);
		}
	},

	showContent: function() 
	{
		if (AJAX_main.readyState == 4 && document.getElementById('parent.main')) 
		{
			var content = AJAX_main.responseText;
			//alert('Neuer Content in parent.main: \n\n' + content);
			document.getElementById('parent.main').innerHTML = content;
			currentMainDiv.change('parent.main');
			ajax.parseandexecutescript(content);
			//document.getElementById('PageLoading').style.display='none';
		}
	}
};



var menu = 
{
	menu_targetID: '',
	
	request: function(method, URL, targetID)
	{
		menu_targetID = targetID;
		if ((AJAX_menu) && (URL) && (document.getElementById(menu_targetID)))
		{
			URL = ajax.checkURL(URL); //alert(URL);
			AJAX_menu.open(method, URL, true);
			AJAX_menu.onreadystatechange = menu.showContent;
			if (method.toUpperCase() == 'POST')
			{
				AJAX_menu.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				AJAX_menu.send(form2param(formID));
			}
			else
			{
				AJAX_menu.send(null);
			}
		}
	},

	showContent: function() 
	{
		if (AJAX_menu.readyState == 4 && document.getElementById(menu_targetID)) 
		{
			var content = AJAX_menu.responseText;
			//alert('menu: \n\n' + content);
			document.getElementById(menu_targetID).innerHTML = content;
			ajax.parseandexecutescript(content);
		}
	}
};

var suchenach = 
{
	request: function(method, URL, formID)
	{
		if ((AJAX_suchenach) && (URL) && (document.getElementById('parent.suchenach')))
		{
			URL = ajax.checkURL(URL); //alert(URL);
			AJAX_suchenach.open(method, URL, true);
			AJAX_suchenach.onreadystatechange = suchenach.showContent;
			if (method.toUpperCase() == 'POST')
			{
				AJAX_suchenach.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				AJAX_suchenach.send(form2param(formID));
			}
			else
			{
				AJAX_suchenach.send(null);
			}
		}
	},

	showContent: function() 
	{
		if (AJAX_suchenach.readyState == 4 && document.getElementById('parent.suchenach')) 
		{
			var content = AJAX_suchenach.responseText;
			//alert('suchenach: \n\n' + content);
			document.getElementById('parent.suchenach').innerHTML = content;
			ajax.parseandexecutescript(content);
		}
	}
};

var ueberschriften = 
{
	request: function(method, URL, formID)
	{
		if ((AJAX_ueberschriften) && (URL) && (document.getElementById('parent.ueberschriften')))
		{
			URL = ajax.checkURL(URL); //alert(URL);
			AJAX_ueberschriften.open(method, URL, true);
			AJAX_ueberschriften.onreadystatechange = ueberschriften.showContent;
			if (method.toUpperCase() == 'POST')
			{
				AJAX_ueberschriften.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				AJAX_ueberschriften.send(form2param(formID));
			}
			else
			{
				AJAX_ueberschriften.send(null);
			}
		}
	},

	showContent: function() 
	{
		if (AJAX_ueberschriften.readyState == 4 && document.getElementById('parent.ueberschriften')) 
		{
			var content = AJAX_ueberschriften.responseText;
			//alert('ueberschriften: \n\n' + content);
			document.getElementById('parent.ueberschriften').innerHTML = content;
			ajax.parseandexecutescript(content);
		}
	}
};

var warenkorbsmall = 
{
	request: function(method, URL, formID)
	{
		if ((AJAX_warenkorbsmall) && (URL) && (document.getElementById('parent.warenkorbsmall')))
		{
			URL = ajax.checkURL(URL); 
			//alert(URL);			alert(form2param(formID));
			AJAX_warenkorbsmall.open(method, URL, true);
			AJAX_warenkorbsmall.onreadystatechange = warenkorbsmall.showContent;
			if (method.toUpperCase() == 'POST')
			{
				AJAX_warenkorbsmall.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				AJAX_warenkorbsmall.send(form2param(formID));
			}
			else
			{
				AJAX_warenkorbsmall.send(null);
			}
		}
	},

	showContent: function() 
	{
		if (AJAX_warenkorbsmall.readyState == 4 && document.getElementById('parent.warenkorbsmall')) 
		{
			var content = AJAX_warenkorbsmall.responseText;
			//alert ('warenkorbsmall: \n\n' + content);
			document.getElementById('parent.warenkorbsmall').innerHTML = content;
			ajax.parseandexecutescript(content);
		}
	}
};

var katalogansicht = 
{
	request: function(method, URL, formID)
	{
		if ((AJAX_katalogansicht) && (URL) && (document.getElementById('parent.katalogansicht')))
		{
			URL = ajax.checkURL(URL); //alert(URL);
			//if (document.getElementById('PageLoading')) { document.getElementById('PageLoading').style.display='block'; }
			AJAX_katalogansicht.open(method, URL, true);
			AJAX_katalogansicht.onreadystatechange = katalogansicht.showContent;
			if (method.toUpperCase() == 'POST')
			{
				AJAX_katalogansicht.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				AJAX_katalogansicht.send(form2param(formID));
			}
			else
			{
				AJAX_katalogansicht.send(null);
			}
		}
	},

	showContent: function() 
	{
	  
		if (AJAX_katalogansicht.readyState == 4 && document.getElementById('parent.katalogansicht')) 
		{
			if (document.getElementById('PageLoading')) {document.getElementById('PageLoading').style.display='none';};
			var content = AJAX_katalogansicht.responseText;
			document.getElementById('parent.katalogansicht').innerHTML = content;
			ajax.parseandexecutescript(content);
		}
	}
};


var fuss = 
{
	request: function(method, URL, formID)
	{
		if ((AJAX_fuss) && (URL) && (document.getElementById('parent.fuss')))
		{
			URL = ajax.checkURL(URL); //alert(URL);
			AJAX_fuss.open(method, URL, true);
			AJAX_fuss.onreadystatechange = fuss.showContent;
			if (method.toUpperCase() == 'POST')
			{
				AJAX_fuss.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				AJAX_fuss.send(form2param(formID));
			}
			else
			{
				AJAX_fuss.send(null);
			}
		}
	},

	showContent: function() 
	{
		if (AJAX_fuss.readyState == 4 && document.getElementById('parent.fuss')) 
		{
			var content = AJAX_fuss.responseText;
			document.getElementById('parent.banner').innerHTML = content;
			alert('fuss generiert' + content);
			ajax.parseandexecutescript(content);
		}
	}
};

var otherdiv = 
{
  	request: function(method, URL, formID)
	{
	  alert('request otherdiv Method: ' + method + ' URL: ' + URL + ' ' + (document.getElementById(formID)) + '*'); 
		if ((AJAX_otherdiv) && (URL) && (document.getElementById(formID)))
		{
			alert('exist');
			URL = ajax.checkURL(URL); //alert(URL);
			AJAX_otherdiv.open(method, URL, true);
			AJAX_otherdiv.onreadystatechange = otherdiv.showContent;
			if (method.toUpperCase() == 'POST')
			{
				AJAX_otherdiv.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				AJAX_otherdiv.send(form2param(formID));
			}
			else
			{
				AJAX_otherdiv.send(null);
			}
		}
	},

	showContent: function() 
	{
		if (AJAX_otherdiv.readyState == 4 && document.getElementById(formID)) 
		{
			var content = AJAX_otherdiv.responseText;
			//alert('banner: \n\n' + content);
			document.getElementById(formID).innerHTML = content;
			ajax.parseandexecutescript(content);
		}
	}
};
