function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

var gmessage = "";

function LTrim(str)
{
    if (str==null)
    {
        return null;
    }

    for(var i=0;str.charAt(i)==" ";i++)

        ;
    return str.substring(i,str.length);
}

function RTrim(str)
{
    if (str==null)
    {
        return null;
    }

    for(var i=str.length-1;str.charAt(i)==" ";i--)

        ;
    return str.substring(0,i+1);
}

function Trim(str)
{
    return LTrim(RTrim(str));
}

function ContainsBlank(str)
{ 
var found = false;

    for(var i=0;i<str.length-1;i++)
	{
	if (str[i] == " "){found = true}
	}
	
return found;
}

function ContainsBlank(str)
{ 
var found = false;

    for(var i=0;i<str.length-1;i++)
	{
	if (str[i] == " "){found = true}
	}
	
return found;
}

function checkDate(fld) {  // checks 29/2/2004
    var mo, day, yr;
    var entry = fld;
    var re = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/;

    if (re.test(entry)) {
        var delimChar = (entry.indexOf("/") != -1) ? "/" : "-";
        var delim1 = entry.indexOf(delimChar);
        var delim2 = entry.lastIndexOf(delimChar);
        day = parseInt(entry.substring(0, delim1), 10);
        mo = parseInt(entry.substring(delim1+1, delim2), 10);
        yr = parseInt(entry.substring(delim2+1), 10);
//	alert("mo=" + mo + " day=" + day + " year=" + yr);
        var testDate = new Date(yr, mo-1, day);
//        alert(testDate)
        if (testDate.getDate() == day) {
            if (testDate.getMonth() + 1 == mo) {
                if (testDate.getFullYear() == yr) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        } else {
            return false;
        }
    } else {
        return false;
    }
    return false;
}

var numb = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyz';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var spec = '_';
 
function isValid(parm,val) {
  if (parm == "") return false;
  for (i=0; i<parm.length; i++) {
    if (val.indexOf(parm.charAt(i),0) == -1) return false;
  }
  return true;
}
 
function isNum(parm) {return isValid(parm,numb);}
function isLower(parm) {return isValid(parm,lwr);}
function isUpper(parm) {return isValid(parm,upr);}
function isAlpha(parm) {return isValid(parm,lwr+upr);}
function isAlphanum(parm) {return isValid(parm,lwr+upr+numb);}
function isAlphanumSpec(parm) {return isValid(parm,lwr+upr+numb+spec);}

function isMoney (text) {
  var format = /^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(\.[0-9]{2})?$/;
  return format.test(text);
}

function showrow(rowx)
{
document.getElementById(rowx).className ='show1';

}

function hiderow(rowx)
{
document.getElementById(rowx).className ='hide1';
}

function validateemail(email)
{
gmessage = "";  // global
var emailtest1 = /^[^@]+@[^@.]+\.[^@]*\w\w$/

if (!emailtest1.test(email))
{
gmessage = "Not a valid email address";
return false;
}
else
{
var emailtest2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/

if (!emailtest2.test(email))
  gmessage = "Unusual email address - check if correct";
}

return true;
}  //  validateemail

var nbsp = 160;    // non-breaking space char
var node_text = 3; // DOM text node-type
var emptyString = /^\s*$/
var glb_vfld;      // retain vfld for timer thread

function msg(fld,     // id of element to focus on. id of element to display message is inf_ + id
             message) // string to display
{
    var dispmessage;

    if (emptyString.test(message))
        dispmessage = String.fromCharCode(nbsp);
    else
        dispmessage = message;

    var elem = document.getElementById("inf_" + fld);
	
    elem2 = new Object();
	elem2 = document.getElementById(fld);

    if (elem == null)
    {
        alert('id=inf_' + fld + ' is unknown and message=' + message)
    };

    if (elem2 == null)
    {
        alert('id=' + fld + ' is unknown and message=' + message)
    };

    elem.innerHTML = dispmessage;
	document.getElementById(fld).focus();
};  //  msg

function EmailFunction(to1, domain1, subject1, name1)
{
document.write('<a href="mai' + 'lto:' + to1 + '@' + domain1 + '?subject=' + subject1 + '">');
document.write(name1 + '</a>');

}


/* Script by: www.jtricks.com
 * Version: 20070301
 * Latest version:
 * www.jtricks.com/javascript/window/box.html
 */
// Moves the box object to be directly beneath an object.
function move_box(an, box)
{
    var cleft = 0;
    var ctop = 0;
    var obj = an;

    while (obj.offsetParent)
    {
        cleft += obj.offsetLeft;
        ctop += obj.offsetTop;
        obj = obj.offsetParent;
    }

    box.style.left = cleft + 'px';

    ctop += an.offsetHeight + 8;

    // Handle Internet Explorer body margins,
    // which affect normal document, but not
    // absolute-positioned stuff.
    if (document.body.currentStyle &&
        document.body.currentStyle['marginTop'])
    {
        ctop += parseInt(
            document.body.currentStyle['marginTop']);
    }

    box.style.top = ctop + 'px';
}

// Shows a box if it wasn't shown yet or is hidden
// or hides it if it is currently shown
function show_hide_box(an, width, height, borderStyle)
{
    var href = an.href;
//	alert(href);

//    var boxdiv = document.getElementById(href);
    var boxdiv = document.getElementById(href);

    if (boxdiv != null)
    { alert('boxdiv != null');
        if (boxdiv.style.display=='none')
        {
            // Show existing box, move it
            // if document changed layout
            move_box(an, boxdiv);
            boxdiv.style.display='block';

            bringToFront(boxdiv);

            // Workaround for Konqueror/Safari
            if (!boxdiv.contents.contentWindow)
                boxdiv.contents.src = href;
        }
        else
            // Hide currently shown box.
            boxdiv.style.display='none';
        return false;
    } else{alert('boxdiv == null');};

    // Create box object through DOM
    boxdiv = document.createElement('div');

    // Assign id equalling to the document it will show
    boxdiv.setAttribute('id', href);

    boxdiv.style.display = 'block';
    boxdiv.style.position = 'absolute';
    boxdiv.style.width = width + 'px';
    boxdiv.style.height = height + 'px';
	
    boxdiv.style.border = borderStyle;
    boxdiv.style.textAlign = 'right';
    boxdiv.style.padding = '4px';
    boxdiv.style.background = '#FFFFFF';
    document.body.appendChild(boxdiv);

    var offset = 0;

    // Remove the following code if 'Close' hyperlink
    // is not needed.
    var close_href = document.createElement('a');
    close_href.href = 'javascript:void(0);';
    close_href.onclick = function()
        { show_hide_box(an, width, height, borderStyle); }
		
		
var fontx = document.createElement("font");
fontx.style.color = "black";
fontx.style.fontWeight = "bold";
fontx.style.fontFamily = "Verdana, Geneva, Arial, helvetica, sans-serif";
fontx.style.fontSize = "12px";
fontx.style.textDecoration = "none";

fontx.appendChild(document.createTextNode("Steng"));
close_href.appendChild(fontx);  
/*		
close_href.appendChild(document.createTextNode("Steng"));
close_href.className = 'myC';
*/
		
 /*   close_href.appendChild(document.createTextNode('Steng')); */
    boxdiv.appendChild(close_href);
    offset = close_href.offsetHeight;
    // End of 'Close' hyperlink code.

    var contents = document.createElement('iframe');
    //contents.scrolling = 'no';
    contents.overflowX = 'hidden';
    contents.overflowY = 'scroll';
    contents.frameBorder = '0';
    contents.style.width = width + 'px';
    contents.style.height = (height - offset) + 'px';

    boxdiv.contents = contents;
    boxdiv.appendChild(contents);

    move_box(an, boxdiv);

    if (contents.contentWindow)
        contents.contentWindow.document.location.replace(
            href);
    else
        contents.src = href;

    // The script has successfully shown the box,
    // prevent hyperlink navigation.
    return false;
}

function getAbsoluteDivs()
{
    var arr = new Array();
    var all_divs = document.body.getElementsByTagName("DIV");
    var j = 0;

    for (i = 0; i < all_divs.length; i++)
        if (all_divs.item(i).style.position=='absolute')
        {
            arr[j] = all_divs.item(i);
            j++;
        }

    return arr;
}

function bringToFront(obj)
{
    if (!document.getElementsByTagName)
        return;

    var divs = getAbsoluteDivs();
    var max_index = 0;
    var cur_index;
	alert('divs.length=' + divs.length);

    // Compute the maximal z-index of
    // other absolute-positioned divs
    for (i = 0; i < divs.length; i++)
    {
        var item = divs[i];
        if (item == obj ||
            item.style.zIndex == '')
            continue;

        cur_index = parseInt(item.style.zIndex);
        if (max_index < cur_index)
        {
            max_index = cur_index;
        }
    }

    obj.style.zIndex = max_index + 1;
}

function ClearMessagesNew()
{
msg("firstname", "");
msg("lastname", "");
msg("address1", "");
msg("address2", "");
msg("town", "");
msg("postcode", "");
msg("phone", "");
msg("mobile", "");
msg("email", "");
msg("emailrepeat", "");
msg("userid", "");
msg("password", "");
msg("passwordrepeat", "");
msg("birthdate1", "");
}  //  ClearMessagesNew

function CheckRegisterNew()
{  // put checks in reverse order so that focus is on uppermost field with an error

ClearMessagesNew();

var nerror=0;
var focuselem = "firstname";

if ((document.getElementById("birthdate1").value!=0)||(document.getElementById("birthdate3").value!=0)||(document.getElementById("birthdate2").value!=0))
{if (!checkDate(document.getElementById("birthdate1").value + '/' + document.getElementById("birthdate2").value + '/' + document.getElementById("birthdate3").value)){msg("birthdate1", "Fødselsdatumfeltet må være korrekt eller tomt");focuselem="birthdate1";nerror++}};

pw1=Trim(document.getElementById("password").value);
pw2=Trim(document.getElementById("passwordrepeat").value); 

if(pw1==""){msg("password", "Passordet må være minst 6 tegn");focuselem="password";nerror++}else
{if(pw1.length < 6){msg("password", "Passordet må være minst 6 tegn");focuselem="password";nerror++}else
{if (ContainsBlank(pw1)){msg("password", "Passordet må være minst 6 tegn uten blankfelt");focuselem="password";nerror++}else
{if (pw1.toLowerCase() != pw2.toLowerCase()){msg("passwordrepeat", "Gjentat passordet ikke er samme");focuselem="password";nerror++}}}};

if(pw2==""){msg("passwordrepeat", "Passordet må være minst 6 tegn");focuselem="password";nerror++};

userid=Trim(document.getElementById("userid").value); 

if(userid==""){msg("userid", "Brukernavnet må være minst 6 tegn");focuselem="userid";nerror++}else
{if(userid.length < 6){msg("userid", "Brukernavnet må være minst 6 tegn");focuselem="userid";nerror++}else
{if (ContainsBlank(userid)){msg("userid", "Brukernavnet må ikke inneholde blankfelt");focuselem="userid";nerror++}else
{if (!isAlphanumSpec(userid)){msg("userid", "Bare alfa, nummer og understreke tegn tillatt");focuselem="userid";nerror++}}}};

email=Trim(document.getElementById("email").value); 

if(email==""){msg("email", "E-posten");focuselem="email";nerror++}else
{if(!validateemail(email)){msg("email", "E-posten ikke er korrekt");focuselem="email";nerror++}else{msg("email", gmessage)}};

emailrepeat=Trim(document.getElementById("emailrepeat").value); 
if(emailrepeat==""){msg("emailrepeat", "E-posten");focuselem="emailrepeat";nerror++}else
{if(!validateemail(emailrepeat)){msg("emailrepeat", gmessage);focuselem="emailrepeat";nerror++}else
{if(email != emailrepeat){msg("emailrepeat", "Gjenta med samme e-posten");focuselem="emailrepeat";nerror++}else{msg("emailrepeat", gmessage)}}};

mobile=Trim(document.getElementById("mobile").value);  
if(mobile!=""){
if(!isNum(mobile)){msg("mobile", "Mobilnummer eller blank");focuselem="mobile";nerror++}};

phone=Trim(document.getElementById("phone").value); 
if((phone!='')&&(!isNum(phone))){msg("phone", "Telefonnummer eller blank");focuselem="phone";nerror++};

postcode=Trim(document.getElementById("postcode").value); 
if(postcode==""){msg("postcode", "Postnummer");focuselem="postcode";nerror++};

town=Trim(document.getElementById("town").value); 
if(town==""){msg("town", "Poststed");focuselem="town";nerror++};

address1=Trim(document.getElementById("address1").value); 
if(address1==""){msg("address1", "Adressen");focuselem="address1";nerror++};

lastname=Trim(document.getElementById("lastname").value); 
if(lastname==""){msg("lastname", "Etternavnet");focuselem="lastname";nerror++};

firstname=Trim(document.getElementById("firstname").value); 
if(firstname==""){msg("firstname", "Fornavnet");focuselem="firstname";nerror++};

if (nerror > 0){document.getElementById(focuselem).focus();return false}

return true;
}  //  CheckRegisterNew

function ClearMessagesUpdate()
{
msg("firstname", "");
msg("lastname", "");
msg("address1", "");
msg("address2", "");
msg("town", "");
msg("postcode", "");
msg("phone", "");
msg("mobile", "");
msg("password", "");
msg("passwordrepeat", "");
msg("birthdate1", "");
msg("foto", "");
}  //  ClearMessagesUpdate

function CheckFoto()
{  // 
msg("foto", "");
var fotofilename=Trim(document.getElementById("uploadfoto").value);
var fotofilenamel = fotofilename.toLowerCase();
var dotposition=fotofilenamel.lastIndexOf(".");
var backslashposition=fotofilenamel.lastIndexOf("\\");
var extension=fotofilenamel.substring(dotposition,fotofilenamel.length);
if (fotofilename==""){msg("foto", "Select a JPEG file");return false}
else{if((extension=="")||((extension!=".jpg")&&(extension!=".jpeg"))){msg("foto", "Filnavn som slutter med "+extension+" ikke er korrekt. Må slutter med .jpg eller .jpeg");return false}else{return true}};
}

function CheckRegisterUpdate()
{  // put checks in reverse order so that focus is on uppermost field with an error

ClearMessagesUpdate();

var nerror=0;
var focuselem = "firstname";

if ((document.getElementById("birthdate1").value!=0)||(document.getElementById("birthdate3").value!=0)||(document.getElementById("birthdate2").value!=0))
{if (!checkDate(document.getElementById("birthdate1").value + '/' + document.getElementById("birthdate2").value + '/' + document.getElementById("birthdate3").value)){msg("birthdate1", "Fødselsdatumfeltet må være korrekt eller tomt");focuselem="birthdate1";nerror++}};

pw1=Trim(document.getElementById("password").value);
pw2=Trim(document.getElementById("passwordrepeat").value); 

if(pw1==""){msg("password", "Passordet må være minst 6 tegn");focuselem="password";nerror++}else
{if(pw1.length < 6){msg("password", "Passordet må være minst 6 tegn");focuselem="password";nerror++}else
{if (ContainsBlank(pw1)){msg("password", "Passordet må ikke inneholde blankfelt");focuselem="password";nerror++}else
{if (pw1.toLowerCase() != pw2.toLowerCase()){msg("passwordrepeat", "Gjentat passordet ikke er samme");focuselem="password";nerror++}}}};

if(pw2==""){msg("passwordrepeat", "Passordet må være minst 6 tegn");focuselem="password";nerror++};

mobile=Trim(document.getElementById("mobile").value);  
if(mobile!=""){
if(!isNum(mobile)){msg("mobile", "Mobilnummer eller blank");focuselem="mobile";nerror++}};

phone=Trim(document.getElementById("phone").value); 
if((phone!='')&&(!isNum(phone))){msg("phone", "Telefonnummer eller blank");focuselem="phone";nerror++};

postcode=Trim(document.getElementById("postcode").value); 
if(postcode==""){msg("postcode", "Postnummer");focuselem="postcode";nerror++};

town=Trim(document.getElementById("town").value); 
if(town==""){msg("town", "Poststed");focuselem="town";nerror++};

address1=Trim(document.getElementById("address1").value); 
if(address1==""){msg("address1", "Adresse");focuselem="address1";nerror++};

lastname=Trim(document.getElementById("lastname").value); 
if(lastname==""){msg("lastname", "Etternavnet");focuselem="lastname";nerror++};

firstname=Trim(document.getElementById("firstname").value); 
if(firstname==""){msg("firstname", "Fornavnet");focuselem="firstname";nerror++};

if (nerror > 0){document.getElementById(focuselem).focus();return false}

return true;
}  //  CheckRegisterUpdate

function CheckFormLogon()
{  // put checks in reverse order so that focus is on uppermost field with an error
msg("password", "");
msg("userid", "");
var nerror=0;

var pw1=Trim(document.getElementById("password").value); 
if(pw1==""){msg("password", "Passordet må være minst 6 tegn");focuselem="password";nerror++}else
{if(pw1.length < 6){msg("password", "Passordet må være minst 6 tegn");focuselem="password";nerror++}else
{if (ContainsBlank(pw1)){msg("password", "Passordet må være minst 6 tegn uten blankfelt");focuselem="password";nerror++}}};

var userid=Trim(document.getElementById("userid").value); 
if(userid==""){msg("userid", "Brukernavnet må være minst 6 tegn");focuselem="userid";nerror++}else
{if(userid.length < 6){msg("userid", "Brukernavnet må være minst 6 tegn");focuselem="userid";nerror++}else
{if (ContainsBlank(userid)){msg("userid", "Brukernavnet må være minst 6 tegn uten blankfelt");focuselem="userid";nerror++}else
{if (!isAlphanumSpec(userid)){msg("userid", "Bare alfa, nummer og understreke tegn tillatt");focuselem="userid";nerror++}}}};

if (nerror > 0){document.getElementById(focuselem).focus();return false}
return true
}

function CheckLostDetails()
{  

msg("email", "");

var nerror=0;
var focuselem = "firstname";

email=Trim(document.getElementById("email").value); 

if(email==""){msg("email", "E-posten");focuselem="email";nerror++}else
{if(!validateemail(email)){msg("email", gmessage);focuselem="email";nerror++}else{msg("email", gmessage)}};

if (nerror > 0){document.getElementById(focuselem).focus();return false}

return true;
}  //  CheckLostDetails

