var global_date_format="dd/mm/yyyy";var global_date_separator="/";var global_time_format="hh:mm";var global_time_separator=":";var global_decimal_separator=".";var dpu1=new Array();dpu1[0]="Sunday";dpu1[1]="Monday";dpu1[2]="Tuesday";dpu1[3]="Wednesday";dpu1[4]="Thursday";dpu1[5]="Friday";dpu1[6]="Saturday";
var dpmm1=new Array();dpmm1[0]="January";dpmm1[1]="February";dpmm1[2]="March";dpmm1[3]="April";dpmm1[4]="May";dpmm1[5]="June";dpmm1[6]="July";dpmm1[7]="August";dpmm1[8]="September";dpmm1[9]="October";dpmm1[10]="November";dpmm1[11]="December";

var dp_timer=null;
var dp_container=null;
var dp_yy_container=null;
var dp_mm_container=null;
var dp_all=null;

Date.prototype.toLocalizedString=function(){
	var dd=this.getDate()+"";
	var mm=(this.getMonth()+1)+"";
	var yyyy=this.getFullYear()+"";
	if(dd.length==1)dd="0"+dd;
	if(mm.length==1)mm="0"+mm;
	return(global_date_format.replace("dd",dd).replace("mm",mm).replace("yyyy",yyyy));
}

Date.prototype.parseExact=function(dateString){
	if(dateString.length!=global_date_format.length){return(false);}
	var a=dateString.split(global_date_separator);
	if(a.length!=3){return(false);}
	var b=global_date_format.split(global_date_separator);
	if(a[0].indexOf("0")==0)a[0]=a[0].substring(1,2);
	if(a[1].indexOf("0")==0)a[1]=a[1].substring(1,2);
	if(a[2].indexOf("0")==0)a[2]=a[2].substring(1,2);
	var c=0;
	for(var i=0;i<3;i++){
		switch(b[i]){
			case "dd":c=parseInt(a[i]);if(c>31)return(false);this.setDate(c);break;
			case "mm":c=parseInt(a[i]);if(c>12)return(false);this.setMonth(c-1);break;
			case "yyyy":if(a[i].length!=4)return(false);c=parseInt(a[i]);if(c>3000)return(false);if(c<1753)return(false);this.setYear(c);break;
			default:return(false);break;
		}
	}
	return(true);
}

Date.prototype.parseExactTime=function(timeString){
	if(timeString.length!=global_time_format.length){return(false);}
	var a=timeString.split(global_time_separator);
	if(a.length!=2){return(false);}
	var b=global_time_format.split(global_time_separator);
	if(a[0].indexOf("0")==0)a[0]=a[0].substring(1,2);
	if(a[1].indexOf("0")==0)a[1]=a[1].substring(1,2);
	var c=0;
	for(var i=0;i<2;i++){
		switch(b[i]){
			case "hh":c=parseInt(a[i]);if(c>23)return(false);this.setHours(c);break;
			case "mm":c=parseInt(a[i]);if(c>59)return(false);this.setMinutes(c);break;
			default:return(false);break;
		}
	}
	return(true);
}

function getDate(dateString){
	if(dateString.length!=global_date_format.length){return(null);}
	var ddsi=global_date_format.indexOf("dd");
	var ddei=global_date_format.indexOf("dd")+2;
	var mmsi=global_date_format.indexOf("mm");
	var mmei=global_date_format.indexOf("mm")+2;
	var yyyysi=global_date_format.indexOf("yyyy");
	var yyyyei=global_date_format.indexOf("yyyy")+4;	
	
	var dd = dateString.substring(ddsi,ddei);
	var mm = dateString.substring(mmsi,mmei);
	var yyyy = dateString.substring(yyyysi,yyyyei);
	if(dd.indexOf("0") == 0){
		dd = dd.substring(1);
	}
	if(mm.indexOf("0") == 0){
		mm = mm.substring(1);
	}
	return new Date(yyyy,parseInt(mm)-1,dd,0,0,0,0);
}
function showYear(){
	if(!(dp_yy_container))dp_yy_container=document.getElementById("dpyy");
	dp_yy_container.innerHTML=global_yy;
}
function showMonth(){if(!(dp_mm_container))dp_mm_container=document.getElementById("dpmm");dp_mm_container.innerHTML=dpmm[global_mm];}
function addYear(yy){global_yy+=yy;showYear();updateDatePicker();}
function addMonth(mm){global_mm+=mm;if(global_mm==-1){global_mm=11;global_yy--;showYear();}if(global_mm==12){global_mm=0;global_yy++;showYear();}showMonth();updateDatePicker();}
function updateDatePicker(){
	if(!(dp_container))dp_container=document.getElementById("dpcontent");
	dpd.setYear(global_yy);dpd.setMonth(global_mm);dpd.setDate(1);
	var a=dpd.getDay(),b=global_mm,d=global_mm,o="";
	if(a!=1){
		if(a==0)a=7;for(var i=a;i>1;i--)dpd.setDate(dpd.getDate()-1);d=dpd.getMonth();
		while((d<b)|(b==0&d==11)){o+="<p class=\"datepicker\">"+dpd.getDate()+"</p>";dpd.setDate(dpd.getDate()+1);d=dpd.getMonth();}
	}
	while(d==b){var l=dpd.getDate();o+="<a href=\"#\" class=\"datepicker\" onclick=\"chooseDateEvent("+l+","+(global_mm+1)+","+global_yy+");return(false);\">"+l+"</a>";dpd.setDate(l+1);d=dpd.getMonth();}
	a=dpd.getDay();
	if(a!=1){if(a==0)a=7;for(var i=7-a;i>=0;i--){o+="<p class=\"datepicker\">"+dpd.getDate()+"</p>";dpd.setDate(dpd.getDate()+1);}}
	dp_container.innerHTML=o;
}

try{
	var dp_now=new Date(),dpd=new Date();
	var dpmm=dpmm1;
	var dpu=dpu1;
	var global_yy=dpd.getYear(),global_mm=dpd.getMonth();
	if(global_yy<1000)global_yy+=1900;
	var dp_pn_yy="<a class=\"prev datepicker\" href=\"#\" onclick=\"addYear(-1);return(false);\">&lt;</a><a class=\"next datepicker\" href=\"#\" onclick=\"addYear(1);return(false);\">&gt;</a>";
	var dp_pn_mm="<a class=\"prev datepicker\" href=\"#\" onclick=\"addMonth(-1);return(false);\">&lt;</a><a class=\"next datepicker\" href=\"#\" onclick=\"addMonth(1);return(false);\">&gt;</a>";	
	var dp_yy="<div id=\"dpyy\" class=\"datepicker\">"+global_yy+"</div>";
	var dp_mm="<div id=\"dpmm\" class=\"datepicker\">"+dpmm[global_mm]+"</div>";
	var dp_hr="<div class=\"hr datepicker\"></div>";
	var dp_ww="<p class=\"datepicker\">"+dpu[1].charAt(0)+"</p><p class=\"datepicker\">"+dpu[2].charAt(0)+"</p><p class=\"datepicker\">"+dpu[3].charAt(0)+"</p><p class=\"datepicker\">"+dpu[4].charAt(0)+"</p><p class=\"datepicker\">"+dpu[5].charAt(0)+"</p><p class=\"dph datepicker\">"+dpu[6].charAt(0)+"</p><p class=\"dph datepicker\">"+dpu[0].charAt(0)+"</p>";
	var dp_end="<span id=\"dpcontent\" class=\"datepicker\"></span>";
	var dp_all=dp_pn_yy+dp_yy+dp_pn_mm+dp_mm+dp_hr+dp_ww+dp_end;
}catch(e){alert(e);}

var global_date_target=null;
function pickDateEvent(){
	//global_date_target=(this.nodeName.toLowerCase()=="a")?this.previousSibling:this;
	global_date_target=this;
	if(global_date_target.nodeName.toLowerCase()=="/input"&&global_date_target.previousSibling)global_date_target=global_date_target.previousSibling;
	var tmpValue=global_date_target.value;
	var fd=document.getElementById("TLfd");
	var td=document.getElementById("TLtd");
	if(fd != null && td != null){
		if(global_date_target==td && tmpValue==""){
			tmpValue=fd.value;
		}
	}
	showDatePickerEvent(tmpValue);
	return(false);
}

var global_datepicker=null;
function showDatePickerEvent(date){
	if(!(global_datepicker))global_datepicker=document.getElementById("datepicker");
	a=global_datepicker;
	if(!(a)){
		global_datepicker=document.createElement("div");
		global_datepicker.setAttribute("id","datepicker");
		global_datepicker.style.height="auto";
		if(global_datepicker.className){global_datepicker.className="datepicker";}else{global_datepicker.setAttribute("class","datepicker");}
		global_datepicker.innerHTML=dp_all;
		document.getElementsByTagName("body")[0].appendChild(global_datepicker);
	}
	a=global_datepicker;
	dpd=new Date();
	global_yy=dpd.getYear();
	global_mm=dpd.getMonth();
	if(date){
		if(dpd.parseExact(date)){
			global_yy=dpd.getFullYear();
			global_mm=dpd.getMonth();
		}
	}

	showYear();
	showMonth();
	updateDatePicker();
	a.style.display="block";
	a.style.position="absolute";
	//var left = ((event.clientX-180)<450)?450:(event.clientX-180);
	//a.style.left=left+"px";
	//a.style.top=(event.clientY-50)+"px";
	a.style.left="355px";
	a.style.top="670px";
	return(false);
}

function chooseDateEvent(dd, mm, yyyy){
	var d=new Date(yyyy,parseInt(mm)-1,dd,0,0,0,0);
	if(global_date_target)global_date_target.setAttribute("value",d.toLocalizedString());
	
	var dato=d.toLocalizedString();
	var datoarray=dato.split(".");
	var tmpTD=document.getElementById("tda");
	var tmpFD=document.getElementById("fda");
	
	var tia = document.getElementById("tia");
	var tib = document.getElementById("tib");
	var tic = document.getElementById("tic");
	var tid = document.getElementById("tid");
	var tie = document.getElementById("tie");
	var tif = document.getElementById("tif");
	if(global_date_target==tmpFD){
	tia.selectedIndex = datoarray[0]-1;
	tib.selectedIndex = datoarray[1]-1;
	tic = datoarray[2];
	}
	if(global_date_target==tmpTD){
	tid.selectedIndex = datoarray[0]-1;
	tie.selectedIndex = datoarray[1]-1;
	tif = datoarray[2];
	}
	

	if((global_date_target==tmpTD && tmpFD.value != "") || (global_date_target==tmpFD && tmpTD.value != "")){
		var fd=getDate(tmpFD.value);
		var td=getDate(tmpTD.value);
		if(fd != null && td != null){
			if(td.getTime() < fd.getTime()){
				alert("fradato er større enn tildato");
				if(global_date_target==tmpTD){tmpTD.value=""};
				if(global_date_target==tmpFD){tmpFD.value=""};
				return false;
			}
		}
	}
	if(!(global_datepicker))global_datepicker=document.getElementById("datepicker");
	if(global_datepicker)global_datepicker.style.display="none";
}
function handleChangeDate(){
	if(this.value > ""){
		var d=getDate(this.value);
		if(d != null){
			global_date_target=this;
			chooseDateEvent(d.getDate(),d.getMonth()+1,d.getFullYear());
		}
	}
}
function clearDatePicker(){
    if(!(global_datepicker))global_datepicker=document.getElementById("datepicker");
	if(global_datepicker){
	    if(!isElementOfClass(event.srcElement,"datepicker")){
	        global_datepicker.style.display="none";
	    }
	}
}

var v=document.getElementById("TLfd");
if(v)v.onclick=pickDateEvent;

v=document.getElementById("TLtd");
if(v)v.onclick=pickDateEvent;

v=document.getElementById("fda");
if(v)v.onclick=pickDateEvent;

v=document.getElementById("tda");
if(v)v.onclick=pickDateEvent;

if(document.addEventListener){
    document.addEventListener("mousedown",clearDatePicker,false);
}else{
    document.body.onmousedown=clearDatePicker;
}
