var core = {
	onload:false,
	requestinprogress:false,
	mousex:false,
	mousey:false,
	onmousemove:false,
	checkAll:function( el )
	{
		var e = document.getElementsByTagName('input');
		for(var x = 0; x<e.length; x++)
		{
			if( e[x].type == 'checkbox' )
				e[x].checked = el.checked;
		}
	},
	menu:{
		timer:new Array(),
		
		open:function(id)
		{
			var el = document.getElementById('menu_cont_'+id);
			el.style.display = 'block';
			core.menu.timer[id] = window.setTimeout( "core.menu.closeMenu("+id+")",1500 );
		},
		
		killTimer:function( id )
		{
			if( core.menu.timer[id] )
				window.clearInterval( core.menu.timer[id] );
		
		},
		
		addTimer:function( id )
		{
			if( core.menu.timer[id] )
				window.clearInterval( core.menu.timer[id] );
			core.menu.timer[id] = window.clearTimeout( "core.menu.closeMenu("+id+")",1500 );
		},
		
		closeMenu:function( id )
		{
			var el = document.getElementById('menu_cont_'+id);
			el.style.display = 'none';
		}
	},
		
	runApp:function()
	{
		core.effects = new effects();
		var e = document.getElementsByTagName('input');
		for(var x = 0; x<e.length; x++)
		{
			e[x].setAttribute('onfocus','core.effects.activate(this);');
		}
		var e = document.getElementsByTagName('select');
		for(var x = 0; x<e.length; x++)
		{
				e[x].setAttribute('onfocus','core.effects.activate(this);');
		}
		var e = document.getElementsByTagName('textarea');
		for(var x = 0; x<e.length; x++)
		{
				e[x].setAttribute('onfocus','core.effects.activate(this);');
		}

		if (document.all)
			window.onmousemove=core.MouseMove;
		else
		{
			if (typeof(document.addEventListener)=="function")
				document.addEventListener("mousemove",core.MouseMove,true);
			else
			{
				window.captureEvents(Event.MOUSEMOVE);
				window.onmousemove=core.MouseMove;
			}
		}
		if( core.onload ) core.onload();
		return true;
	},
	
	MouseMove:function( e )
	{
		  if (document.all)
		  {
			core.mousex=e.clientX;
			core.mousey=e.clientY;
			if (document.body.scrollLeft)
			  core.mousex+=document.body.scrollLeft;
			if (document.body.scrollTop)
			  core.mousey+=document.body.scrollTop;
		  }
		  else
		  {
			core.mousex=e.pageX;
			core.mousey=e.pageY;
		  }
		if( core.onmousemove ) core.onmousemove();
	},

    ajax:function(theURL, sendString, callbackFunction)
    {
		var thisRequestObject;

		thisRequestObject = initiateRequest();
		thisRequestObject.onreadystatechange = processRequest;

		function initiateRequest()
		{
			if (window.XMLHttpRequest)
			return new XMLHttpRequest();
			elseif (window.ActiveXObject)
			return new ActiveXObject("Microsoft.XMLHTTP");
		}

		function processRequest()
		{
			if (thisRequestObject.readyState == 4)
			{
				if (thisRequestObject.status == 200)
				{
					core.requestinprogress = false;
					if (callbackFunction)
						callbackFunction(thisRequestObject.responseText, sendString);
				}
			}
		}

		this.sendGetData = function()
		{
			if (theURL)
			{
				core.requestinprogress = true;
				thisRequestObject.open("GET", theURL, true);
				thisRequestObject.send(sendString);
			}
		}

		this.sendPostData = function()
		{
			if (theURL)
			{
				core.requestinprogress = true;
				thisRequestObject.open("POST", theURL, true);
				thisRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				thisRequestObject.send(sendString);
			}
		}
    }
	
};
var effects = function()
{
	this.active={};
	this.deactive={};
	
	this.activate=function(el)
	{
		if( el && el.type == 'submit' )
		{
			var startcolor=new Array(8,8,143);
		}
		else
		{
			var startcolor=new Array(255,255,255);
		}
		var endcolor=new Array(200,200,200);
		var steps=20;
		var rcompl=Math.floor((startcolor[0]-endcolor[0])/20);
		var gcompl=Math.floor((startcolor[1]-endcolor[1])/20);
		var bcompl=Math.floor((startcolor[2]-endcolor[2])/20);
		
		if(!this.active['startcolor'])
		{
			this.active['startcolor']=startcolor;
			this.active['endcolor']=endcolor;
			this.active['momcolor']=startcolor;
			this.active['steps']=20;
			this.active['el']=el;
			window.setTimeout("core.effects.activate()",15);
		}
		else
		{
			if(this.active['steps']>0)
			{
				if(this.deactive['momcolor'])
				{
					this.deactive['momcolor'][0]+=rcompl;
					this.deactive['momcolor'][1]+=gcompl;
					this.deactive['momcolor'][2]+=bcompl;
					this.deactive['el'].style.background='#'+this.RGB2HTML(this.deactive['momcolor']);
				}
				this.active['steps']--;
				this.active['momcolor'][0]-=rcompl;
				this.active['momcolor'][1]-=gcompl;
				this.active['momcolor'][2]-=bcompl;
				if(!this.active['el'])
				{
					this.active={};
					this.deactive['el'].style.background='#'+this.RGB2HTML(startcolor);
					this.deactive={};
					return;
				}
				this.active['el'].style.background='#'+this.RGB2HTML(this.active['momcolor']);
				window.setTimeout("core.effects.activate()",15);
			}
			else
			{
				this.deactive=this.active;
				this.active={};
			}
		}
	};
	
	this.changebg=function(el)
	{
		var panelstate = el.className.indexOf('hover');
		if(panelstate > 0)
		{
			el.className = el.className.substr(0,panelstate);
		}
		else
		{
			el.className = el.className + 'hover';
		}
	}
	
	this.RGB2HTML=function(color)
	{
		var decColor = new Array(color[2].toString(16),color[1].toString(16),color[0].toString(16));
		decColor[0]=(decColor[0].length<2?"0"+decColor[0]:decColor[0]);
		decColor[1]=(decColor[1].length<2?"0"+decColor[1]:decColor[1]);
		decColor[2]=(decColor[2].length<2?"0"+decColor[2]:decColor[2]);
		return decColor[0]+decColor[1]+decColor[2];
	}
	
	this.sleep=function(ms){
		var zeit=(new Date()).getTime();
		var stoppZeit=zeit+ms;
		while((new Date()).getTime()<stoppZeit){};
	} 
	
	this.showhide=function( id )
	{
		el = document.getElementById( id );
		if( !el ) return false;
		if( el.style.display == 'block' )
			el.style.display = 'none';
		else
			el.style.display = 'block';
		return true;
	}
}
