var checkOldDateTime = false;
var strDateText2 = 'Feltet skal indeholde en dato og tid\ni formatet:\ndd-mm-yyyy hh:nn\neller\nddmmyy hhnn\neller\nddmmyyhhnn';

function trim (str) {
    var str = str.replace(/^\s\s*/, ''), ws = /\s/, i = str.length;
    while (ws.test(str.charAt(--i)));
    return str.slice(0, i + 1);
}

function isEmail(emailStr){
var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=emailStr.match(emailPat);
if(matchArray==null){
return false;
}
var user=matchArray[1];
var domain=matchArray[2];
for(i=0; i<user.length; i++){
if(user.charCodeAt(i)>127){
return false;
}
}
for(i=0;i<domain.length;i++){
if(domain.charCodeAt(i)>127){
return false;
}
}
if(user.match(userPat)==null){
return false;
}
var IPArray=domain.match(ipDomainPat);
if(IPArray!=null){
for(var i=1;i<=4;i++){
if(IPArray[i]>255){
return false;
}
}
return true;
}
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for(i=0;i<len;i++){
if(domArr[i].search(atomPat)==-1){
return false;
}
}
if(domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1){
return false;
}
if(len<2){
return false;
}
return true;
}

function doDriverLock(obj,lock,driver){
	var curID = driver.options[driver.selectedIndex].value;
	if (curID== -1){ 
		alert('Du kan kun låse en chauffør,\nefter denne er valgt'); 
	} else {
		if (lock.value!='0'){
			lock.value='0'
			obj.src = 'images/lock-0.gif';
			driver.disabled = false;
		} else {
			lock.value=curID;
			obj.src = 'images/lock-1.gif';
			driver.disabled = true;
		};
	};
	return false;
}
function doAddress(obj,aObj){
	sAddressObject=aObj;
	sAddressChecked=0;
	sAddressTimeout=0;
	sAddress=aObj.value;
	var value=obj.value;
	var url='phone7.asp?P='+value;
	window.open(url, '_blank', 'toolbar=no,statusbar=yes,top=10000,left=10000,width=1,height=1,resizable=1,scrollbars=1');
	sAddressTimer=setTimeout('doAddressTimeOut_v2()',100);
}
function doAddress_v2(obj,aObj){
	sAddressObject=aObj;
	sAddressChecked=0;
	sAddressTimeout=0;
	sAddress=aObj.value;
	var value=obj.value;
	var url='phone6.asp?P='+value;
	window.open(url, '_blank', 'toolbar=no,statusbar=yes,top=10000,left=10000,width=1,height=1,resizable=1,scrollbars=1');
	sAddressTimer=setTimeout('doAddressTimeOut_v2()',100);
}

function doAddress_eniro(obj,aObj){
	sAddressObject=aObj;
	sAddressChecked=0;
	sAddressTimeout=0;
	sAddress=aObj.value;
	var value=obj.value;
	var url='i_eniro.asp?P='+value;
	window.open(url, '_blank', 'toolbar=no,statusbar=yes,top=10000,left=10000,width=1,height=1,resizable=1,scrollbars=1');
	sAddressTimer=setTimeout('doAddressTimeOut_v2()',100);
}


function doAddressTimeOut(){
	sAddressTimeout += 1;
//	alert(sAddressChecked+'\n'+sAddress+'\n'+sAddressTimeout);
	
	if (sAddressTimeout>30)
	{
		alert('Kan ikke få informationen.');
		clearTimeout(sAddressTimer);
	} else
	{

		if (sAddressChecked==1){
			sAddressObject.value=sAddress;
		}else
		{
			sAddressTimer=setTimeout('doAddressTimeOut()',100);
		}
	}
}

function doAddressTimeOut_v2(){
	sAddressTimeout += 1;
//	alert(sAddressChecked+'\n'+sAddress+'\n'+sAddressTimeout);
	
	if (sAddressTimeout>30)
	{
		alert('Kan ikke få informationen.');
		clearTimeout(sAddressTimer);
	} else
	{

		if (sAddressChecked==1){
//			sAddressObject.value=sAddress;
		}else
		{
			sAddressTimer=setTimeout('doAddressTimeOut_v2()',100);
		}
	}
}
var changed=false;

function cf(){changed=true;}
function cft(){cf();return true;}
function cfta(){cf();return true;}


function doVatNumber(){
	var value=document.data.FIELD_VATnumber.value;
	if (value.length==0)
	{window.open('http://www.cvr.dk/Site/Forms/CompanySearch/CompanySearch.aspx', '_blank', '');
	}else{
	if(value.length != 8){alert('CVR nr skal være på 8 tal.');}else{var url='http://www.cvr.dk/Site/Forms/PublicService/DisplayCompany.aspx?cvrnr='+value;window.open(url, '_blank', '');}}}


function y2k(year) { return (year < 100) ? parseInt(year,10) + 2000 : (year < 200) ? parseInt(year,10) + 1900 : year;}
function n2(value) { return (parseInt(value,10) < 10) ? '0' + parseInt(value,10) : '' + value;}

function date(){
	var d = new Date();
	return n2(d.getDate())+'-'+n2(d.getMonth()+1)+'-'+d.getFullYear();
}
function datetime(){
	var d = new Date();
	return n2(d.getDate())+'-'+n2(d.getMonth()+1)+'-'+d.getFullYear()+' '+n2(d.getHours())+':'+n2(d.getMinutes());
}

function isDateOK(xday,xmonth,xyear){
	var d = new Date();
	xmonth=((!xmonth)?d.getMonth()+1:xmonth);
	xyear=((!xyear)?d.getFullYear():y2k(xyear));
	var test = new Date();
	test.setFullYear(xyear,xmonth-1,xday)
	if((test.getFullYear() == xyear) && 
		(xmonth == test.getMonth()+1) && 
		(xday == test.getDate())){ 
			return n2(xday)+'-'+n2(xmonth)+'-'+xyear;
		}
	else 
		{
			return '';
		}
}


function isDateTimeOK(day,month,year,hour,min) {
	var d = new Date();
	month=((!month)?d.getMonth()+1:month);
	year=((!year)?y2k(d.getYear()):y2k(year));
	hour=((!hour)?'00':hour);
	min=((!min)?'00':min);
    var test = new Date(year,month-1,day,hour,min);

	if ( (y2k(test.getYear()) == y2k(year)) &&
         (month == test.getMonth()+1) &&
         (day == test.getDate()) &&
         (hour == test.getHours()) &&
         (min == test.getMinutes()) ) {
			if ((checkOldDateTime) && ( test< (new Date()) ))
			{return '';}
			else{
		        return day+'-'+month+'-'+y2k(year)+' '+hour+':'+min;
			}
	}
    else
	{
//		alert(y2k(test.getYear())+'='+y2k(year)+' '+month+'='+test.getMonth+' '+day+'='+test.getDate+' '+hour+'='+test.getHours+' '+min+'='+test.getMinutes);
        return '';
	}
}

function isDate(str){
	var d='';
	var r1 = new RegExp('^[0-9]{2}-[0-9]{2}-[0-9]{4}$');
	var r2 = new RegExp('^[0-9]{8}$');
	var r3 = new RegExp('^[0-9]{1}|[0-9]{2}|[0-9]{4}|[0-9]{6}$');
	if (r1.test(str)){d = isDateOK(str.substring(0,2),str.substring(3,5),str.substring(6,10));}
	else if (r2.test(str)){d = isDateOK(str.substring(0,2),str.substring(2,4),str.substring(4,8));}
	else if (r3.test(str)){d = isDateOK(str.substring(0,2),str.substring(2,4),str.substring(4,6));} 
	return d;
}

function cfd(object){
	cf();
	var str=trim(''+object.value);
	if(str==''){return true;}
	else
	{
		if (str.toLowerCase()=='dd'){str=date();}
		str=isDate(str);
		if (str=='') {window.alert('Feltet skal indeholde en dato\ni formatet:\ndd-mm-yyyy\neller\nddmmyy\neller\nddmmyyyy');object.focus();return false;}else{object.value=str;cf();return true;}
		}
}

function isDateTime(str){
	var d='';
	var r1 = new RegExp('^[0-9]{2}-[0-9]{2}-20[0-9]{2} [0-9]{2}:[0-9]{2}$');	// 01-01-2006 11:22
	var r4 = new RegExp('^[0-9]{2}-[0-9]{2}-20[0-9]{2} [0-9]{4}$');             // 01-01-2006 1122
	var r5 = new RegExp('^[0-9]{2}-[0-9]{2}-20[0-9]{2} [0-9]{2}$');				// 01-01-2006 11
	var r2 = new RegExp('^[0-9]{6} [0-9]{4}$');									// 01012006 1122
	var r3 = new RegExp('^[0-9]{6}[0-9]{4}$');									// 010120061122
	var r6 = new RegExp('^[0-9]{6} [0-9]{2}$');									// 010106 11
	var r7 = new RegExp('^[0-9]{8}$');											// 01010611
	var r8 = new RegExp('^[0-9]{6}$');											// 010106
	if (r1.test(str)){	
		d=isDateTimeOK(str.substring(0,2),str.substring(3,5),str.substring(6,10),str.substring(11,13),str.substring(14,16));
		}
	else if (r4.test(str)){	
		d=isDateTimeOK(str.substring(0,2),str.substring(3,5),str.substring(6,10),str.substring(11,13),str.substring(13,15));
		}
	else if (r5.test(str)){	
		d=isDateTimeOK(str.substring(0,2),str.substring(3,5),str.substring(6,10),str.substring(11,13),0);
		}
	else if (r2.test(str)){
		d=isDateTimeOK(str.substring(0,2),str.substring(2,4),str.substring(4,6),str.substring(7,9),str.substring(9,11));
		}
	else if (r3.test(str)){
		d=isDateTimeOK(str.substring(0,2),str.substring(2,4),str.substring(4,6),str.substring(6,8),str.substring(8,10));
		}
	else if (r6.test(str)){
		d=isDateTimeOK(str.substring(0,2),str.substring(2,4),str.substring(4,6),str.substring(7,9),0);
		}
	else if (r7.test(str)){
		d=isDateTimeOK(str.substring(0,2),str.substring(2,4),str.substring(4,6),str.substring(6,8),0);
		}
	else if (r8.test(str)){
		d=isDateTimeOK(str.substring(0,2),str.substring(2,4),str.substring(4,6),'',0);
		}

	return d;
}

function cfdt(object){
	cf();
	var str=trim(''+object.value);
	if (str=="") {return true;}
	if (str.toLowerCase()=='dd'){str=datetime();}
	var str=isDateTime(str);
	if (str==''){window.alert(strDateText2);object.focus();return false;}else{object.value=str;return true;}
}


function sfd(object, e){
	var key = window.event ? e.keyCode : e.which;
	var keychar = String.fromCharCode(key).charCodeAt();

	if(keychar==32)
	{
		var str=isDate(object.value);
		object.value = str+' ';
		return false;
	} else
	{
	return true;
	}
}

function returnDateTime(str){
	var d=null;
	var r1 = new RegExp('^[0-9]{2}-[0-9]{2}-20[0-9]{2} [0-9]{2}:[0-9]{2}$');
	if (r1.test(str)){	
		d = new Date(str.substring(6,10),str.substring(3,5)-1,str.substring(0,2),str.substring(11,13),str.substring(14,16));
		}
	return d;
}


function cfe(object){
	cf();
	if (!isEmail(object.value)&&object.value!=''){
		window.alert('Feltet skal indeholde en korrekt e-mail adresse.');
		object.focus();
		return false;
	}else{return true;}
}

function cfe2(object){
	cf();
	var i
	var Error=0;
	var Email=object.value;
	var EmailArr=Email.split(";");
	var len=EmailArr.length;
	for(i=0;i<len;i++){
	if(!isEmail(EmailArr[i])&&EmailArr[i]!=''){Error++}; 
	}

	if (Error>0){
		window.alert('Feltet skal indeholde korrekte e-mail adresser adskilt med ;');
		object.focus();
		return false;
	}else{return true;}
}


function cfdtg(object,smallObject){
	var str,d1,d2
	if (cfdt(object))
	{
		str = object.value;
		d2=returnDateTime(isDateTimeOK(str.substring(0,2),str.substring(3,5),str.substring(6,10),str.substring(11,13),str.substring(14,16)));
		str = smallObject.value;
		d1=returnDateTime(isDateTimeOK(str.substring(0,2),str.substring(3,5),str.substring(6,10),str.substring(11,13),str.substring(14,16)));

		if (d2<d1)
		{
			window.alert('Feltet skal indeholde en større dato og tid.');
			object.focus();
			return false;
		} else
		{ return true; }
	} else
	{ return false;}
}

function cfi(object){cf();if(object.value==''){return true;}var str=parseInt(object.value,10)+0;if(isNaN(str)){window.alert('Feltet skal indeholde et tal.');object.focus();return false;}else{object.value=str;return true;}}

function cff(object){
	cf();
	if (object.value==''){
		return true;
	}
	var st=''+object.value;
	st=st.replace(',','.');
	var str=parseFloat(st)+0;
	if (isNaN(str)){
		window.alert('Feltet skal indeholde en pris.');
		object.focus();
		return false;
	}else{
//		st = str;
//		window.alert(st);
//		st=st.replace('.',',');

		object.value=str;
		return true;
	}
}


var FieldArray = ':';

function setValidate(field){
FieldArray += field+':';
}

function validateFields(Object) {

	var valid = true;
	var myType;
	var ObjectName;
	var sDummy='';
	var StartT=null;
	var EndT=null;
	var checkBoxes = false;
	var checkboxChecked = false;
	var radioButtons = false;
	var radioChecked = false;

    for (var i=0, j=Object.elements.length; i<j; i++) {
		myType = Object.elements[i].type;
		ObjectName = Object.elements[i].name;


		if (FieldArray.indexOf(':'+ObjectName+':')!=-1){
			
			if (myType=='select-one'|| myType == 'select-multiple') {
				if (-1==Object.elements[i].options[Object.elements[i].selectedIndex].value){
						valid = false; 
						sDummy += '\''+ObjectName+'\' skal vælges.\n';
						Object.elements[i].style.backgroundColor="#FFFF99";
					}
			} else
			if (myType=='text' || myType == 'password' || myType == 'textarea') { 
				if (''==Object.elements[i].value){
						valid = false;
						sDummy += '\''+ObjectName+'\' skal udfyldes.\n';
						Object.elements[i].style.backgroundColor="#FFFF99";
				}
			} else
			{
				if (myType == 'radio') {
					radioButtons = true;
					if (Object.elements[i].checked) radioChecked = true;
				}

				if (myType == 'checkbox') {
					checkBoxes = true;
					if (Object.elements[i].checked){checkboxChecked = true;}else {Object.elements[i].style.backgroundColor="#FFFF99";}
				}
			}
		} 
    }

    if ((checkBoxes && !checkboxChecked) || (radioButtons && !radioChecked)){ valid = false;sDummy+=ObjectName+'\n'}

    if (!valid){
		sDummy = '\nAlle gule felter skal benyttes.'
        alert(sDummy);
	}

    return valid;
}


function checkDates3(D1,D2,D3)
{
	var ok=true;
	var xD1,xD2,xD3
	if (D1){xD1 = returnDateTime(D1.value);} else return ok;
	if (D2){xD2 = returnDateTime(D2.value);} else return ok;
	if (D3){xD3 = returnDateTime(D3.value);} else return ok;
	if ((xD1>xD2)||(xD1>xD3)||(xD2>xD3))
	{
		ok = false;
		alert('\nDatoerne skal være i følgende rækkefølge\n- Bus hos kunden\n- Start tid\n- Slut tid\nRet venligst og gem så turen.'); 
	}
	return ok;
}

function checkDates2(D1,D2)
{
	var ok=true;
	var xD1,xD2
	if (D1){xD1 = returnDateTime(D1.value);} else return ok;
	if (D2){xD2 = returnDateTime(D2.value);} else return ok;
	if (xD1>xD2)
	{
		ok = false;
		alert('\nDatoerne skal være i følgende rækkefølge\n- Start tid\n- Slut tid\nRet venligst og gem så turen.'); 
	}
	return ok;
}


function format(str,len)
{
	var s = ''+str
	while (s.length < len){s = '0' + s;}
	return s;
}

function fdt(str, addMin)
{
//	alert(str+'\n'+addMin);
	var year, month, day, hour, min
	year = str.substring(6,10)
	month = str.substring(3,5)-1
	day = str.substring(0,2)
	hour = str.substring(11,13)
	min = str.substring(14,16) 
	
	var d = new Date(year, month, day, hour, min)
	var d1 = new Date(d.getTime() + addMin*60*1000);
	var m = format(d1.getMonth()+1,2)
	var d = format(d1.getDate(),2)
	var y = y2k(d1.getYear())
	var h = format(d1.getHours(),2)
	var n = format(d1.getMinutes(),2)

    return d+'-' +m+'-'+y+' '+h+':'+n;
}
function doDateMeeting(orgObj,obj,value)
{
	if (obj.value.length==0)
	{
		if (orgObj.value.length>0)
		{
			obj.value = fdt(orgObj.value, value);
		}
	}
}


function doDateEnd(orgObj,obj)
{
	if (obj.value.length==0)
	{
		if (orgObj.value.length>0)
		{
			var str = orgObj.value;

			obj.value = str.substring(0,11);
		}
	}
}

function s(text){window.status = text;}

function doSMS(Owner,DriverIDs,message){
	var popup='working';
//	if (Owner=29){popup='_blank'};
	var url='/cms/sms.asp?O='+escape(Owner)+'&DriverIDs='+escape(DriverIDs)+'&smsMessage='+escape(message);
//	if (Owner=29){alert(url);};
	window.open(url, popup, 'toolbar=no,statusbar=yes,top=10000,left=10000,width=1,height=1,resizable=1,scrollbars=1');
}
function maxLength(object,maxLen){

	if (object.value.length>maxLen)
	{
		alert('Du kan maximal indtaste '+maxLen+' tegn i dette felt');
		object.value = object.value.substring(0,maxLen);
		object.focus();
		return true;
	}
	return true;
}

function o2(M,L,ID,L1,L2,L3,L4,LT,CP){location.href='?mode='+M+'&I='+ID+'&L='+L+'&L1='+L1+'&L2='+L2+'&L3='+L3+'&L4='+L4+'&D='+LT+'&CP='+CP;return false;}
function styleInW(obj){obj.className = obj.className + '_s';return false;}
function styleOut(obj){obj.className = String(obj.className).substring(0,4);return false;}
function o6(M,L,ID,L1,L2,L3,L4,LT,CP,LA,P,CS){if(CS==1){location.href='/'+LA+'/'+P+'/?mode='+M+'&I='+ID+'&L='+L+'&L1='+L1+'&L2='+L2+'&L3='+L3+'&L4='+L4+'&D='+LT+'&CP='+CP;}else{location.href='?mode='+M+'&I='+ID+'&L='+L+'&L1='+L1+'&L2='+L2+'&L3='+L3+'&L4='+L4+'&D='+LT+'&CP='+CP;};return false;}

function selectNone(object) {
    for (var i=0, l=object.options.length;i<l;i++) {
        object.options[i].selected = false;
    }
}

function deleteOption(object,index) {
    object.options[index] = null;
}

function addOption(object,text,value) {

  selectNone(object);

	var defaultSelected = true;
  var selected = true;

	var tekstLen = text.lastIndexOf(' (Nicam)');
	if (tekstLen>0) {
		text = text.substring(0,tekstLen)+'*';
		var valueLen = value.lastIndexOf(':N');
		value = value.substring(0,valueLen);
	}

	var optionName = new Option(text, value, defaultSelected, selected);

  object.options[object.length] = optionName;
}

function selectAll(object) {
    for (var i=0, l=object.options.length;i<l;i++) {
        object.options[i].selected = true;
    }
}

function copySelected(fromObject,toObject) {
	var i;
    for (i=0, l=fromObject.options.length;i<l;i++) {
        if (fromObject.options[i].selected) {
            addOption(toObject,fromObject.options[i].text,fromObject.options[i].value);
		}
    }
    for (i=fromObject.options.length-1;i>-1;i--) {
        if (fromObject.options[i].selected) {
            deleteOption(fromObject,i);
		}
    }
}

function copySelected2(fromObject,toObject) {
	var i;
	alert(fromObject.name);
    for (i=0, l=fromObject.options.length;i<l;i++) {
        if (fromObject.options[i].selected) {
            addOption(toObject,fromObject.options[i].text,fromObject.options[i].value);
		}
    }
    for (i=fromObject.options.length-1;i>-1;i--) {
        if (fromObject.options[i].selected) {
            deleteOption(fromObject,i);
		}
    }
}

function copyAll(fromObject,toObject) {
	var i;
    for (i=0, l=fromObject.options.length;i<l;i++) {
        addOption(toObject,fromObject.options[i].text,fromObject.options[i].value);
    }
    for (i=fromObject.options.length-1;i>-1;i--) {
        deleteOption(fromObject,i);
    }
}
