// © siemax CMS - www.siemax.com 2010

var xmlHttp = new Array(); 


function Prozess(objname,url)
{
this.objname=objname;
this.url=url;
this.counter=0;
this.XmlHttpVersions = new Array(
	'MSXML2.XMLHTTP.6.0',
	'MSXML2.XMLHTTP.5.0',
	'MSXML2.XMLHTTP.4.0',
	'MSXML2.XMLHTTP.3.0',
	'MSXML2.XMLHTTP',
	'Microsoft.XMLHTTP');
this.timer_status=1;
this.init=0;
this.limit=10;
this.anzahl=0;
this.datum_ab=99999999;
this.datum_bis=99999999;
this.zeit_ab=0;
this.zeit_bis=1440;
this.mod = '';
this.divname='';
this.time=0;


if(this.url.match(/\?/g)){
var temp=	this.url.split('?');
var temp2=temp[1].split('&');

	for (i=0; i < temp2.length; i++)
	{
	var temp3=temp2[i].split('=');
	
		switch (temp3[0]) {
			case 'anzahl':
			this.anzahl=temp3[1];
			this.limit=parseInt(temp3[1]);
			break;
			case 'datab':
			this.datum_ab=temp3[1].replace(/-/g,'');
			this.datum_ab=parseInt(this.datum_ab);
			break;
			case 'datbis':
			this.datum_bis=temp3[1].replace(/-/g,'');
			this.datum_bis=parseInt(this.datum_bis);
			break;
			case 'za':
			this.zeit_ab=parseInt(temp3[1]);
			break;
			case 'zb':
			this.zeit_bis=parseInt(temp3[1]);
			break;
			case 'div':
			this.divname=temp3[1];
			var divname=this.divname;
			break;
			case 'int':
			if(temp3[1] > 0) this.time=temp3[1]*1000;
			break;
			case 'mod':
			this.mod=temp3[1];
			break;			
		}
	}
}


	try{
	xmlHttp[objname] = new XMLHttpRequest();
	}
	catch (E)
	{

	this.len = this.XmlHttpVersions.lenght;
		for(var i=0; i < len  && !xmlHttp[objname] ;  i++)
		{
		try {
			xmlHttp[objname]  = new ActiveXObject(XmlHttpVersions[i])		
			}
		catch (E){
			}	
		}
	}
	
this.timer_set = function()
	{
	if(this.mod=='start')
		{
		this.mod="";
		
		if(this.init==0) {
			window.setTimeout(objname+".start();",1);
			this.init=1;
			}
		else window.setTimeout(objname+".start();",this.time);
		}
	if(this.mod=='service')
		{
		this.mod="";
		
		if(this.init==0) {
			window.setTimeout(objname+".start();",1);
			this.init=1;
			}
		else window.setTimeout(objname+".start();",this.time);
		}
	if(this.mod=='start_interval')
		{
		if(this.counter < this.limit){
		if(this.timer_status==1) 
			{
			this.timer_status=0;
			if(this.init==0) {
				window.setTimeout(objname+".start();",1);
				this.init=1;
				}
			else window.setTimeout(objname+".start();",this.time);
			}
		}
		}
	if(this.mod=='start_datum')
		{
		var datum=new Date();
		var tag=datum.getDate();
		if (tag < 10) tag='0'+tag;
		var mon=datum.getMonth() + 1;
		if (mon < 10) mon='0'+mon;
		var jahr=datum.getFullYear();
		var heute=parseInt(jahr+mon+tag);		

		if(heute >= this.datum_ab && heute < this.datum_bis)

		if(this.counter < this.limit){
		if(this.timer_status==1) 
			{
			this.timer_status=0;
			if(this.init==0) {
				window.setTimeout(objname+".start();",1);
				this.init=1;
				}
			else if(this.time > 0) window.setTimeout(objname+".start();",this.time);
			}
		}
		}
	if(this.mod=='start_zeit')
		{
		var datum=new Date();
		var std = datum.getHours();
		var min = datum.getMinutes();

		var jetzt=(std*60)+min;		

		if(jetzt >= this.zeit_ab && jetzt < this.zeit_bis)

		if(this.counter < this.limit){
		if(this.timer_status==1) 
			{
			this.timer_status=0;
			if(this.init==0) {
				window.setTimeout(objname+".start();",1);
				this.init=1;
				}
			else if(this.time > 0) window.setTimeout(objname+".start();",this.time);
			}
		}
		}

	}


this.start = function(){
	this.counter++;
	this.query='?';
	if(xmlHttp[this.objname]){
		try{
		if(this.url.match(/\?/g))this.query='&';
		
		xmlHttp[this.objname].open('GET',this.url+this.query+'c='+this.counter,true);
		xmlHttp[this.objname].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

		xmlHttp[this.objname].onreadystatechange = this.handleRequestStateChange;


		xmlHttp[this.objname].send(null);
		
		}
		catch(E){
			alert ('Keine Verbindung zum Server');
			
			}
		}
	}

	this.handleRequestStateChange = function()
	{
	
		if(xmlHttp[objname].readyState == 4)
		{

			if(xmlHttp[objname].status == 200)
			{

				try
				{
					response = xmlHttp[objname].responseText;
					msgDiv=document.getElementById(divname);
					var status=eval("("+response+")").status;
					//var counter=eval("("+response+")").counter;
					var Objekt=eval(objname); //(selbst);
					msgDiv.innerHTML=eval("("+response+")").msg;
					if(status=='set_counter')Objekt.counter=0;
					Objekt.timer_status=1;
					Objekt.timer_set();

				}
				catch(E)
				{
				alert ('Fehler beim Lesen der Meldung');	
				}
			}
			else {
			alert('Fehler mit dem Daten einlesen'+xmlHttp[objname].responseText)
			}
		}
	//this.timer_set();
	}
this.timer_set();

}

