var xmlHttp,element,action,refPage,interval,sendForm,oldValue;

document.onsubmit = function (e) {

	var form = e.target;
	sendForm = form;

	//Två arrayer, en för information för mailheaders
	// och en för datan som finns i formuläret
	var vitalInformation = new Array();
	var otherInformation = new Array();
	var faults = new Array();
	
	//Går igenom alla element i formuläret
	for(var i in form.elements)
	{
		//Plockar ut de som är ett objekt och har ett ID
		if(form[i] && form[i].id)
		{
			//Variabler
			var type	= form[i].id;	
			var name	= form[i].title;
			
			if(form[i].type == "select-one")
				var value = form[i].options[form[i].selectedIndex].value;
			else
				var value = form[i].value;
			
			var checkType="", checkMin="", checkMax="";
			var checkVariables = form[i].className.split("|");
			if(checkVariables[0]) checkType	= checkVariables[0];
			if(checkVariables[1]) checkMin	= checkVariables[1];
			if(checkVariables[2]) checkMax	= checkVariables[2];

			
			//Specialfall för <SELECT>-element
			if(form[i].type == "select-one")
			{
				if(checkType == "REQUIRED" && value == "")
					faults.push(name + ": Ett val måste göras!");
				
			}
			//För övriga element om fältet ska kollas eller om värde finns
			else if(checkType == "REQUIRED" || checkType == "OPTIONAL" || value != "")
			{
				var pattern = "";
				var msg = "";
				
				switch(type)
				{
					case "mix":			msg = ""; break;
					case "name":		pattern = /^([A-ZÅÄÖa-zåäöéè -]+)$/; msg = "Endast bokstäver."; break;
					case "city":		pattern = /^([A-ZÅÄÖa-zåäöéè -]+)$/; msg = "Endast bokstäver."; break;
					case "firstname":	pattern = /^([A-ZÅÄÖa-zåäöéè -]+)$/; msg = "Endast bokstäver."; break;
					case "lastname":	pattern = /^([A-ZÅÄÖa-zåäöéè -]+)$/; msg = "Endast bokstäver."; break;
					case "username":	pattern = /^[a-zA-ZåäöÅÄÖ0-9_]+$/; msg = "Ogiltiga tecken!"; break;
					case "password":	pattern = /^[0-9a-zåäöA-ZÅÄÖ!@#£&¤$%\/\\()\]\[{}+?~*_\-.,:;<>]+$/; type = "Lösenord"; msg = "Ogiltiga tecken!"; break;
					case "street":		pattern = /^[A-ZÅÄÖa-zåäö0-9 :]+$/; msg = "Endast bokstäver, siffror och \":\"!"; break;
					case "number":		pattern = /^\d+$/; msg = "Inte ett giltigt tal!"; break;
//					case "phone":		pattern = /^(\d{1,4})\-(\d{4,8})$/; msg = "E!"; break;
					case "email":		pattern = /^(\&.+)|((\w.+)\@(\w.+)\.(\w{2,4}))$/; msg = "Ingen giltig e-postadress!"; break;
					case "link":		pattern = /.+/; msg = "Ingen giltig länk!"; break;
					case "date":		pattern = /^(\d{4})-(\d{2})-(\d{2})$/; msg = "Fel format. Ska vara ÅÅÅÅ-MM-DD!"; break;
					case "hour":		pattern = /^([0-2]{1})(\d{1})$/; msg = "Ange med två siffror!"; break;
					case "minute":		pattern = /^([0-5]{1})(\d{1})$/; msg = "Ange med två siffror!"; break;
				}
					
				//Kontrollerar om fältet matchar mönstret
				if(checkType == "REQUIRED" && pattern && value.search(pattern) == -1)
				{
					form[i].style.borderColor = "red";
					faults.push(name + ": " + msg);
				}
				//Kontrollerar om fältets värde är tillräckligt långt
				else if(checkMin && value.length < checkMin)
				{
					form[i].style.borderColor = "red";
					faults.push(name + ": För kort, måste vara minst " + checkMin + " tecken!");
				}
				//Kontrollerar om fältes värde är tillräckligt kort
				else if(checkMax && value.length > checkMax)
				{
					form[i].style.borderColor = "red";
					faults.push(name + ": För långt, får max vara " + checkMax +" tecken!");
				}
				else form[i].style.borderColor = "black";
				
			}
			
			//Om det är någon vital information sparas det i en separat array
			if( type == "to" || type == "toname" || type == "name" || type == "firstname" || 
				type == "lastname" || type == "subject" || type == "email" || type == "responsemsg")
				vitalInformation[type] = encodeURIComponent(form[i].value);
			else
				otherInformation.push(new Array(encodeURIComponent(form[i].title),
										encodeURIComponent(form[i].value)));
		}
	
	}
	
	//Meddelar om fel har uppstått
	if(faults.length > 0)
	{
	
		var str = faults.length + " fel inträffade:\n";
		for(var i = 0; i < faults.length; i++)
			str += " • " + faults[i] + "\n";
			
		alert(str);
	}
	else
	{
		//Om namnet är uppdelat på förnamn och efternamn
		if(!vitalInformation["name"])
			vitalInformation["name"] = vitalInformation["firstname"] + " " + vitalInformation["lastname"];
			
		//Om avsändaradress saknas
		if(!vitalInformation["email"])
			vitalInformation["email"] = "noreply@lupef.se";
		
		//Om mottagaradress saknas
		if(!vitalInformation["to"])
			vitalInformation["to"] = "kontakt@lupef.se";
		
		//Om mottagarnamn saknas
		if(!vitalInformation["toname"])
			vitalInformation["toname"] = "Lupef";
			
		//Lägger in formulärdatan i meddelandet
		var msg = "";
		for(var i = 0; i < otherInformation.length; i++)
		{
			if(otherInformation[i][1])	
				msg += otherInformation[i][0] +": " + otherInformation[i][1] + "<br><br>";
		}
		
		var params = "?toMail=" + vitalInformation["to"] + "&toName=" + vitalInformation["toname"] + "&fromMail=" + 
						vitalInformation["email"] + "&fromName=" + vitalInformation["name"] + "&subject=" + 
						vitalInformation["subject"] + "&message=" + msg;
						
		//Går igenom alla element i formuläret
		for(var i in form.elements)
		{
			//Plockar ut de som är ett objekt och har ett ID
			if(form[i] && (form[i].id || form[i].type == "submit"))
			{
				//Om det är en skicka-knapp, skriv ut att formuläret skickas
				if(form[i].type == "submit")
				{
					oldValue = form[i].value;
					form[i].value = "Skickar, vänta...";
				}
				//Inaktivera ändringar i fältet
				form[i].disabled = true;
			}
		}
						
		//Skickar mail		
		getValue("/incs/mail.php" + params,"sentMail");
		
	}
	
	return false;	
	
}

function sentMail(value)
{

	//Mailet kunde skickas
	if(value)
	{
		if(document.getElementById("responsemsg"))
			alert(document.getElementById("responsemsg").value.replace(/\<br\>/g,"\n"));
			
		if(parent.myLightWindow.element != null)
			setTimeout("closeWindow()",1000);
		else
			window.location.href=window.location.href;		
		
	}
	else
	{
		alert("Meddelandet kunde inte skickas!\nFörsök igen senare!");
		
		//Går igenom alla element i formuläret
		for(var i in sendForm.elements)
		{
			//Plockar ut de som är ett objekt och har ett ID
			if(sendForm[i] && (sendForm[i].id || sendForm[i].type == "submit") )
			{
				sendForm[i].disabled = false;
				if(sendForm[i].type == "submit") sendForm[i].value = oldValue;
				
			}
		}
	}

}

function closeWindow()
{
	parent.myLightWindow.deactivate();
}

function openWindow(url,width,height)
{
	egenskaper="toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width="+width+",height="+height+"";
	
	unik=new Date();
	unik=unik.getSeconds()+"_"+unik.getMinutes()+"_"+unik.getHours();
	window.open(url,unik,egenskaper);
}

function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}

		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	
	return xmlHttp;
}

function visitPage(url)
{
				
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null) { alert ("Your browser does not support AJAX!");	return; }	
	
	var url=url
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null)	
}

function getPage(url,ele)
{
	element=ele;
				
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null) { alert ("Your browser does not support AJAX!");	return; }	

	xmlHttp.onreadystatechange=presentPage;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null)	
}

function presentPage() 
{
	if (xmlHttp.readyState==4)		
		document.getElementById(element).innerHTML=xmlHttp.responseText;
			
}

function getValue(url,func)
{
	action=func;
				
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null) { alert ("Your browser does not support AJAX!");	return; }	

	xmlHttp.onreadystatechange=presentValue;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null)	
}

function presentValue() 
{

	if (xmlHttp.readyState==4)
	{
		var test = xmlHttp.responseText;
		test = test.replace(/"/g,"\\\"");
		test = test.replace(/'/g,"\\\'");
		test = test.replace(/\r/g,"");
		test = test.replace(/\n/g,"");
		test = test.replace(/\t/g,"");
		setTimeout(action+"('"+test+"')",1);
	}
			
}

function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}



function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}


//###############################################################################################################################################


function documentHeight(returnAll)
{
	height = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		height = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		height = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		height = document.body.clientHeight;
	}
	
	if(returnAll) return height+f_scrollTop();
	return height;
}

function documentWidth() 
{
	var width = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		width = window.innerWidth;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		width = document.documentElement.clientWidth;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		width = document.body.clientWidth;
	}
	
	return width;
}

function box(page)
{

	var cover = "cover";
	var popup = "popup";
	
	//Skapar det övertäckande lagret
	var newdiv = document.createElement("div");
	newdiv.setAttribute("id",cover);
//	newdiv.setAttribute("onclick","close_Box()");
	document.body.appendChild(newdiv);
	
	//Skapar popup-boxen
	var newdiv = document.createElement("div");
	newdiv.setAttribute("id",popup);
	document.body.appendChild(newdiv);
	
	
	var popupBox = document.getElementById(popup);
	
	document.getElementById(cover).style.height= ( document.getElementById("footer").offsetTop + 190) + "px";
	document.getElementById(popup).innerHTML="<div id=\"closeBox\" onclick=\"close_Box()\"></div>";
	
	getValue("/"+page,"got_Box");
	
}


function got_Box(value)
{

	var popup = document.getElementById("popup");
	popup.innerHTML += value;
	
	var width = popup.clientWidth-20;
	var maxWidth = documentWidth()*0.7;
	if(width>maxWidth)
	{
		width = maxWidth;
		popup.style.width=width+"px";
	}
	
	var height = popup.clientHeight-20; 
	var maxHeight = documentHeight()-60;
	if(height>maxHeight)
	{
		height = maxHeight;
		popup.style.height=height+"px";
	}
		
	
	popup.style.top = documentHeight()/2 + f_scrollTop() - height/2 - 10 +"px";
	popup.style.left = documentWidth()/2 - width/2 - 10 + "px";
	popup.style.visibility="visible";

}


function close_Box()
{
	
	document.body.removeChild(document.getElementById("cover"));
	document.body.removeChild(document.getElementById("popup"));

}

function delay_close_Box()
{
	setTimeout("close_Box()",2000);
}

var boxmenus = new Array();
function initMenuBoxes()
{
	getValue("/incs/menu.php","gotMenuBoxes");
}

function gotMenuBoxes(value)
{

	var pics = new Array();
	
	var menus = value.split("|");
	for(var i=0; i < menus.length; i++)
	{
		var subMenus = menus[i].split("#");
		var folder = subMenus[0];
		
		//var width = document.getElementById(folder).offsetWidth;
		if(document.getElementById(folder) && document.images)
		{
			pics[i] = new Image(document.getElementById(folder).offsetWidth,40); 
			pics[i].src = folder.src + "&h=1";
		}

//		if(folder && subMenus.length>2)
//		{
		boxmenus[folder] = "";
			for(var j = 1; j < subMenus.length-1; j++)
			{
				var pageinfo = subMenus[j].split("~");
				boxmenus[folder] += "<a href=\"/"+folder+"/"+pageinfo[1]+"\" onmouseover=\"stillHoldingMenu()\">"+pageinfo[0]+"</a>";
//				alert(pageinfo);
				
			}
//		}
	
	}
	
}

var currentMenu ="";
var currentTimeout = 0;

function menu(folder)
{

	if(folder == currentMenu) stillHoldingMenu();
	else clearTimeout(currentTimeout);
	if(currentMenu) hideMenu();

	var obj = document.getElementById(folder);

	if(boxmenus[folder])
	{
		
		obj.src = obj.src + "&h=1";
		
		var box = document.getElementById("menubox");
		box.style.width = "auto";
		box.innerHTML = boxmenus[folder];
		box.style.display = "block";
		
		box.style.left = (obj.offsetLeft-3)+"px";
		if(box.offsetWidth < (obj.offsetWidth-16))
			box.style.width = (obj.offsetWidth-16)+"px";
		
		
		box.onmouseover = function() { stillHoldingMenu();}
		box.onmouseout = function() { beginHideMenu();}
		
		box.style.visibility = "visible";
		
		currentMenu = folder;

	}

}

var x = 0;

function beginHideMenu()
{
	currentTimeout = setTimeout("hideMenu()",300);
}

function stillHoldingMenu()
{
	clearTimeout(currentTimeout);
}

function hideMenu()
{
	if(!currentMenu) return;
	document.getElementById("menubox").style.display="none";
	document.getElementById(currentMenu).src = document.getElementById(currentMenu).src.replace("&h=1","");
	currentMenu = "";
}

var saved_summaries = new Array();

function showHideNews(id)
{
	document.getElementById("switch_"+id).innerHTML = "<img src=\"/gfx/loading_small.gif\">";
	setTimeout("hasWaited("+id+")",500);
}

function hasWaited(id)
{

	var newsbox = document.getElementById("newstext_"+id);
	var summary = document.getElementById("summary_"+id);
	var newsswitch = document.getElementById("switch_"+id);
	
	if(newsbox.style.display == "none")
	{
	
		newsbox.style.display = "block";
		summary.style.display = "none";
	
		newsswitch.innerHTML = "DÖLJ NYHETEN";
	}
	else
	{
	
		newsbox.style.display = "none";
		summary.style.display = "block";
	
		newsswitch.innerHTML = "VISA HELA NYHETEN";
	}	

}

var offset = 0;
function getMorePics() {

	offset += 9;

	document.getElementById("morepics").innerHTML = "<img src=\"/gfx/loading_small.gif\">";
	setTimeout("getValue('/phppages/galleri-mera-bilder.php?offset="+offset+"','gotPics')",500);

}

function gotPics(value) {

	if(value == "false")
	{	
		alert("Det finns inga fler album!");
		document.getElementById("morepics").innerHTML = "";
	}
	else
	{
		document.getElementById("morepics").innerHTML = "Fler album";
		document.getElementById("albumBox").innerHTML += value;
	}
}

