﻿/* Singleline functions
---------------------------------------------------------------- */

function $d(d){
	return document.getElementById(d);
}

/* Toogle text
---------------------------------------------------------------- */

var field = function(){
	return {
		focus:function(f,txt){
			if(f.value==txt){
				f.value='';
			}else{
				f.select();
			}
		},
		blur:function(f,txt){
			if(f.value==''){
				f.value=txt;
			}
		}
	};
}();

var fieldlbl = function(){
	return {
		focus:function(f,txt){
			    var obj = $d(f.id+'-lbl');
				obj.style.display='none';
		},
		blur:function(f,txt){
			if(f.value==''){
			    var obj = $d(f.id+'-lbl');
				obj.style.display='block';
		   }
		}
	};
}();


/* Change location
---------------------------------------------------------------- */

var foot = function(){
	return {
		change:function(f){
			var loc = f.options[f.selectedIndex].value;
			if(loc!=''){
				// location.href = loc;
				window.open(loc);
			}
		}
	};
}();

/* FAQ
---------------------------------------------------------------- */

var faq = function(){
	return {
		show:function(f){
			var obj = $d(f.id+'-node');
			if(obj){
				if(obj.style.display == 'block'){
					faq.reset();
					obj.style.display = 'none';
					f.className = 'plus';
				}else{
					faq.reset();
					obj.style.display = 'block';
					f.className = 'minus';
				}
				try{f.blur();}catch(e){}
			}
		},
		reset:function(f){
			var obj = $d('faq-nodes');
			if(obj){
				var items = obj.getElementsByTagName('div');
				for(var d=0;d<items.length;d+=1){
					if(items[d].className=='bdy'){
						items[d].style.display = 'none';
					}
				}
				var items = obj.getElementsByTagName('a');
				for(var d=0;d<items.length;d+=1){
					items[d].className = 'plus';
				}
			}
		}
	};
}();

/* Menu popup
---------------------------------------------------------------- */

var menu = function(){
	var menutimer;var mnu;var menudelay;
	return {
		show:function(f){
			mnu = f.id;
			menudelay = setTimeout("menu.delay('"+f.id+"')",300);
		},
		over:function(f){
			clearTimeout(menutimer);
		},
		delay:function(f){
			var obj = $d(f+'-sub');
			var elm = $d(f);
			if(obj && elm){
				menu.reset();
				elm.className = elm.className + ' hover';
				obj.style.display = 'block';
			}
		},
		out:function(f){
			menutimer = setTimeout("menu.hide();", 500);
			clearTimeout(menudelay);
		},
		hide:function(f){
			menu.reset();
		},
		reset:function(f){
			var obj = $d('sub-menu');
			if(obj){
				var items = obj.getElementsByTagName('div');
				for(var d=0;d<items.length;d+=1){
					var str = items[d].className;
					if(str.indexOf('abs')!=-1){
						items[d].style.display = 'none';
					}
				}
			}
			var elm = $d('main-menu');
			if(elm){
				var items = elm.getElementsByTagName('a');
				for(var d=0;d<items.length;d+=1){
					var cls = items[d].className;
					cls = cls.replace(/hover/gi, '');
					items[d].className = cls;
				}
			}
		}
	};
}();

/* Sections toogler (MEGA BANNER)
---------------------------------------------------------------- */

var box = function(){
	var boxtim;var boxcur;
	return {
		show:function(f,n){
			var obj = $d(f.id+'-item');
			if(obj){
				box.reset();
				clearTimeout(boxtim);
				f.className = 'selected';
				obj.style.display = 'block';
				boxcur = n;
			}
		},
		init:function(){
			boxtim = setTimeout("box.loop();", 1000);
			boxcur = 1;
			box.delay(boxcur);
		},
		over:function(){
			clearTimeout(boxtim);
		},
		out:function(){
			boxtim = setTimeout("box.loop();", 5000);
		},
		loop:function(){
		    var boxcur2 = boxcur + 1;
			var obj = $d('box-node'+boxcur+'-item');
			var obj2 = $d('box-node'+(boxcur2)+'-item');
			var imx = $d('box-node'+boxcur+'-item-img');
			var elm = $d('box-node'+boxcur);
			if(obj && elm && imx){
				box.reset();
				if(imx.filters){
					box.set('box-node'+boxcur+'-item-img', 0);
					imx.style.filter = "blendTrans(duration=0.6)";
					imx.filters.blendTrans.Apply();
					imx.filters.blendTrans.Play();
				}else{
					box.set('box-node'+boxcur+'-item-img', 0);
					setTimeout("box.fader('box-node"+boxcur+"-item-img',0,100,600);", 50);
				}
				obj.style.display = 'block';
				elm.className = 'selected';
				setTimeout("box.delay('"+boxcur+"');", 2000);
				if(obj2){
					boxcur++;
				}else{
					boxcur = 1;
				}
			}
			boxtim = setTimeout("box.loop();", 5000);
		},
		delay:function(f){
			var bxo = $d('box-items');
			var imx = $d('box-node'+f+'-item-img');
			if(bxo && imx){
				bxo.style.backgroundImage = 'url('+imx.src+')';
			}
		},
		reset:function(){
			var obj = $d('box-items');
			if(obj){
				var items = obj.getElementsByTagName('div');
				for(var d=0;d<items.length;d+=1){
					var str = items[d].className;
					if(str.indexOf('node')!=-1){
						items[d].style.display = 'none';
					}
				}
			}
			var elm = $d('box-nodes');
			if(elm){
				var items = elm.getElementsByTagName('a');
				for(var d=0;d<items.length;d+=1){
					items[d].className = '';
				}
			}
		},
		set:function(id,opacity){
			var obj = $d(id).style;
			obj.opacity = (opacity / 100);
			obj.MozOpacity = (opacity / 100);
			obj.KhtmlOpacity = (opacity / 100);
			obj.filter = "alpha(opacity=" + opacity + ")";
			obj.backgroundColor = '#ffffff';
		},
		fader:function(id,opacStart,opacEnd,millisec){
			var speed = Math.round(millisec / 100);
			var timer = 0;
			if(opacStart>opacEnd){
				for(i=opacStart;i<=opacEnd;i=i-2){
					setTimeout("box.set('" + id + "'," + i + ")",(timer * speed));
					timer++;
				}
			}else if(opacStart<opacEnd){
				for(i=opacStart;i<=opacEnd;i=i+2){
					setTimeout("box.set('" + id + "'," + i + ")",(timer * speed));
					timer++;
				}
			}
		}
	};
}();

/* Ticker
---------------------------------------------------------------- */

var sliding = false;

var ticker = function(){
	return {
		initialize:function(f,auto,wid){
			var obj = $d(f);
			var elm = $d(f+'-controls');
			if(obj){
				var tickers = ticker.count(f);
				if(tickers>1){
					if(elm){
						elm.innerHTML = '';
						elm.innerHTML += '<li><strong class="back" onclick="ticker.back(\''+f+'\',\''+wid+'\');return false;"><span>Back</span></strong></li>';
						for(var d=0;d<tickers;d+=1){
							var dc = d + 1;
							if(d==0){
								elm.innerHTML += '<li><a href="#" title="" id="'+f+'-itm'+(dc)+'" class="mark" onclick="ticker.click(\''+(dc)+'\',true,\''+f+'\',\''+wid+'\');return false;"><span>1</span></a></li>';
							}else{
								elm.innerHTML += '<li><a href="#" title="" id="'+f+'-itm'+(dc)+'" class="norm" onclick="ticker.click(\''+(dc)+'\',true,\''+f+'\',\''+wid+'\');return false;"><span>1</span></a></li>';
							}			
						}
						elm.innerHTML += '<li><strong class="forward" onclick="ticker.forward(\''+f+'\',\''+wid+'\');return false;"><span>Forward</span></strong></li>';
					}
				}
			}
		},
		click:function(num,m,f,wid){
			if(!sliding){
				ticker.reset(f);
				var elm = $d(f+'-itm'+num);
				if(elm){elm.className = 'mark';elm.blur();}
				ticker.toogle(num,f,wid);
			}
		},
		back:function(f,wid){
			if(!sliding){
				var obj = $d(f+'-controls');
				var items = obj.getElementsByTagName('a');
				var all = 0;var iscur = 0;
				for(var d=0;d<items.length;d+=1){
					all++;
					if(items[d].className=='mark'){iscur = all;}
				}
				var next;
				if(iscur==1){next=all;}else{next=iscur-1;}
				ticker.click(next,false,f,wid);
			}
		},
		forward:function(f,wid){
			if(!sliding){
				var obj = $d(f+'-controls');
				var items = obj.getElementsByTagName('a');
				var all = 0;var iscur = 0;
				for(var d=0;d<items.length;d+=1){
					all++;
					if(items[d].className=='mark'){iscur = all;}
				}
				var next;
				if(iscur==all){next=1;}else{next=iscur+1;}
				ticker.click(next,false,f,wid);
			}
		},
		auto:function(f,wid){
			var obj = $d(f+'-controls');
			var items = obj.getElementsByTagName('a');
			var all = 0;
			var iscur = 0;
			for(var d=0;d<items.length;d+=1){
				all++;
				if(items[d].className=='mark'){iscur = all;}
			}
			var next;
			if(iscur==all){next=1;}else{next=iscur+1;}
			ticker.click(next,false,f,wid);
		},
		toogle:function(num,f,wid){
			var obj = $d(f);
			var _from = 0;
			_from = parseInt(obj.style.left);
			if(isNaN(_from)){_from = 0;obj.style.left = '0px';}else{_from = _from;}
			var _to = _from - (_from + ((num - 1) * wid));
			mover.move(f,_from,_to);
		},
		reset:function(f){
			var obj = $d(f+'-controls');
			var items = obj.getElementsByTagName('a');
			for(var d=0;d<items.length;d+=1){
				if(items[d].className=='norm' || items[d].className=='mark'){
					items[d].className = 'norm';
				}
			}
		},
		count:function(f){
			var obj = $d(f);
			var count = 0;
			var items = obj.getElementsByTagName('div');
			for(var d=0;d<items.length;d+=1){
				if(items[d].className=='item'){
					count++;
				}
			}
			return count;
		}
	};
}();

/* Open
---------------------------------------------------------------- */

var openhour = function(){
	return {
		initialize:function(f,auto,wid){
			var obj = $d(f);
			var elm = $d(f+'-controls');
			var bck = $d('open-back');
			var fwd = $d('open-forward');
			if(obj && bck && fwd){
				bck.onclick = function(){openhour.back(f,wid,this);return false;}
				fwd.onclick = function(){openhour.forward(f,wid,this);return false;}
				var tickers = openhour.count(f);
				if(tickers>1){
					if(elm){
						elm.innerHTML = '';
						for(var d=0;d<tickers;d+=1){
							var dc = d + 1;
							if(d==0){
								elm.innerHTML += '<li><a href="#" title="" id="'+f+'-itm'+(dc)+'" class="mark" onclick="openhour.click(\''+(dc)+'\',true,\''+f+'\',\''+wid+'\');return false;"><span>1</span></a></li>';
							}else{
								elm.innerHTML += '<li><a href="#" title="" id="'+f+'-itm'+(dc)+'" onclick="openhour.click(\''+(dc)+'\',true,\''+f+'\',\''+wid+'\');return false;"><span>1</span></a></li>';
							}			
						}
					}
				}

			}
		},
		click:function(num,m,f,wid){
			if(!sliding){
				var txt = $d('open-day');
				var itx = $d('open-itm'+num+'-lbl');
				txt.innerHTML = itx.innerHTML;
				openhour.reset(f);
				var elm = $d(f+'-itm'+num);
				if(elm){elm.className = 'mark';elm.blur();}
				openhour.toogle(num,f,wid);
			}
		},
		back:function(f,wid,t){
			if(!sliding){
				try{t.blur();}catch(e){}
				var obj = $d(f+'-controls');
				var items = obj.getElementsByTagName('a');
				var all = 0;var iscur = 0;
				for(var d=0;d<items.length;d+=1){
					all++;
					if(items[d].className=='mark'){iscur = all;}
				}
				var next;
				if(iscur==1){next=all;}else{next=iscur-1;}
				openhour.click(next,false,f,wid);
			}
		},
		forward:function(f,wid,t){
			if(!sliding){
				try{t.blur();}catch(e){}
				var obj = $d(f+'-controls');
				var items = obj.getElementsByTagName('a');
				var all = 0;var iscur = 0;
				for(var d=0;d<items.length;d+=1){
					all++;
					if(items[d].className=='mark'){iscur = all;}
				}
				var next;
				if(iscur==all){next=1;}else{next=iscur+1;}
				openhour.click(next,false,f,wid);
			}
		},
		auto:function(f,wid){
			var obj = $d(f+'-controls');
			var items = obj.getElementsByTagName('a');
			var all = 0;
			var iscur = 0;
			for(var d=0;d<items.length;d+=1){
				all++;
				if(items[d].className=='mark'){iscur = all;}
			}
			var next;
			if(iscur==all){next=1;}else{next=iscur+1;}
			openhour.click(next,false,f,wid);
		},
		toogle:function(num,f,wid){
			var obj = $d(f);
			var _from = 0;
			_from = parseInt(obj.style.left);
			if(isNaN(_from)){_from = 0;obj.style.left = '0px';}else{_from = _from;}
			var _to = _from - (_from + ((num - 1) * wid));
			mover.move(f,_from,_to);
		},
		reset:function(f){
			var obj = $d(f+'-controls');
			var items = obj.getElementsByTagName('a');
			for(var d=0;d<items.length;d+=1){
				if(items[d].className=='norm' || items[d].className=='mark'){
					items[d].className = 'norm';
				}
			}
		},
		count:function(f){
			var obj = $d(f);
			var count = 0;
			var items = obj.getElementsByTagName('div');
			for(var d=0;d<items.length;d+=1){
				if(items[d].className=='item'){
					count++;
				}
			}
			return count;
		}
	};
}();

/* Move divs <|> slider.toogle('divname',['customfunction()','anotherfunction()']);
---------------------------------------------------------------- */

var mover = function(){
	var slideAtClose=true;var duration = 0.6;var obj;var newLeft;var curLeft;
	return {
		init:function(elm,from){
			obj = $d(elm);
			if(obj){obj.style.left = from + 'px';}
		},
		move:function(elm,from,to,functions){
			if(!sliding){
				mover.init(elm,from);
				newLeft = to;
				curLeft = from;
				mover.slide(elm,functions);
			}
		},
		slide:function(elm,functions){
			sliding = true;
			var frames = 30 * duration;
			var tinc = (duration * 1000) / frames;
			tinc = Math.round(tinc);
			var sinc = (curLeft - newLeft) / frames;
			var frameSizes = new Array();
			for(var i=0;i<frames;i++){
				if(i < frames / 2){
					frameSizes[i] = (sinc * (i / frames)) * 4;
				} else {
					frameSizes[i] = (sinc * (1 - (i / frames))) * 4;
				}
			}
			for(var i=0;i<frames;i++){
				curLeft = curLeft - frameSizes[i];
				window.setTimeout("document.getElementById('"+elm+"').style.left = '"+Math.round(curLeft)+"px';", tinc * i);
				if((i + 1) == frames){window.setTimeout("mover.complete("+functions+");", tinc * (i + 5));}
			}
		},
		hide:function(){
			obj.style.height = 'auto';
			obj.style.display = 'none';
		},
		complete:function(functions){
			sliding = false;
			if(functions){
				for(var i=0;i<functions.length;i++){
					try{eval(functions[i]);}catch(e){alert(e.description);}
				}
			}
		}
	};
}();

/* Shortcuts expander
---------------------------------------------------------------- */

var shortcut = function(){
	return {
		show:function(f,e,xy,xz){
			var obj = $d(e);
			var str = e+'-fix';
			var disp = false;
			if(obj){
			
				// Set height
				var h = parseInt(obj.offsetHeight);
				obj.style.height = h + 'px';
				
				// Expand elements
				var items = obj.getElementsByTagName('div');
				for(var d=0;d<items.length;d+=1){
					if(items[d].className=='hidden'){
						if(items[d].style.display=='' || items[d].style.display=='none'){
							items[d].style.display = 'block';
							disp = true;
						}else{
							items[d].style.display = 'none';
							disp = false;
						}
					}
				}
				
				// Change show more text
				var items = obj.getElementsByTagName('a');
				for(var d=0;d<items.length;d+=1){
					var cls = items[d].className;
					if(cls.indexOf('foot-toogle')!=-1){
						if(disp){
							items[d].innerHTML = xz;
							items[d].className = 'foot-toogle minus';
						}else{
							items[d].innerHTML = xy;
							items[d].className = 'foot-toogle plus';
						}
					}
				}
				
				// Toogle
				adjuster.init(e,str);
			}
			try{f.blur();}catch(e){}
		}
	};
}();

/* Adjuster (adjuster.init('div-to-adjust','div-to-measure',functions);)
---------------------------------------------------------------- */

var adjset;

var adjuster = function(){
	var adjusting = false;var duration=0.6;var obj;var newHeight;var curHeight;
	return {
		init:function(elm,el,functions){
			obj = $d(elm);
			var nel = $d(el);
			if(obj && nel){
				if(!adjusting){
					curHeight = parseInt(obj.offsetHeight);
					newHeight = parseInt(nel.offsetHeight);
					if(curHeight!=newHeight){adjuster.slide(elm,functions);}else{adjuster.complete(functions);}
				}else{
					adjuster.complete(functions);
				}
			}
		},
		slide:function(elm,functions){
			adjusting = true;
			var frames = 30 * duration;
			var tinc = (duration * 1000) / frames;
			tinc = Math.round(tinc);
			var sinc = (curHeight - newHeight) / frames;
			var frameSizes = new Array();
			for(var i=0;i<frames;i++){
				if(i < frames / 2){
					frameSizes[i] = (sinc * (i / frames)) * 4;
				} else {
					frameSizes[i] = (sinc * (1 - (i / frames))) * 4;
				}
			}
			for(var i=0;i<frames;i++){
				curHeight = curHeight - frameSizes[i];
				window.setTimeout("$d('"+elm+"').style.height = '"+Math.round(curHeight)+"px';", tinc * i);
				if((i + 1) == frames){window.setTimeout("adjuster.complete("+functions+");", tinc * (i + 5));}
			}
			return tinc * i;
		},
		complete:function(functions){
			adjusting = false;
			if(functions){
				for(var i=0;i<functions.length;i++){
					try{eval(functions[i]);}catch(e){/*alert(e.description);*/}
				}
			}
		}
	};
}();

/* Validation
---------------------------------------------------------------- */

var validate = function(){
	var execute = true;
	return {
		err:function(f,act){
			var obj = $d(f);
			if(obj){if(act=='reset'){obj.style.backgroundColor = '#f0f0f0';}else{obj.style.backgroundColor = '#eccdce';}}
		},
		email:function(str){
			var filter = /^[^\s@]+@[^\s@]+\.[a-z]{2,6}$/i;
			if(filter.test(str)){return true;}else{return false;}
		},
		empty:function(str){
			var filter = /^\s+$/;
			var expression;
			if(filter.test(str) || str==''){expression = false;}else{expression = true;}
			return expression;
		},
		onlynumbers:function(evt){
			var charCode = (evt.which) ? evt.which : event.keyCode;
			if(charCode > 31 && (charCode < 48 || charCode > 57)){return false;}else{return true;}
		},
		search:function(f,s){
			execute = true;
			if(!validate.empty(f.q.value) || f.q.value==s){
				execute = false;
			}
			return execute;
		},
		biblio:function(f,s){
			execute = false;
			if(!validate.empty(f.ccl.value) || f.ccl.value==s){
				execute = false;
			} else
			{
			  window.open('http://integrabib.dk/greve/linkme.php?ccl='+f.ccl.value);
			}
			return execute;
		},
		signin:function(f,s,t){
			execute = true;
			if(!validate.empty(f.lkid.value) || f.lkidr.value==s){
				execute = false;
			}
			if(!validate.empty(f.lkpin.value) || f.lkpin.value==t){
				execute = false;
			}
			return execute;
		},
		comment:function(f){
			execute = true;
		
			var obju = $d(f.username.id + '-label');
			var obje = $d(f.email.id + '-label');
			var objc = $d(f.comment.id + '-label');
			var objo = $d(f.code.id + '-label');
			
			if(obju && obje && objc && objo){	
				validate.err(f.username.id,'reset');
				validate.err(f.email.id,'reset');
				validate.err(f.comment.id,'reset');
				validate.err(f.code.id,'reset');
		
				if(!validate.empty(f.username.value) ||  f.username.value==obju.value){
					execute = false;
					validate.err(f.username.id,'error');
				}
				if(!validate.email(f.email.value) ||  f.email.value==obje.value){
					execute = false;
					validate.err(f.email.id,'error');
				}
				if(!validate.empty(f.comment.value) ||  f.comment.value==objc.value){
					execute = false;
					validate.err(f.comment.id,'error');
				}
				if(!validate.empty(f.code.value) ||  f.code.value==objo.value){
					execute = false;
					validate.err(f.code.id,'error');
				}
			
			}else{
				execute = false;
			}
			return execute;
		},
		captcha:function(){
			var obj = $d('man');
			if(obj){
				var str = Math.floor(Math.random() * 999999);
				obj.value = str;
			}
		}
	};
}();


var appendr = function(){
	return {
		classes:function(){
			try{
				var style = document.createElement('style');
				var head = document.getElementsByTagName('head')[0];
				var rules = document.createTextNode(
					'.factbox-t1 a:hover img {filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}' +
					'.box-imgs-t1 .item .inn a:hover img {filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}' +
					'.box-links-t2 .flow .item .inx a:hover img {filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}' +
					'.box-imgs-t2 .item .inx a:hover img {filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}'
				);
				style.type = 'text/css';
				if(style.styleSheet){style.styleSheet.cssText = rules.nodeValue;}else{style.appendChild(rules);}
				head.appendChild(style);
			}catch(e){}
		}
	};
}();

/* Window load
---------------------------------------------------------------- */

window.onload = function(){
	
	/* Initialize intro box */
	if($d('box-items')){
		box.init();
	}
	
	/* Initialize content slides */
	ticker.initialize('arrangement', false, 450);
	ticker.initialize('aktuelt', false, 450);
	ticker.initialize('megaaktuelt', false, 940);
	ticker.initialize('emne', false, 695);
	openhour.initialize('open', false, 280);
	
	/* Captcha */
	validate.captcha();
	
	/* Append opacity */
	appendr.classes();
	
}
