﻿function XML() {
	this.stringToXML = function(string) {
		if (window.XMLHttpRequest) {
			parser=new DOMParser();
  			xmlDoc=parser.parseFromString(string,"text/xml");
		} else {
			var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
			xmlDoc.async="false";
			xmlDoc.loadXML(string);
		}
		return xmlDoc;
	}
	this.loadXML = function(URL) {
		if (window.XMLHttpRequest) {
			xhttp=new XMLHttpRequest();
		} else {
			xhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		xhttp.open('GET',URL,false);
		xhttp.send("");
		return xhttp.responseXML;
	}
}
String.prototype.trim = function() {
	return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
var UITools = function() {
	this.findPosition=function( oElement ) {
		if (typeof(oElement)!='undefined'){
			if (typeof( oElement.offsetParent ) != 'undefined' ) {
				for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
					posX += oElement.offsetLeft;
					posY += oElement.offsetTop;
				}
				return [posX,posY];
			} else {
				return [oElement.x,oElement.y];
			}
		}
	}
}
var Cookies = {
	setCookie : function (c_name,value,expiredays)	{
		var exdate=new Date();
		exdate.setDate(exdate.getDate()+expiredays);
		document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
	},
	getCookie : function (c_name) {
		if (document.cookie.length>0){
			c_start=document.cookie.indexOf(c_name + "=");
			if (c_start!=-1) {
				c_start=c_start + c_name.length+1;
				c_end=document.cookie.indexOf(";",c_start);
				if (c_end==-1) c_end=document.cookie.length;
				return unescape(document.cookie.substring(c_start,c_end));
			}
		}
		return "";
	},
	deleteAllCookies : function () {
		var cookies = document.cookie.split(";");
		for (var i = 0; i < cookies.length; i++) {
			var cookie = cookies[i];var eqPos = cookie.indexOf("=");
			var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
			document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
		}
	}
}
var Controllers = {
	FormControl : function(form) {
		var loadHandler = function(element) {
			var elementId=element.id;
			if (!elementId) elementId=element.name;
			var elementValue=Cookies.getCookie(elementId);
			if (elementValue) {
				switch (element.type) {
					case 'radio':
						if (element.value==elementValue) element.checked=true;
						break;
					case 'select':
						for (i=0;i<element.options.length;i++) {
							if (element.options[i].value==elementValue) element.selectedIndex=i;
						}
						break;
					case 'checkbox':
						if (elementValue.length>0) element.checked=true;
						break;
					default:
						element.value=elementValue;
						break;
				}
			}
		}
		var changeHandler = function(event) {
			if (event) {
				var elementId=event.target.id;
				if (!elementId) elementId=event.target.name;
				if (event.target.type=='checkbox' && !event.target.checked) event.target.value='';
				Cookies.setCookie(elementId,event.target.value,30);
				validateHandler(event.target);
			}
		}
		form.onsubmit = function() {
			if (formValidates()) {
				Cookies.deleteAllCookies();
				return true;
			} else {
				return false;
			}
		}
		var validateHandler = function(element) {
			if (element.validates=='undefined') {
				if (element.className.indexOf('required')>-1) {
					element.validates=false;
					element.title='Feltet mangler at blive udfyldt eller er ikke udfyldt korrekt';
				} else {
					element.validates=true;
					element.title='';
				}
			}
			element.validates=true;
			//misc. validation rules
			if (element.className.indexOf('required')>-1 && element.value.trim()=='') {
				element.validates=false;
			}
			if (element.className.indexOf('email')>-1) {
				if (element.value.indexOf('@')<0) {
					element.validates=false;
				} else {
					if (element.value.split('@')[1].indexOf('.')<0) {
						element.validates=false;
					}
				}
			}
			//final determination if element validates
			if (element.validates) {
				element.style.backgroundImage='none';
			} else {
				element.style.backgroundImage='url(/images/gfx-validatefalse.gif)';
			}
		}
		var formValidates = function() {
			var response ='Der opstod følgende fejl:\n';
			var validates=true;
			var checkBoxChecked=0;
			for (i=0;i<form.elements.length;i++) {
				var element=form.elements[i];
				if (!element.validates) {
					validates=false;
				}
				if (element.type=='checkbox' && element.checked) checkBoxChecked++;
			}
			if (checkBoxChecked==0) {
				response+=' - Ingen dokumenter er valgt\n';
			}
			if (!validates) {
				response+=' - Et eller flere felter mangler at blive udfyldt eller er udfyldt forkert\n';
			}
			if (validates && checkBoxChecked>0) {
				return true;
			} else {
				alert(response);
				return false;
			}
		}
		
		/* Goes through all form elements */
		for (i=0;i<form.elements.length;i++) {
			loadHandler(form.elements[i]);
			if (document.all) {/*IE event hacks */
				form.elements[i].onchange = function() {
					var fakeEventIE=new Object();
					fakeEventIE.target=this;
					changeHandler(fakeEventIE);
				}
				form.elements[i].onclick = function() {
					var fakeEventIE=new Object();
					fakeEventIE.target=this;
					changeHandler(fakeEventIE);
				}
			} else {
				form.elements[i].onchange = changeHandler;
			}
			validateHandler(form.elements[i]);
			form.elements[i].onfocus = function() {
				validateHandler(this);
			}
			form.elements[i].onblur = changeHandler;
				
			form.elements[i].onkeyup = form.elements[i].onfocus;
		}

		var thumbnailContainer=document.getElementById('thumbnailContainer');
		var label=form.getElementsByTagName('label');
		
		for (i=0;i<label.length;i++) {
			if (document.getElementById(label[i].getAttribute("for")).type=='checkbox') {
				checkBox=document.getElementById(label[i].getAttribute("for"));
				label[i].thumbnail=label[i].title.replace("\\","/").replace(".pdf",".jpg");
				label[i].title='';
				label[i].onmouseover = function() {
					thumbnailContainer.style.display='inline';
					thumbnailContainer.style.top=uiTools.findPosition(this)[1]-130+"px";
					thumbnailContainer.style.left=uiTools.findPosition(this)[0]+"px";
					thumbnailContainer.style.backgroundImage='url(/library/pdf/protected/thumbnails/'+escape(this.thumbnail)+')';
				}
				checkBox.label=label[i];
				checkBox.onmouseover = function() {
					thumbnailContainer.style.display='inline';
					thumbnailContainer.style.top=uiTools.findPosition(this.label)[1]-130+"px";
					thumbnailContainer.style.left=uiTools.findPosition(this.label)[0]+"px";
					thumbnailContainer.style.backgroundImage='url(/library/pdf/protected/thumbnails/'+escape(this.label.thumbnail)+')';
				}
				label[i].onmouseout = function() {
					thumbnailContainer.style.display='none';
				}
				checkBox.onmouseout = label[i].onmouseout;
			}
		}
		
	}
}
function selectItem(id) {
	Cookies.setCookie("pdfitem"+id,"on",30);
	document.location.href='/order.asp';
}
var uiTools=new UITools();