//skrevet fra bunden af, af nicklas jacobsen


/*
De functioner man kan gøre brug af:
NeverAgain()		Hvilket gør at popup'en aldrig kommer frem på brugerens computer igen, før databasen er blevet resat.
CloseForSession		Hvilket gør at popup'en ikke kommer frem så længe brugeren er på sidden, men kommer tilbage næste gang han/hun besøger sidden
ComAgain			Hvilket gør at popup'en bliver lukket og først kommer frem 24 timer efter.
JustClose			Hvilket bare lukker popup'en. mest tænkt som en function der bliver kaldt af andre functioner, eller som test function.
*/


//Ajax server-side url
var url = "/popup_v2/server_side.php";

//Den tid det skal tage før PopUpen bliver vist igen, hvis ComAgain functionen bliver kaldt
var ComAgainTime = 86400;

//Ajax objeketet, som bliver init"et senere
var xmlHttp;


function initPopUp()
{
	//init Html delen
	initHtml();
	
	//init Ajax objektet
	initAjax();

	//tjek databasen for ip
	send_request("action=check_db");
	
}

function initHtml()
{
	//smider PopUp css'en i head
	var css = document.createElement("link");
	css.setAttribute("type","text/css");
	css.setAttribute("rel","stylesheet");
	
	if(navigator.appName == "Microsoft Internet Explorer")
	{
		css.setAttribute("href","/popup_v2/PopUpStyle_IE_sucks.css");

		document.body.style.overflow = "hidden";
	}else{
		css.setAttribute("href","/popup_v2/PopUpStyle.css");
	}
	
	document.getElementsByTagName("head")[0].appendChild(css);
	
	//fader Div
	var FadeDiv = document.createElement("div");
	FadeDiv.setAttribute("id","PopFadeDiv");
	
	//bagvedliggende Div
	var OverDiv = document.createElement("div");
	OverDiv.setAttribute("id","PopOverDiv");
	
	//forreste Div (den betjendene div)
	var ForDiv = document.createElement("div");
	ForDiv.innerHTML = "LOADING...";
	ForDiv.setAttribute("id","PopForDiv");

	//load indholdet af popup'en
	Ajax_con = Get_Ajax();
	
	Ajax_con.open("GET","/popup_v2/context.htm",true);
	
	Ajax_con.send(null);
	
	Ajax_con.onreadystatechange = function()
	{
		var resp = Ajax_con.responseText;
		if(resp != null)
		{
			ForDiv.innerHTML = resp;
		}
	}
	if(navigator.appName == "Microsoft Internet Explorer")
	{
			//Jeg var nødsaget til at sætte position og størrelse med JS for Internet Explorer
			FadeDiv = setSizeFade(FadeDiv);
			ForDiv = setPosIE(ForDiv);
	}
		
		OverDiv.appendChild(ForDiv);
		document.body.appendChild(FadeDiv);
		document.body.appendChild(OverDiv);
	
}


function initAjax()
{
	try
	{
		//Firefox, opera og safari
		xmlHttp = new XMLHttpRequest();
	}catch(e)
	{
		try
		{
			//gammel internet explore
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e)
		{
			try
			{
				//Ny version af internet explore
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e)
			{
				//Browseren understøtter ikke ajax, luk PopUpen uden videre handling
				JustClose();
			}
		}
	}
	
	if(xmlHttp != null)
	{
		xmlHttp.onreadystatechange = OnReadyStateChange;
	}
}


function Get_Ajax()
{
	var AjaxObj;
	try
	{
		//Firefox, opera safari
		AjaxObj = new XMLHttpRequest();
	}catch(e)
	{
		try
		{
			//Til ældrer versioner af internet explorer
			AjaxObj = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e)
		{
			try
			{
				AjaxObj = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e)
			{
				return 0;
			}
		}
	}
	
	return AjaxObj
}

function OnReadyStateChange()
{
	if(xmlHttp.readyState==4)
	  {
		var response = xmlHttp.responseText;
		
		//alert(response);
		
		switch(response)
		{
			case "NOT_IN_BASE":
				ShowPopUp();
				break;
				
			case "BLOCK":
				//gør ingenting men just in case så kalder jeg JustClose() functionen
				JustClose();
				break;
				
			default:
				//put response over i en mere sigende variable
				var RTime = response;
				var NowTime = Unix_timestamp();
				
				RTime = RTime + (24*60*60);
				
				//hvis RTime er mindre end NowTime så hvis Popup'en eller luk den
				if(RTime < NowTime)
				{
					ShowPopUp();
				}else{
					JustClose();
				}
				
				break;
		}
	  }
}

function send_request(post_value)
{
	xmlHttp.open("POST",url,true);
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); 
	xmlHttp.send(post_value);
}

//function til at PopUpen aldrig kommer tilbage
function NeverAgain(ReLo)
{
		//Send request til serveren med ajax
		send_request("action=NeverAgain");
		
		if(ReLo != null)
		{
			pause(500);
			
			location.href = ReLo;
		}
			
		//luk popup'en ned
		JustClose();
}

//function til at Popupen bliver lukket, men kommer igen næste gang man besøge siden
function CloseForSession(ReLo)
{
	//Send besked til serveren om at sætte en session
	send_request("action=CloseForSession");
	
		if(ReLo != null)
		{
			pause(500);
			
			location.href = ReLo;
		}
		
	//luk popup'en ned
	JustClose();
	
}

//function til at PopUpen kommer igen efter angivet tidsrum i variablen ComAgainTime(Unix time)
function ComAgain(ReLo)
{
	
	//Send request til serveren med Ajax
	send_request("action=ComAgain");
	
		if(ReLo != null)
		{
			pause(500);
			
			location.href = ReLo;
		}
		
	//Luk popup'en ned
	JustClose();
}

function JustClose()
{
	//luk popup'en ned
	
	var fade = document.getElementById("PopFadeDiv");
	var over = document.getElementById("PopOverDiv");
	var ford = document.getElementById("PopForDiv");
	
	fade.style.visibility = "hidden";
	over.style.visibility = "hidden";
	ford.style.visibility = "hidden";
	
	//I tilfælde af at det er internet explorer er scroll baren gemt væk, så den vises frem igen.
	
	if(navigator.appName == "Microsoft Internet Explorer")
	{
		document.body.style.overflow = "auto";
	}
}

function ShowPopUp()
{
	var fade = document.getElementById("PopFadeDiv");
	var over = document.getElementById("PopOverDiv");
	var ford = document.getElementById("PopForDiv");
	
	fade.style.visibility = "visible";
	over.style.visibility = "visible";
	ford.style.visibility = "visible";
}

//function til at retunere et unix timestamp
function Unix_timestamp()
{
	return parseInt(new Date().getTime().toString().substring(0, 10))
}


function pause(numberMillis)
{
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	
	while (true)
	{
		now = new Date();
		if (now.getTime() > exitTime)
		return;
	}
} 

/*
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Nedestående er IE only kode, grundet IE fuckede måde at håndtere css!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
									!!!!!!!
									!!!!!!!
									!!!!!!!
									!!!!!!!
									!!!!!!!
								!!!!!!!!!!!!!!!
								 !!!!!!!!!!!!!
								  !!!!!!!!!!!
								   !!!!!!!!!
								    !!!!!!!
								     !!!!!
								      !!!
								       !
*/

function setPosIE(box)
{
	var myWidth = 0;
	var myHeight = 0;
	
	if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
	{
		//nyere version af IE (version 6 +)
		myWidth = document.documentElement.clientWidth;
    	myHeight = document.documentElement.clientHeight;
	}else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
	{
		//ældre version af IE
		myWidth = document.body.clientWidth;
    	myHeight = document.body.clientHeight;
	}
	
	myWidth = myWidth / 2;
	//myHeight = myHeight / 2;
	
	//var box_height = box.offsetHeight / 2;
	//var box_width = box.offsetWidth / 2;
	//alert(box_width);
	
	//box.style.top = myHeight; //- box_height + "px";
	box.style.left = myWidth - 150 + " px";
	
	return box;
}

function setSizeFade(div)
{
	var myWidth = 0;
	var myHeight = 0;
	if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
	{
		//nyere version af IE (version 6 +)
		myWidth = document.documentElement.clientWidth;
    	myHeight = document.documentElement.clientHeight;
	}else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
	{
		//ældre version af IE
		myWidth = document.body.clientWidth;
    	myHeight = document.body.clientHeight;
	}
	
	div.style.width = myWidth + "px";
	div.style.height = myHeight + "px";
	
	return div;
}
