
function openWindow(sURL, sWidth, sHeight, sResize, sScroll){
var winHeight, winWidth, winFeatures;
winHeight = ((screen.height-sHeight)/2);
winWidth = ((screen.width-sWidth)/2);
winFeatures = 'width=' + sWidth + ',height=' + sHeight + ',top=' + winHeight + ',left=' + winWidth + ',resizable=' + sResize + ',scrollbars=' + sScroll;
objWindow = window.open(sURL,'win',winFeatures);
//return objWindow;
}

function openModalWindow(sURL, sWidth, sWidth, sHeight){
	var winFeatures;
	winFeatures = 'dialogWidth:' + sWidth + 'px; dialogHeight:' + sHeight + 'px; center:yes';
	var win = window.showModalDialog(sURL, "window", winFeatures);
	return win;
}

var dtCh= ".";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   }
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("Dato formatet skal være : mm.dd.yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		//alert("Skriv inn gyldig dato")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		//alert("Skriv inn en gyldig dag")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		//alert("Skriv inn et gyldig 4 sifret år mellom "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		//alert("Skriv inn en gyldig dato")
		return false
	}
return true
}

function validateCreateSubProject( sForm ){
	var thisform;
	var bRet;
	
	bRet = true;
	
	thisform = eval('document.' + sForm);
	if ( thisform.sp_startdate.value != '' && !isDate(thisform.sp_startdate.value) ){
		alert('Startdatoen du har skrevet er ikke gyldig');
		bRet = false;
		thisform.sp_startdate.focus();
	}
	if ( thisform.sp_est_enddate.value != '' && !isDate(thisform.sp_est_enddate.value) ){
		alert('Den estimerte sluttdatoen du har skrevet er ikke gyldig');
		bRet = false;
		thisform.sp_est_enddate.focus();
	}
	if ( thisform.sp_act_enddate.value != '' && !isDate(thisform.sp_act_enddate.value) ){
		alert('Den reelle sluttdatoen du har skrevet er ikke gyldig');
		bRet = false;
		thisform.sp_act_enddate.focus();
	}
	return bRet;
}

function validateCreateProject( sForm ){
	var thisform;
	var bRet;
	var sRetMsg;
	
	sRetMsg = '';
	
	bRet = true;
	
	thisform = eval('document.' + sForm);
	if (thisform.p_name.value == ''){
		sRetMsg += 'Du må skrive inn et prosjektnavn\n';
		//alert('Du må skrive inn et prosjektnavn');
		bRet = false;
		thisform.p_name.focus();
	}
	if (thisform.p_resp_firstname.value == '' && thisform.p_resp_lastname.value == ''){
		sRetMsg += 'Du må skrive inn en kontaktperson\n';
		//alert('Du må skrive inn en kontaktperson');
		bRet = false;
		thisform.p_resp_firstname.focus();
	}
	if (thisform.p_addresse.value == ''){
		sRetMsg += 'Du må skrive inn en adresse\n';
		bRet = false;
		thisform.p_addresse.focus();
	}
	if (thisform.p_postnr.value == ''){
		sRetMsg += 'Du må skrive inn et postnummer\n';
		bRet = false;
		thisform.p_postnr.focus();
	}
	if (thisform.p_city.value == ''){
		sRetMsg += 'Du må skrive inn et poststed\n';
		bRet = false;
		thisform.p_city.focus();
	}
	if (thisform.p_resp_mob.value == ''){
		sRetMsg += 'Du må skrive inn et mobiltelefonnummer\n';
		//alert('Du må skrive inn et mobiltelefonnummer');
		bRet = false;
		thisform.p_resp_mob.focus();
	}
	//if (thisform.p_resp_email.value == ''){
	if (checkValidation ( thisform.p_resp_email ) != ''){
		//sRetMsg += 'Du må skrive inn en gyldig e-postadresse\n';
		//alert('Du må skrive inn en gyldig e-postadresse');
		sRetMsg += checkValidation ( thisform.p_resp_email );
		bRet = false;
		thisform.p_resp_email.focus();
	}
	if ( thisform.p_startdate.value != '' && !isDate(thisform.p_startdate.value) ){	
		sRetMsg += 'Startdatoen du har skrevet er ikke gyldig\n';
		//alert('Startdatoen du har skrevet er ikke gyldig');
		bRet = false;
		thisform.p_startdate.focus();
	}
	if ( thisform.p_est_enddate.value != '' && !isDate(thisform.p_est_enddate.value) ){
		sRetMsg += 'Den estimerte sluttdatoen du har skrevet er ikke gyldig\n';
		//alert('Den estimerte sluttdatoen du har skrevet er ikke gyldig');
		bRet = false;
		thisform.p_est_enddate.focus();
	}
	if ( thisform.p_act_enddate.value != '' && !isDate(thisform.p_act_enddate.value) ){
		sRetMsg += 'Den reelle sluttdatoen du har skrevet er ikke gyldig\n';
		//alert('Den reelle sluttdatoen du har skrevet er ikke gyldig');
		bRet = false;
		thisform.p_act_enddate.focus();
	}
	if (sRetMsg != '')
		alert(sRetMsg);
		
	return bRet;
}

/**
	Submitter en form
*/
function performAction( url, formNr )
{
	//alert('perform action url=' + url + '  formNr=' + formNr);
	//alert(document.forms[formNr].name);
	gSubmitForm = true;
	document.forms[formNr].action = url;
	document.forms[formNr].submit();
}

/**
	Submitter form, bruker får en popup, confirmation boks.
*/
function performActionDeleteFolderWithConfirmation( url )
{
	var i;
	var slett = true;
	for(i=0;i<document.theForm.length;i++)
	{
		if(document.theForm.elements[i].value == 'folder' && document.theForm.elements[i].checked)
			slett = confirm('Vil du slette alt som ligger i katalogen: ' + document.theForm.elements[i].name);
	}

	if (slett)
	{
		//alert('Alt ble slettet');
		document.theForm.action = url;
		document.theForm.submit();
	}

}

/*Gjør en test på at alle obligatoriske felter er fyllt inn ved oppretting av ny bruker*/
function validateUser(formNr){
	var tform = eval('document.forms[' + formNr + ']');
	var bRet;
	bRet = true;
	if (tform.users_firstname.value=='')
		bRet = false;
	if (tform.users_lastname.value=='')
		bRet = false;
	if (tform.users_name.value=='')
		bRet = false;
	
	if (!bRet){
		alert('Du må fylle inn den informasjonen som er merket med en rød stjerne (*)');
		return bRet;	
	}
	
	bRet = checkPassword(tform.users_password.value,6,12);
	
	if (!bRet)
		alert('Passordet må være mellom 6 og 12 tegn');
		
	return bRet;		
}

/* gjør en test på at et felt er fyllt ut med riktig antall tegn. Dette er bl.a. passord */
function checkPassword(upwd,min,max){
	if (upwd.length>=min && upwd.length<=max)
		return true;
	
	return false;
}

function checkValidation ( addressField ) {
	var retmsg;
	
	retmsg = '';
	
    if ( stringEmpty ( addressField.value ) ){
        //alert ( "Error! There is no E-Mail address entered" );
        retmsg += 'Du må fylle inn en gyldig E-postadresse\n';
    }
    else if ( noAtSign ( addressField.value ) ){
        //alert ( "Error! The E-Mail address does not contain an '@' character" );
        retmsg += 'E-postadressen mangler tegnet \'@\'\n';
    }
    else if ( nothingBeforeAt ( addressField.value ) ){
        //alert ( "Error! An E-Mail address must contain at least one character before the '@' character" );
        retmsg += 'En e-postadresse må inneholde minst et tegn før \'@\' tegnet\n';
    }
    else if ( noLeftBracket ( addressField.value ) ){
        //alert ( "Error! The E-Mail address contains a right square bracket ']',\nbut no corresponding left square bracket '['" );
        retmsg += 'E-postadressen inneholder en høyre hakeparentes \']\',\n men ingen tilhørende venstre hakeparentes \'[\'\n';
    }
    else if ( noRightBracket ( addressField.value ) ){
        //alert ( "Error! The E-Mail address contains a left square bracket '[',\nbut no corresponding right square bracket ']'" );
        retmsg += 'E-postadressen inneholder en venstre hakeparentes \'[\',\n men ingen tilhørende høyre hakeparentes \']\'\n';
    }
    else if ( noValidPeriod ( addressField.value ) ){
        //alert ( "Error! An E-Mail address must contain a period ('.') character" );
		   retmsg += 'En E-postadresse må inneholde et \'.\' tegn\n';
    }
    else if ( noValidSuffix ( addressField.value ) ){
        //alert ( "Error! An E-Mail address must contain a two or three character suffix" );
        retmsg += 'En E-post adresse må inneholde f.eks. \'.no\', \'.com\'\n';
    }
    //else
    //    return ('');
	//alert(retmsg);
    return ( retmsg );
    //alert (retmsg);
}

function linkCheckValidation ( formField ) {
    if ( checkValidation ( formField ) == true ) {
        alert ( 'E-Mail Address Validates OK' );
	}
	
	return ( false );
}

function stringEmpty ( address ) {
    // CHECK THAT THE STRING IS NOT EMPTY
    if ( address.length < 1 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noAtSign ( address ) {
    // CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
    if ( address.indexOf ( '@', 0 ) == -1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function nothingBeforeAt ( address ) {
    // CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
    if ( address.indexOf ( '@', 0 ) < 1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noLeftBracket ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
    if ( address.indexOf ( '[', 0 ) == -1 && address.charAt ( address.length - 1 ) == ']' ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noRightBracket ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
    if ( address.indexOf ( '[', 0 ) > -1 && address.charAt ( address.length - 1 ) != ']' ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noValidPeriod ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if ( address.indexOf ( '@', 0 ) > 1 && address.charAt ( address.length - 1 ) == ']' )
        return ( false );

    // CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
    if ( address.indexOf ( '.', 0 ) == -1 )
        return ( true );

    return ( false );
}

function noValidSuffix ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if ( address.indexOf ( '@', 0 ) > 1 && address.charAt ( address.length - 1 ) == ']' )
        return ( false );

    // CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
    var len = address.length;
    var pos = address.lastIndexOf ( '.', len - 1 ) + 1;
    if ( ( len - pos ) < 2 || ( len - pos ) > 3 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function showPopUpDTHML(e, divname) { 
   
	document.all[divname].style.visibility = "visible"; 
	document.all[divname].style.left = e.clientX + 20; 
	document.all[divname].style.top = e.clientY + 50; 
}

function hidePopUpDTHML(divname) { 
	document.all[divname].style.visibility = "hidden"; 
}
