﻿/* 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;
			}
		}
	};
}();


/* Link function
---------------------------------------------------------------- */

var url = function(){
	return {
		href:function(url,blank){
			if(blank){
				window.open(url);
			}else{
				location.href = url;
			}
		}
	};
}();


/* Ajax <|> ajax.load('http://','ajaxdiv',true,['customfunction()','anotherfunction()']);
---------------------------------------------------------------- */

var ajax = function(){
	return {
		nocache:function(){
			var minutes = 1000 * 60;
			var hours = minutes * 60;
			var days = hours * 24;
			var years = days * 365;
			var d = new Date();
			var t = d.getTime();
			return t;
		},
		load:function(url,container,load,functions){
			var obj = document.getElementById(container);
			var loader = '<div class="loading"></div>';
			if(obj && url){
				if(load){obj.innerHTML = loader;}
				ajax.page(url,container,functions);
			}
		},
		page:function(url,container,functions){
			var _url,_no;
			if(url.indexOf("?")==-1){_no = '?~' + ajax.nocache();}else{_no = '&~' + ajax.nocache();}
			_url = url + _no;
			
			if(window.XMLHttpRequest){
				page_request = new XMLHttpRequest();
			}else if(window.ActiveXObject){
				try{
					page_request = new ActiveXObject('Msxml2.XMLHTTP');
				}catch(e){
					try{
						page_request = new ActiveXObject('Microsoft.XMLHTTP');
					}catch(e){}
				}
			}else{
				return false;
			}

			page_request.onreadystatechange = function(){
				ajax.parse(page_request,container,functions);
			}
			page_request.open('GET', _url, true);
			page_request.send(null);
		},
		parse:function(page_request,container,functions){
			if(page_request.readyState==4 && (page_request.status==200 || window.location.href.indexOf('http')==-1)){
				document.getElementById(container).innerHTML = page_request.responseText;
				ajax.completed(functions);
			}
		},
		completed:function(functions){
			// After complete functions here..
			if(functions){
				for(var i=0;i<functions.length;i++){
					try{eval(functions[i]);}catch(e){alert(e.description);}
				}
			}
		}
	};
}();


/* Dark layer
---------------------------------------------------------------- */

var darken = function(){
	return {
		create:function(){
			var dark = document.getElementById('layerdark');
			if(!dark){
				var dot = document.createElement("div");
				dot.id = 'layerdark';
				dot.style.opacity = 0.5;
				dot.style.filter = 'alpha(opacity=50)';
				dot.style.width = '100%';
				dot.style.height = '100%';
				dot.style.position = 'absolute';
				dot.style.zIndex = '1000';
				dot.style.backgroundColor = '#000000';
				dot.style.left = '0px';
				dot.style.top = '0px';
				dot.onclick = function(){darken.kill();}
				document.body.appendChild(dot);
			}
		},
		show:function(){
			darken.create();
			var dark = document.getElementById('layerdark');
			var height = document.documentElement.scrollHeight;
			if(dark){
				dark.style.height = height + 'px';
				dark.style.display = 'block';
			}
		},
		fixed:function(){
			var dark = document.getElementById('layerdark');
			var height = document.documentElement.scrollHeight;
			if(dark){
				dark.style.height = height + 'px';
			}
		},
		kill:function(){
			var dark = document.getElementById('layerdark');
			if(dark){dark.style.display = 'none';}
		}
	};
}();


/* Validation
---------------------------------------------------------------- */

var validate = function(){
	var execute = true;
	return {
		err:function(step,f){
			var obj = document.getElementById(f);
			if(obj){
				if(step=='1'){obj.style.backgroundColor = '#ffabab';setTimeout("validate.err('2','"+f+"');", 50);}
				if(step=='2'){obj.style.backgroundColor = '#ffc5c5';setTimeout("validate.err('3','"+f+"');", 50);}
				if(step=='3'){obj.style.backgroundColor = '#ffdfdf';setTimeout("validate.err('4','"+f+"');", 50);}
				if(step=='4'){obj.style.backgroundColor = '#fef1f1';setTimeout("validate.err('5','"+f+"');", 50);}
				if(step=='5'){obj.style.backgroundColor = '#fff';}
			}
		},
		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;}
		},
		newsletter:function(f){
			execute = true;
			if(!validate.email(f.email.value)){
				execute = false;
				validate.err('1',f.email.id);
			}
			return execute;
		},
		company:function(f){
			execute = true;
			if(!validate.empty(f.company.value)){
				execute = false;
				validate.err('1',f.company.id);
			}
			if(!validate.empty(f.address.value)){
				execute = false;
				validate.err('1',f.address.id);
			}
			if(!validate.empty(f.postal.value)){
				execute = false;
				validate.err('1',f.postal.id);
			}
			if(!validate.empty(f.city.value)){
				execute = false;
				validate.err('1',f.city.id);
			}
			if(!validate.email(f.cemail.value)){
				execute = false;
				validate.err('1',f.cemail.id);
			}
			if(!validate.empty(f.arrdescription.value)){
				execute = false;
				validate.err('1',f.arrdescription.id);
			}
			if(!validate.empty(f.contactname.value)){
				execute = false;
				validate.err('1',f.contactname.id);
			}
			if(!validate.email(f.contactemail.value)){
				execute = false;
				validate.err('1',f.contactemail.id);
			}
			if(execute){
				//f.submit.disabled = true;
			}
			return execute;
		},
		institution:function(f){
			execute = true;
			if(!validate.empty(f.company.value)){
				execute = false;
				validate.err('1',f.company.id);
			}
			if(!validate.empty(f.address.value)){
				execute = false;
				validate.err('1',f.address.id);
			}
			if(!validate.empty(f.postal.value)){
				execute = false;
				validate.err('1',f.postal.id);
			}
			if(!validate.empty(f.city.value)){
				execute = false;
				validate.err('1',f.city.id);
			}
			if(!validate.email(f.cemail.value)){
				execute = false;
				validate.err('1',f.cemail.id);
			}
			if(!validate.empty(f.arrdescription.value)){
				execute = false;
				validate.err('1',f.arrdescription.id);
			}
			if(!validate.empty(f.contactname.value)){
				execute = false;
				validate.err('1',f.contactname.id);
			}
			if(!validate.email(f.contactemail.value)){
				execute = false;
				validate.err('1',f.contactemail.id);
			}
			if(execute){
				//f.submit.disabled = true;
			}
			return execute;
		},
		event:function(f){
			execute = true;
			if(!validate.empty(f.company.value)){
				execute = false;
				validate.err('1',f.company.id);
			}
			if(!validate.empty(f.address.value)){
				execute = false;
				validate.err('1',f.address.id);
			}
			if(!validate.empty(f.postal.value)){
				execute = false;
				validate.err('1',f.postal.id);
			}
			if(!validate.empty(f.city.value)){
				execute = false;
				validate.err('1',f.city.id);
			}
			if(!validate.empty(f.phone.value)){
				execute = false;
				validate.err('1',f.phone.id);
			}
			if(!validate.email(f.cemail.value)){
				execute = false;
				validate.err('1',f.cemail.id);
			}
			if(!validate.empty(f.arrdescription.value)){
				execute = false;
				validate.err('1',f.arrdescription.id);
			}
			if(execute){
				//f.submit.disabled = true;
			}
			return execute;
		}
	};
}();


/* Cookies
---------------------------------------------------------------- */

var cookies = function(){
	return {
		create:function(name,value,days){
			if(days){
				var date = new Date();
				date.setTime(date.getTime()+(days*24*60*60*1000));
				var expires = "; expires="+date.toGMTString();
			}
			else var expires = "";
			document.cookie = name+"="+value+expires+"; path=/";
		},
		read:function(name){
			var nameEQ = name + "=";
			var ca = document.cookie.split(';');
			for(var i=0;i < ca.length;i++){
				var c = ca[i];
				while (c.charAt(0)==' ') c = c.substring(1,c.length);
				if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
			}
			return null;
		},
		erase:function(name){
			cookies.create(name,"",-1);
		}
	};
}();


/* Library
---------------------------------------------------------------- */

var library = function(){
	return {
		elementposition:function(obj){
			var curleft=curtop=0;
			if (obj.offsetParent){
				curleft=obj.offsetLeft;
				curtop=obj.offsetTop;
				while(obj=obj.offsetParent){
					curleft+=obj.offsetLeft
					curtop+=obj.offsetTop
				}
			}
			return curleft+'/'+curtop;
		},
		cursorposition:function(e){
			e = e || window.event;
		    var cursor = {x:0, y:0};
		    if(e.pageX || e.pageY){
		        cursor.x = e.pageX;
		        cursor.y = e.pageY;
		    }else{
		        var de = document.documentElement;
		        var b = document.body;
		        cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
		        cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
		    }
		    return cursor.x+'/'+cursor.y;
		},
		documentdimensions:function(){
			var myWidth = 0, myHeight = 0;
			if(typeof(window.innerWidth)=='number'){
				myWidth = window.innerWidth;
				myHeight = window.innerHeight;
			}else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)){
				myWidth = document.documentElement.clientWidth;
				myHeight = document.documentElement.clientHeight;
			}else if(document.body && (document.body.clientWidth || document.body.clientHeight)){
				myWidth = document.body.clientWidth;
				myHeight = document.body.clientHeight;
			}
			return myWidth+'/'+myHeight;
		}
	};
}();


/* Opacity
---------------------------------------------------------------- */

var opacity = function(){
	return {
		toogle:function(id, opacStart, opacEnd, millisec){
			var speed = Math.round(millisec / 100);
		    var timer = 0;
		    if(opacStart>opacEnd){
				for(i=opacStart;i>=opacEnd;i--){
					setTimeout("opacity.change("+i+",'"+id+"')",(timer * speed));
					timer++;
				}
			}else if(opacStart<opacEnd){
				for(i=opacStart;i<=opacEnd;i++){
					setTimeout("opacity.change("+i+",'"+id+"')",(timer * speed));
					timer++;
				}
			}
		},
		change:function(opacity, id){
			var obj = document.getElementById(id);
		    if(obj){
				obj.style.opacity = (opacity / 100);
			    obj.style.filter = "alpha(opacity=" + opacity + ")";
				obj.style.backgroundColor = '#fff';
			}
		}
	};
}();


/* Countdown
---------------------------------------------------------------- */

var countdown = function(){
	var _from, _to;
	return {
		initialize:function(){	
			var obj = document.getElementById('countdown_section');
			if(obj){obj.style.display = 'block';}
			countdown.set();
		},
		set:function(){
			
			// From - To 
			//var _from = new Date();
			var dat = document.getElementById('servertime');
			var _from = new Date();
			var _to = new Date("March 27, 2010, 20:30:00 GMT+0100")
			
			var dayf1 = document.getElementById('day-f1');
			var dayf2 = document.getElementById('day-f2');
			var hourf1 = document.getElementById('hour-f1');
			var hourf2 = document.getElementById('hour-f2');
			var minf1 = document.getElementById('min-f1');
			var minf2 = document.getElementById('min-f2');
			var secf1 = document.getElementById('sec-f1');
			var secf2 = document.getElementById('sec-f2');
			
			if(_to<_from){
			
				dayf1.className = 'num n0';
				dayf2.className = 'num n0';
				hourf1.className = 'num n0';
				hourf2.className = 'num n0';
				minf1.className = 'num n0';
				minf2.className = 'num n0';
				secf1.className = 'num n0';
				secf2.className = 'num n0';
				
			}else{
			
				// Get miliseconds and calculate difference
				var _miliseconds = 24 * 60 * 60 * 1000;
				var _calc = (_to.getTime() - _from.getTime());
				
				// Days left
				var get_daysleft = _calc / _miliseconds;
				var _daysleft = Math.floor(get_daysleft);
				
				// Hours left
				var get_hoursleft = (get_daysleft - _daysleft) * 24;
				var _hoursleft = Math.floor(get_hoursleft);
				
				// Minutes left
				var get_minsleft = (get_hoursleft - _hoursleft) * 60;
				var _minsleft = Math.floor(get_minsleft);
				
				// Seconds left
				var get_secondsleft = (get_minsleft - _minsleft) * 60;
				var _secondsleft = Math.floor(get_secondsleft);
				
				// Fix
				var _ts_days = _daysleft.toString();
				if(_ts_days.length==1){_ts_days = '0' + _daysleft;}
				
				var _ts_hours = _hoursleft.toString();
				if(_ts_hours.length==1){_ts_hours = '0' + _hoursleft;}
				
				var _ts_mins = _minsleft.toString();
				if(_ts_mins.length==1){_ts_mins = '0' + _minsleft;}
				
				var _ts_seconds = _secondsleft.toString();
				if(_ts_seconds.length==1){_ts_seconds = '0' + _secondsleft;}
				

				// To string, split
				var _left = _ts_days + _ts_hours + _ts_mins + _ts_seconds;
				var _pos = _left.split('');
				
				dayf1.className = 'num n' + _pos[0];
				dayf2.className = 'num n' + _pos[1];
				hourf1.className = 'num n' + _pos[2];
				hourf2.className = 'num n' + _pos[3];
				minf1.className = 'num n' + _pos[4];
				minf2.className = 'num n' + _pos[5];
				secf1.className = 'num n' + _pos[6];
				secf2.className = 'num n' + _pos[7];
				
				setTimeout("countdown.set();", 1000);
			}
		}
	};
}();


/* Tooglers
---------------------------------------------------------------- */

function ajaxslide(){
	slide('list_arrangements');
}

var toogle = function(){
	return {
		showall:function(url){
			var obj = document.getElementById('list_arrangements');
			var elm = document.getElementById('list_recommend');
			var obj_head = document.getElementById('list_arrangements_head');
			var elm_head = document.getElementById('list_recommend_head');
			if(obj){
				if(obj.style.display == ''){
					obj.style.display = 'none';
					obj.style.height = '500px';
				}
				obj_head.style.display = 'block';
				elm_head.style.display = 'none';
			}
			if(obj.style.display!='block'){
				elm.style.display = 'none';
				ajax.load(url,'list_arrangements',true,['ajaxslide()']);
			}else{
				ajaxslide();
				elm.style.display = 'block';
				obj_head.style.display = 'none';
				elm_head.style.display = 'block';
			}
		},
		tick:function(url){
			var obj = document.getElementById('list_arrangements');
			var obj_head = document.getElementById('list_arrangements_head');
			if(obj){
				if(obj.innerHTML=='' || obj_head.style.display == 'none'){
					toogle.showall(url);
				}
			}
		},
		auto:function(url){
			var obj = document.getElementById('auto_open');
			if(obj){
				obj.href = url;
				obj.onclick();
			}
		},
		remove:function(){
			var obj = document.getElementById('all_arr');
			if(obj){
				obj.style.display = 'none';
			}
		},
		map:function(){
			var obj = document.getElementById('map_canvas_value');
			var elm = document.getElementById('map_canvas');

			if(obj){
				if(elm){
					googlemaps.initialize('Absalonsgade 15, Copenhagen, Denmark');
				}
			}
		},
		flickr:function(){
			var obj = document.getElementById('flickr_badge_wrapper');
			if(obj){
				var items = obj.getElementsByTagName('a');
				var current = items.length;
				for(d=0;d<current;d+=1){
					items[d].target = '_blank';
				}
			}else{
				setTimeout("toogle.flickr();", 2000);
			}
		},
		eventthankyou:function(){
			ajax.load('/globalsite.aspx?ObjectId=348BB55A-9702-483E-8C02-3A2A7004732E&Method=Thankyou','arrCreateAjaxLayer','','');
		},
		companythankyou:function(){
			ajax.load('/globalsite.aspx?ObjectId=9C4B563C-D5E3-4B18-988D-E8FFB10D3634&Method=Thankyou','companyCreateAjaxLayer','','');
		},
		institutionthankyou:function(){
			ajax.load('/globalsite.aspx?ObjectId=C7A443AB-2F4F-4D5F-B203-1DDB4E1EC2FF&Method=Thankyou','companyCreateAjaxLayer','','');
		}
	};
}();


/* Google Maps (http://code.google.com/apis/maps/documentation/v3/examples/index.html)
---------------------------------------------------------------- */

var googlemaps = function(){
	var geocoder, map;
	return {
		initialize:function(add){
			var obj = document.getElementById('map_canvas');
			var elm = document.getElementById('map_canvas_ini');
			geocoder = new google.maps.Geocoder();
			var latlng = new google.maps.LatLng(-34.397, 150.644);
			var myOptions = {
				zoom: 15,
				center: latlng,
				disableDefaultUI: true,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			}

			map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
			
			//if(elm){
			//	alert('jeg kunne finde grund kortet..!');
			//	if(elm.innerHTML==''){
			//		map = new google.maps.Map(document.getElementById('map_canvas_ini'), myOptions);
			//	}else{
			//		if(obj){alert('jeg kunne finde popup kortet..!');}
			//		map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
			//	}
			//}

			//map = new google.maps.Map(document.getElementById('map_canvas_ini'), myOptions);
			googlemaps.show(add);
		},
		show:function(add){
			var address = add;
			alert(address);
			if(geocoder){
				geocoder.geocode({ 'address': address}, function(results, status){
					if(status == google.maps.GeocoderStatus.OK){
						map.setCenter(results[0].geometry.location);
						var marker = new google.maps.Marker({
							map: map, 
							position: results[0].geometry.location
						});
					}else{
						alert("Geocode was not successful for the following reason: " + status);
					}
			  });
			}
		}
	};
}();


/* Window events
---------------------------------------------------------------- */

/* Resize */
window.onresize = function(){
	darken.fixed();
}

/* Scroll */
