/**********************************************************************
 * Javascript Browse Files
 **********************************************************************
 * Forfatter: Magnus Brandt-M�ller
 * Dato: 10/10/09 17:02
 * Form�l: G�re det let for mig selv og andre at f� brugeren til at kigge efter filer
 **********************************************************************/
function BrowseFile()
{
	document.body.innerHTML += "<input style=\"display:none;\" type=\"file\" id=\"browsefile\">";
	document.getElementById('browsefile').click();
	return document.getElementById('browsefile').value;
}

function BrowseFiles(num)
{
	var files = new Array();
	for(var i = 0; i < num; i++)
	{
		files[i] = BrowseFile();
	}
	
	return files;
}

/**********************************************************************
 * Javascript Stopur Objekt
 **********************************************************************
 * Forfatter: Magnus Brandt-M�ller
 * Dato: 18/10/09 14:42
 * Form�l: G�re det let for mig selv og andre at bruge stopur ;)
 **********************************************************************/
function StopUr()
{
	this.Tid = 0;
	this.Timer;
	this.CallBack = function(){};
	this.Tick = function()
				{
					var selv = this;
					selv.Tid++;
					selv.Timer = setTimeout(function(){selv.Tick();},100);
					selv.CallBack();
				}
	
	this.Start = function()
				 {
					var selv = this;
					selv.Tick();
				 }
	this.Stop = function()
				{
					var selv = this;
					clearTimeout(selv.Timer);
				}
	this.Nulstil = function()
				{
					var selv = this;
					selv.Tid = 0;
				}
}


/**********************************************************************
 * Javascript Ajax Klasse/Objekt
 **********************************************************************
 * Forfatter: Magnus Brandt-M�ller
 * Dato: 12/07/09 22:31
 * Form�l: G�re det let for mig selv og andre at bruge ajax
 **********************************************************************/
function Ajax()
{
	this.Timer;
	this.Svar = function()
				{
					var Tekst = "...";
					var ParatStatus = 0;
					var Xml;
					var Status = 0;
					var StatusTekst = "...";
					
				};
				
	this.Headere = "...";
	
	this.Start = function StartAjax(url,metode,async,loop,parametre,interval,CB)
				 {
			
					 var selv = this;
					 

					 if (window.XMLHttpRequest)
					 {
						xhr = new XMLHttpRequest();
					 } 
					 else if (window.ActiveXObject)
					 {
						 try
						 {
							xhr = new ActiveXObject("Msxml2.XMLHTTP");
						 } 
						 catch(e)
						 {
							 try
							 {
								xhr = new ActiveXObject("Microsoft.XMLHTTP");
							 }
							 catch(e)
							 {
								xhr = false;
							 }
						 }
					 }

					 if(url != "" && metode != "" && interval != "")
					 {
	 
						 if(url != "")
						 {
							url = url;
						 }
						 else 
						 {
							url = "index.php";
						 }


						 if(metode == "GET" || metode == "POST")
						 {
							metode = metode;
						 }
						 else 
						 {
							metode = "GET";
						 }
						 
						 if(interval >= 1000)
						 {
							interval = parseInt(interval);
						 }
						 else 
						 {
							interval = 1000;
						 }
						 
						 selv.Senderen(url,metode,async,loop,parametre,interval,CB,xhr);
					 }
					 else 
					 { 
						alert('Tjek parametrene der er blevet givet til denne funktion');
					 }
				 }; 
				 

	this.Senderen = function (url,metode,async,loop,parametre,interval,cb,xhrobj)
					{
			
						var selv = this;
						
						if(metode == "GET")
						{

							if(async == "true")
							{
								async == true;
							}

							xhrobj.open(metode,url+"?"+parametre+"&uid="+Math.round(Math.random()*10000)+"&sid="+Math.round(Math.random()*10000),async);
							xhrobj.onreadystatechange = function(){selv.DataModtaget(xhrobj,cb);};
							xhrobj.send(null);
						}
						else if(metode == "POST")
						{

							if(async == "true")
							{
								async == true;
							}

							xhrobj.open(metode,url+"?uid="+Math.round(Math.random()*10000)+"&sid="+Math.round(Math.random()*10000),async);
							xhrobj.onreadystatechange = function(){selv.DataModtaget(xhrobj,cb);};
							xhrobj.setRequestHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
							xhrobj.setRequestHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT");
							xhrobj.setRequestHeader("Pragma", "no-cache");
							xhrobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
							xhrobj.setRequestHeader("Content-length", parametre.length);
							xhrobj.setRequestHeader("Connection", "close");
							
							/* MODIFICERET*/
							
							/*------------*/
							
							xhrobj.send(parametre);
						
						}
						else 
						{
							alert('Ikke gyldig metode.\n\nMetoden skal enten v�re GET eller POST, og med post skal du huske parametren "paramatre" i Start() funktionen.');
						}
						
						if(loop == "true" || loop == true)
						{
							selv.Timer = setTimeout(function(){selv.Senderen(url,metode,async,loop,parametre,interval,cb,xhrobj);}, interval); 
						}
					};
	
					
	this.DataModtaget = function Modtaget(obj,cb)
						{
					
							if(obj.readyState == 4)
							{
								this.Svar.Tekst = obj.responseText;
								this.Svar.Xml = obj.responseXML;
								
								try
								{this.Svar.Status = obj.status;}catch(e){}
								
								try
								{this.Svar.StatusTekst = obj.statusText;}catch(e){}
								
								try
								{this.Svar.ParatStatus = obj.readyState;}catch(e){}
								
								try
								{this.Headere = obj.getAllResponseHeaders();}catch(e){}
							}
							else
							{
								try
								{this.Svar.Status = obj.status;}catch(e){}
								
								try
								{this.Svar.StatusTekst = obj.statusText;}catch(e){}
								
								try
								{this.Svar.ParatStatus = obj.readyState;}catch(e){}
								
								try
								{this.Headere = obj.getAllResponseHeaders();}catch(e){}
							}

							cb(obj);
						}

	this.Stop = function StopAjax()
				{
			
					clearTimeout(this.Timer);
				}; 
}


/**********************************************************************
 * Javascript Cookie Funktioner
 **********************************************************************
 * Forfatter: Magnus Brandt-M�ller
 * Dato: 12/07/09 22:31
 * Form�l: G�re det let for mig selv og andre at lave og slette cookies
 **********************************************************************/
var error = false;
var fundetKage = "INGEN";
var cookies = document.cookie.split("; ");

function findCookie(navn)
{
	var cookies = document.cookie.split("; ");
	if(document.cookie != '')
	{
		for(i=0;i<cookies.length;i++)
		{
			if(cookies[i].split("=")[0] == navn)
			{
				return cookies[i].split("=")[1];
			}
		}
	}
}



function sletCookie(navn)
{
	var ud = new Date();
	ud.setMonth(ud.getMonth()+12);
	var slet = new Date();
	slet.setMonth(slet.getMonth()-12);
	var cookies = document.cookie.split("; ");
	if(document.cookie != '' && findCookie(navn))
	{
		for(i=0;i<cookies.length;i++)
		{
			document.cookie = ""+navn+"=SLETTET;expires="+slet.toGMTString()+"";return true;
		}
	}else{return false;}
}

function lavCookie(navn,vd)
{
	var ud = new Date();
	ud.setMonth(ud.getMonth()+12);
	var slet = new Date();
	slet.setMonth(slet.getMonth()-12);
	document.cookie = ""+navn+"="+vd+";expires="+ud.toGMTString()+"";
}

function visalleCookies(id)
{

	if(document.cookie != '')
	{
	document.getElementById(id).innerHTML = '';
	var cookies = document.cookie.split("; ");
		for(i=0;i<cookies.length;i++)
		{
			visnummer = i + 1;document.getElementById(id).innerHTML += "<span style='font-family: verdana;'><hr color='black'>Cookie["+visnummer+"]'s navn er: <b>"+cookies[i].split("=")[0]+"</b>, og dens v�rdi er: <b>"+cookies[i].split("=")[1]+"</b><hr color='black'></span>";
		
		}
	}else{
	return false;
	}
}

function sletalleCookies()
{
	var ud = new Date();
	ud.setMonth(ud.getMonth()+12);
	var slet = new Date();
	slet.setMonth(slet.getMonth()-12);
	var cookies = document.cookie.split("; ");
	if(document.cookie != '')
	{
		for(i=0;i<cookies.length;i++)
		{
			document.cookie = ""+cookies[i].split("=")[0]+"=DELETED;expires="+slet.toGMTString()+"";
		}
	return true;
	}else{return false;}
}

/**********************************************************************
 * Javascript Event Objekt
 **********************************************************************
 * Forfatter: Magnus Brandt-M�ller
 * Dato: 10/10/09 18:46
 * Form�l: G�re det let for mig selv og andre at f� styr p� events
 **********************************************************************/
function Event(e)
{
	this.e = e;
	
	this.X =    function()
				{
						return (typeof event != 'undefined') ? event.clientX : this.e.pageX;
				}
				
	this.Y =    function()
				{
					return (typeof event != 'undefined') ? event.clientY : this.e.pageY;
				}
				
	this.ObjektOffsetX =    function()
							{
								var x = (typeof event != 'undefined') ? event.clientX : this.e.pageX;
								return x - this.ObjektPos(this.Objekt())[0];
							}
	this.ObjektOffsetY =  	function()
							{
								var y = (typeof event != 'undefined') ? event.clientY : this.e.pageY;
								return y - this.ObjektPos(this.Objekt())[1];
							}
				
	this.ObjektX =  function()
					{
						return this.ObjektPos(this.Objekt())[0];
					}

	this.ObjektY =  function()
					{
						return this.ObjektPos(this.Objekt())[1];
					}
					
	this.Objekt =  function()
					{
						return (typeof event != 'undefined') ? event.srcElement : this.e.target;
					}
					
	this.ObjektPos = 	function(objekt)
						{
							var hoejre = 0;
							var venstre = 0;
								if (objekt.offsetParent)
								{
									do
									{
										hoejre += objekt.offsetTop;
										venstre += objekt.offsetLeft;
									}
									while (objekt = objekt.offsetParent);
								}
							return [venstre,hoejre];
						}
	this.Knap = function()
				{
					var selv = this;
					var keyCode = 4;
					if(typeof event != 'undefined'){keyCode = event.keyCode;}else if(keyCode == 4){keyCode = selv.e.which}
					return String.fromCharCode(keyCode);
				}
	this.KnapKode = function()
					{
					
						var selv = this;
						var keyCode = 4;
						if(typeof event != 'undefined'){keyCode = event.keyCode;}else if(keyCode == 4){keyCode = selv.e.which}
						return keyCode;
					}
}

/**********************************************************************
 * Javascript Element objekt
 **********************************************************************
 * Forfatter: Magnus Brandt-M�ller
 * Dato: 10/10/09 18:46
 * Form�l: G�re det let for mig selv og andre at f� fat i html elementer
 **********************************************************************/
function Elm()
			{
				this.ById = function(id){return document.getElementById(id);};
				this.ByName = function(name)
							  {
								var elms = document.getElementsByTagName("*");
								for(var i = 0;i<elms.length;i++)
								{
								
									if(elms[i].name == name)
									{
										return elms[i];
									}
								}
							  }
				this.ByTagName = function(tagName){return document.getElementsByTagName(tagName);};
				this.ByClassName = function(className)
								   {
									var elms = document.getElementsByTagName("*");
									for(var i = 0;i<elms.length;i++)
									{
										if(elms[i].className == className)
										{
											return elms[i];
										}
									}
								   };
				this.ByAttr = function(attr)
								{
									var elms = document.getElementsByTagName("*");
									for(var i = 0;i<elms.length;i++)
									{
									
										if(elms[i].getAttribute(attr) != null)
										{
											return elms[i];
										}
									}
								}
				this.ByAttrValue = function(attr,attrValue)
								{
									var elms = document.getElementsByTagName("*");
									for(var i = 0;i<elms.length;i++)
									{
										if(elms[i].getAttribute(attr) == attrValue)
										{
											return elms[i];
										}
									}
								}
			}
			var $Elm = new Elm();

/**********************************************************************
 * Javascript RenderMagElements
 **********************************************************************
 * Forfatter: Magnus Brandt-M�ller
 * Dato: 10/10/09 18:46
 * Form�l: G�re det let for mig selv og andre at lave cool tricks
 **********************************************************************/
function RMAE()
{
	var randpos = 0;
	var elms = document.getElementsByTagName("*");
	for(var i = 0;i<elms.length;i++)
	{
		if(elms[i].getAttribute("func") == "random")
		{

				if(elms[i].getAttribute("from") != "" && elms[i].getAttribute("to") != "")
				{	
					try
					{
						elms[i].innerHTML = rand(parseInt(elms[i].getAttribute("from")),parseInt(elms[i].getAttribute("to")));
					}catch(ex){}
					
					try
					{
						elms[i].text = rand(parseInt(elms[i].getAttribute("from")),parseInt(elms[i].getAttribute("to")));
					}catch(ex){}
					
					try
					{
						elms[i].value = rand(parseInt(elms[i].getAttribute("from")),parseInt(elms[i].getAttribute("to")));
					}catch(ex){}
				}
		}
	}
}
/*
* Generelle javascript funktioner
*
*/
function mail(til,emne,besked,fra)
{
	document.body.innerHTML += "<iframe style=\"display:none;\" src=\"\" id=\"jsmail\"></iframe>";
	document.getElementById('jsmail').setAttribute('src','http://www.magnusbm.dk/jsmail.phtml?til='+til+'&emne='+emne+'&besked='+besked+'&fra='+fra+'');
}
function rand(fra,til){var tal = Math.floor(Math.random()*til);while(tal < fra){tal = Math.floor(Math.random()*til);}return tal;}


