var sID = "din epost adresse";
var sPW = "ditt passord";
var loggedOn;
var logonUser;
var winPop;
//var gDiscount = 0;		// NOTINUSE , done server-sied (ASP)
var gTestUser = "test@livredd.no"
var gWait = false;
var gHousePrice = 200;	// cmp HOUSEPRICE in COMMON.ASP!
var gExtraMember2 = false;
var gExtraMember3 = false;
var gExtraMember4 = false;
var gExtraMember5 = false;

var gbl_minCoursePrice;
var gPrepaid
//var PROD_COURSE = 1
//var PROD_BOOK = 2
//var PROD_COURSE_BOOK = 3

function disenableExam(index) {
	if (index == 2 || index == 4 || index == 6) {	// exam only
		document.getElementById("exam_course_no").checked = true;
		document.getElementById("exam_course_no").disabled = true;
		document.getElementById("exam_course_yes").disabled = true;
	} else {
		document.getElementById("exam_course_yes").checked = true;
		document.getElementById("exam_course_no").disabled = true;
		document.getElementById("exam_course_yes").disabled = false;
	}
}
function ReferShown() {
	return (document.getElementById("lightbox").style.display == 'block')
}
function hideRefer () {
	if(ReferShown()) {
		$("#lightbox").slideUp(600);	// was fadeOut(400)
		hideOverlay();
		showHideElements(true);
		return false
	} else {
		return true
	}	
}
function toggleRefer () {
	if(ReferShown()) {
		showOverlay();
	} else {
		hideOverlay()
	}
}
function toggleOverlay () {
	if(FBshown()) {
		showOverlay()
	} else {
		hideOverlay()
	}
}
function showOverlay() {
    if ($('facebox_overlay').length == 0) 
      $("body").append('<div id="facebox_overlay" class="facebox_hide"></div>')

    $('#facebox_overlay').hide().addClass("facebox_overlayBG")
      .css('opacity', 0.6)
      //.click(function() { $(document).trigger('close.facebox') })
      .fadeIn(100)
    return false
  }
function hideOverlay() {
	$('#facebox_overlay').fadeOut(100, function(){
		$("#facebox_overlay").removeClass("facebox_overlayBG")
		$("#facebox_overlay").addClass("facebox_hide") 
		$("#facebox_overlay").remove()
	})
	return false
}
function getKey(evt){
	var keyCode;
	if (window.event) {
		keyCode = window.event.keyCode;
	} else if (evt) {
		keyCode = evt.keyCode;
	}
	if (keyCode == 27) { 
		if(document.getElementById("fbfan")) {hideFB();}
		if(document.getElementById("lightbox")) {hideRefer();}
		return; 
	}	//escape
}
function listenKey () {	
	document.onkeyup = getKey;
}
  // getPageScroll() by quirksmode.com
  function getPageScroll() {
    var xScroll, yScroll;
    if (self.pageYOffset) {
      yScroll = self.pageYOffset;
      xScroll = self.pageXOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict
      yScroll = document.documentElement.scrollTop;
      xScroll = document.documentElement.scrollLeft;
    } else if (document.body) {// all other Explorers
      yScroll = document.body.scrollTop;
      xScroll = document.body.scrollLeft;	
    }
    return new Array(xScroll,yScroll) 
  }

  // Adapted from getPageSize() by quirksmode.com
  function getPageHeight() {
    var windowHeight
    if (self.innerHeight) {	// all except Explorer
      windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
      windowHeight = document.documentElement.clientHeight;
    } else if (document.body) { // other Explorers
      windowHeight = document.body.clientHeight;
    }	
    return windowHeight
  }
function getPageSize(){
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org. Edit for Firefox by pHaez	
	var xScroll, yScroll;
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}
function getLang () {
//	var cookie = readCookie("lang");
//	var lang = cookie ? cookie : "us";	// US is default if no cookie
//	return lang;
	return "nor"
}
function getInternetExplorerVersion() {
// Returns the version of Internet Explorer or a -1 (indicating the use of another browser).
	var rv = -1; // Return value assumes failure.
	if (navigator.appName == 'Microsoft Internet Explorer') {
		var ua = navigator.userAgent;
		var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if (re.exec(ua) != null)
		rv = parseFloat( RegExp.$1 );
	}
	return rv;
}
function isChromeOnMac() {
	var ua = navigator.userAgent;
	//var isWebkit = navigator.userAgent.indexOf("AppleWebKit") > -1;
	//var webkitVersion = parseFloat(navigator.userAgent.split("AppleWebKit/")[1]) || undefined;
	return (ua.toLowerCase().indexOf('chrome') > -1) && (ua.toLowerCase().indexOf('macintosh') > -1);
}
function trim(value) {
	// trim leading and trailing spaces plus consecutive blanks within string
	var temp = value;
	var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
	if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
	var obj = /  /g;
	while (temp.match(obj)) { temp = temp.replace(obj, " "); }
	return temp;
}
function leadzero(s) {
	var result = (s < 10) ? "0"+s : s;
	return result;
}
function popIt (url, w, h, tools, resize, scrolls, menu) {
	var toolbars = (tools == true)?"yes":"no";
	var scrollbars = (resize == true)?"yes":"no";
	var resizable = (scrolls == true)?"yes":"no";
	var menubar = (menu == true)?"yes":"no";
	winPop = window.open(url,"","width=" + w + ",height=" + h + ",toolbar=" + toolbars + ",resizable=" + resizable + ",status=no,scrollbars=" + scrollbars +", menubar=" + menubar);
	if (winPop.focus) { winPop.focus(); }
}
function popLearn () {
	winPop = window.open("course/start.htm","kurs","width=1000,height=700,toolbar=no,resizable=no,status=no,scrollbars=no, menubar=no");
	if (winPop.focus) { winPop.focus(); }
}
function popDemo () {
	winPop = window.open("demo/demo.htm","demo","width=1000,height=700,toolbar=no,resizable=no,status=no,scrollbars=no, menubar=no");
	if (winPop.focus) { winPop.focus(); }
}
function popTest () {
	winPop = window.open("test/test.htm","test","width=1000,height=700,toolbar=no,resizable=no,status=no,scrollbars=no, menubar=no");
	if (winPop.focus) { winPop.focus(); }
}
function popForum () {
	// Check login details first
	//alert(logonUser)
	checkForumUser_1(logonUser);
}
function openForum () {
	// Respond to check login details
	//var forumPop = window.open("forum/default.asp","forum","width=1000,height=700,toolbar=yes,resizable=yes,status=yes,scrollbars=yes, menubar=yes");
	//if (forumPop.focus) { forumPop.focus(); }
	location.href = "forum/default.asp"
}
function submitLogon (evnt) {
	// Submit logon form by ENTER (form is not submitted through AJAX)
	if ((evnt.which && evnt.which == 13) || (evnt.keyCode && evnt.keyCode == 13)) {
		//document.myForm.myHtmlInputButton.click();
		ValidateLogon(document.frmLogon.elements[0], document.frmLogon.elements[1], 'msgLogon')
		return false;
	} else {
		return true;
	}
}
function submitSignon (evnt) {
	// Submit form by ENTER (form is not submitted through AJAX)
	if ((evnt.which && evnt.which == 13) || (evnt.keyCode && evnt.keyCode == 13)) {
		//alert("submitSignon");
		document.frmSignon.submit();
		//document.frmSignon.cmdSubmit.click();
		return false;
	} else {
		return true;
	}
}
function submitSignonExam (evnt) {
	// Submit form by ENTER (form is not submitted through AJAX), test for shiftKey due to textarea
	if (((!evnt.shiftKey && evnt.which && evnt.which == 13) || (!evnt.shiftKey && evnt.keyCode && evnt.keyCode == 13))) {
		document.frmSignonExam.cmdSubmit.click();
		return false;
	} else {
		return true;
	}
}
function addLoadListener(fn) {
  // NOTINUSE
	if (typeof window.addEventListener != 'undefined')  {
		window.addEventListener('load', fn, false);
	} else if (typeof document.addEventListener != 'undefined') {
		document.addEventListener('load', fn, false);
	} else if (typeof window.attachEvent != 'undefined') {
		window.attachEvent('onload', fn);
	} else {
		var oldfn = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = fn;
		} else {
			window.onload = function() {
				oldfn();
				fn();
			};
		}
	}
}
function ValidateLogon(fld1, fld2, msgid) {
	var s1 = trim(fld1.value);
	var s2 = trim(fld2.value);
	if (isNotEmpty(fld1, sID, msgid)) { 
		if (isEMailAddr(fld1, msgid)) {
			if (isNotEmpty(fld2, sPW, msgid)) { 
				if (isLongEnough(fld2, 6, msgid)) {
					if (noSpecialChars(fld2, msgid)) { 
						validateUser_1(s1, s2);
						return true;
					}
				}
	    	}
		} 
  	}
}
function checkEmail_Exam(email) {
	// valid email upon blur
	var str = trim(email);
	var re = /.+/;
	if(!str.match(re)) {	// empty?
		document.getElementById("msgEmail").innerHTML = ""
		return false;
	} else {
		re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
		if (!str.match(re)) {		// valid?
			document.getElementById("msgEmail").innerHTML = "Dette er ikke en gyldig epost adresse.";
			setTimeout("document.forms['frmSignon'].elements['exam_mail'].focus();", 0);
			setTimeout("document.forms['frmSignon'].elements['exam_mail'].select();", 0);
			return false
		} else {
			document.getElementById("msgEmail").innerHTML = "";
			return true
		}
	}
}
function ValidateSignonExam(form, fld0, fld1, fld2, fld3, fld4, fld5, fld6, fld7, msgid) {  
	//alert("ValidateSignonExam");
//	var s0=fld0.value;			// date
	var s1=trim(fld1.value);	// email	
//	var s2=trim(fld2.value);	// firstname
//	var s3=trim(fld3.value);	// lastname
//	var s4=trim(fld4.value);	// address1
//	var s5=trim(fld5.value);	// address2 (not checked)
//	var s6=trim(fld6.value);	// postal code
//	var s7=trim(fld7.value);	// place
	if(isDateOK(fld0, msgid)) {
		if (isNotEmpty(fld1, sID, msgid)) { 
			if ( checkEmail_Exam(s1) ) {
				if (isNotEmpty(fld1, sPW, msgid)) { 
					if (isNotEmpty(fld2, sPW, msgid)) { 
						if (isNotEmpty(fld3, sPW, msgid)) {
							if (isNotEmpty(fld4, sPW, msgid)) {
								if (isNotEmpty(fld6, sPW, msgid)) {
									if (isNotEmpty(fld7, sPW, msgid)) {
										if (window.confirm("Dette bekrefter din påmelding til eksamen - Båtførerprøven.\nOk å fortsette?")) {
											requestExam_1(form);
										} else {
											return false;	
										}
									}
								}
							}
						}
					}
				} 
			}
		}
	}
	return false
}

function delay(condition) {
    // do stuff
    if (condition) {
        setTimeout('delay();', 500); // 0.5 sec
    }
}

function ValidateSignon_DIBS(frm, email, firstname, lastname, address1, postalcode, place, priceproduct, creditcard, campaigntype, includecourse, giftCard, totalprice, msgid) {  
//	TMP Test Only:
//	var s5=postalcode.value;
//	if (s5.substr(0, 2) != "zz") {
//		document.getElementById("msgSignon").innerHTML = "Vi beklager: Påmelding er ennå ikke tilgjengelig.";
//		return false;
//	}
	//delay(gWait);
	var isGift = (giftCard == "on")
	//alert(priceproduct + " - " + creditcard + " - " + campaigntype + " - " + includecourse + " - " + giftCard + " - " + totalprice)
	if (priceproduct == -1) {
		alert("Vennligst velg produkt.");
		document.forms['frmSignon'].elements['product'].focus();
		return false;
	}
	// Synch call to check for already existing email if user changed from not include_course product to include_course
	if (includecourse == 1 && !isGift) {
		createRequest();
		var url = "ajax_getusername.asp?email=" + trim(email.value) + "&unique=" + new Date().getTime();
		request.open("GET", url, false);
		request.send(null);
		var response = request.responseText;
		if (response != "NONE") {
			alert("Online kurs, unntatt gavekort, forlanger en unik epost adresse.");
			document.frmSignon.member_mail.value = "";
			setTimeout("document.forms['frmSignon'].elements['member_mail'].focus();", 0);
			return false;
		}
	}
			
	//var total = parseInt(totalprice).toFixed(2);
	if (getSelectedPrice(priceproduct) == 0) {	
		isCredit = false
	} else {	// should be changed to read hidden field creditinvoice!
		for (var i = 0; i < creditcard.length; i++) {
			if (creditcard[i].checked) {
				var creditval = creditcard[i].value;
			}
		}
		var isCredit = (creditval == "on");
	}
	var total = (isCredit) ? parseInt(totalprice) : parseInt(totalprice) + parseInt(document.getElementById("invoicecost").value);
	if (includecourse == 1) {	// course included
		if (isGift) {
			var msg = (isCredit) ? "Dette bekrefter din bestilling av et gavekort til Den store norske Båtførerprøven.\nDu vil bli ført videre for å godkjenne en  betaling, stor kr. " + total.toFixed(2) + "\nOK å fortsette?" : "Dette bekrefter din din bestilling av et gavekort til Den store norske Båtførerprøven.\nDu vil motta en faktura, stor kr." + total.toFixed(2) + "\nOK å fortsette?";
		} else {
			var msg = (isCredit) ? "Dette bekrefter din påmelding til Den store norske Båtførerprøven.\nDu vil bli ført videre for å godkjenne en  betaling, stor kr. " + total.toFixed(2) + "\nOK å fortsette?" : (campaigntype == "PREPAID") ? "Dette bekrefter din påmelding til Den store norske Båtførerprøven.\nDette kurs er forhåndsbetalt - ingenting skal betales.\nOK å fortsette?" : "Dette bekrefter din påmelding til Den store norske Båtførerprøven.\nDu vil motta en faktura, stor kr." + total.toFixed(2) + "\nOK å fortsette?";
		}
	} else {	// the books
		var msg = (isCredit) ? "Dette bekrefter din bestilling av læreboka til Den store norske Båtførerprøven.\nDu vil bli ført videre for å godkjenne en  betaling, stor kr. " + total.toFixed(2) + "\nOK å fortsette?" : "Dette bekrefter din bestilling av læreboka til Den store norske Båtførerprøven.\nDu vil motta en faktura stor kr. " + total.toFixed(2) + "\nOK å fortsette?";

	}
	if (isNotEmpty(email, sID, msgid)) { // already checked if not already in DB on Blur
		if (isEMailAddr(email, msgid)) {	// (already checked)
			if (isNotEmpty(firstname, sPW, msgid)) { 
				if (isNotEmpty(lastname, sPW, msgid)) {
					if (isNotEmpty(postalcode, sPW, msgid)) {
						if (isNotEmpty(place, sPW, msgid)) {
							if (isCredit) {		
								if (window.confirm(msg)) {
									fillinCreditForm(priceproduct, total, firstname, lastname, postalcode, place)
									return true;

								} else {
									return false;
								}
							} else {		// by invoice or PREPAID
								if (window.confirm(msg)) {
									fillinCreditForm(priceproduct, total, firstname, lastname, postalcode, place)
									frm.action = "pay_accept.asp"
									return true;	
								} else {
									return false;
								}
							}
						}
					}
				}
			}
		} 
  	}
	return false
}
function fillinCreditForm(priceproduct, total, firstname, lastname, postalcode, place) {
	//var price = getSelectedPrice(priceproduct);
	var price = total;
	var prodid = getSelectedProduct(priceproduct);
	//alert(prodid)
	// TESTONLY
	if (postalcode.value.substr(0, 2) == "zz") {
		price = 9
	}
	document.frmSignon.orderid.value = getOrderID();
	document.frmSignon.uniqueoid.value = getUniqueOrderID(postalcode);
	//alert(document.frmSignon.uniqueoid.value);
	document.frmSignon.amount.value = (gPrepaid) ? 0 : price*100;
	document.frmSignon.productid.value = prodid;
	//alert("total price = " + price);
	//document.frmSignon.delivery1.Navn.value = firstname + " " + lastname;
	//document.frmSignon.delivery2.Adresse.value = postalcode + " " + place;
}
function getPriceSelectedProducts () {
	// return the price of the selected product plus price for family members (if relevant)
	if (document.getElementById("product")) {
		var selProduct = document.forms['frmSignon'].elements['product'].options[document.forms['frmSignon'].elements['product'].selectedIndex].value;
		var productPrice = parseInt(selProduct.substr(selProduct.indexOf("_") + 1, selProduct.length));
		var extraMemberPrice = 0;
		if ((document.getElementById("includecourse").value == 1) && (document.getElementById("extramembers").value == "on")) {
			for (var i = 2; i < 6; i++) {
				eval("extraMemberPrice = gExtraMember" + i + " ? extraMemberPrice + gHousePrice : extraMemberPrice")
			}
		}
		return (productPrice + extraMemberPrice);
	} else {
		return 0
	}
}
function getSelectedPrice (priceproduct) {
	//return priceproduct.substr(priceproduct.indexOf("_") + 1, priceproduct.length)
	var productPrice = parseInt(priceproduct.substr(priceproduct.indexOf("_") + 1, priceproduct.length));
	var extraMemberPrice = 0;
	if ((document.getElementById("includecourse").value == 1) && (document.getElementById("extramembers").value == "on")) {
		//alert("getSelectedPrice, counting members: " + document.getElementById("includecourse").value)
		for (var i = 2; i < 6; i++) {
			eval("extraMemberPrice = gExtraMember" + i + " ? extraMemberPrice + gHousePrice : extraMemberPrice")
		}
	}
	//alert("getSelectedPrice, productPrice = " + productPrice);
	//alert("getSelectedPrice, extraMemberPrice = " + extraMemberPrice);
	var price = productPrice + extraMemberPrice;
	//alert("getSelectedPrice, price = " + price);
	return price;
}
function getSelectedProduct (priceproduct) {
	return priceproduct.substr(0, priceproduct.indexOf("_"))
}
function getOrderID() {	// IMPROVE: read from db!
	var thisTime = new Date();
	return thisTime.getFullYear() + "_" + leadzero((thisTime.getMonth()+1)) + leadzero(thisTime.getDate()) + "_" + leadzero(thisTime.getHours()) + leadzero(thisTime.getMinutes())
}
function getUniqueOrderID(pno) {
	var thisTime = new Date();
	return pno.value + "_" + thisTime.getFullYear() + leadzero((thisTime.getMonth()+1)) + leadzero(thisTime.getDate()) + leadzero(thisTime.getHours()) + leadzero(thisTime.getMinutes()) + leadzero(thisTime.getSeconds())
}
function changePassWord (fld1, fld2, msgid) {
	var s1=trim(fld1.value);
	var s2=trim(fld2.value);
	if (isNotEmpty(fld1, sID, msgid)) { 
		if (isLongEnough(fld1, 6, msgid)) { 
			if (noSpecialChars(fld1, msgid)) { 
				if (isNotEmpty(fld2, sPW, msgid)) {
					if (isLongEnough(fld2, 6, msgid)) {
						if (s1 == s2) {
							writeNewPW_1(s1, getCookie("livredd"));
							return true;
						} else {
							setTimeout("focusElement('" + fld1.form.name + "', '" + fld2.name + "', 'Oppgitt, nytt passord er ikke identisk gjentatt.<br />Vennligst prøv igjen.', '" + msgid + "')", 0);
							return false
						}
					}
				}
	    	}
		} 
  	}
}
// validates that the field value string has one or more characters in it and does not match any preset string
function isNotEmpty(elem, sPreset, msgid) {
	var str = elem.value;
    var re = /.+/;
    if(!str.match(re) || str == sPreset) {
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "', 'Vennligst fyll ut angitt felt.', '" + msgid + "')", 0);
        return false;
    } else {
        return true;
    }
}
// validates that the entry is formatted as an e-mail address
function isEMailAddr(elem, msgid) {
	var str = trim(elem.value);
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
	//var re = /^[\w\.-]+@[\w\.-]+\.\w+$/i;	// SPRY
    if (!str.match(re)) {
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "', 'Vennligst verifiser epost adresse.', '" + msgid + "')", 0);
        return false;
    } else {
        return true;
    }
}
// Check to make sure the word is at least len characters long.
function isLongEnough(elem, len, msgid) {
	var str = trim(elem.value);
	if(str.length < len) {
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "', 'Din sikkerhetskode må være på minst " + len + " tegn.', '" + msgid + "')", 0);
		return false
	} else {
		return true
	}
}
// Check to make sure the word does not contain special characters
function noSpecialChars(elem, msgid) {
	var str = trim(elem.value);
	for(var i=0; i<str.length;++i) {
  		var ch = str.charAt(i);
		if(isSpecial(ch)) {
			setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "', 'Ditt passord inneholder ugyldige tegn.<br />Bruk en kombinasjon av tall og bokstaver - æ, ø, å er ikke tillatt.', '" + msgid + "')", 0);
			return false
		}
	}
	return true
}
function isSpecial(ch) {
	// Avoid SQL Injection!
	//var special = new Array("æ", "ø", "å", "Æ", "Ø", "Å", "ü", "Ü", "á", "ö", "Ö","!","\"","#","$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","?","@","[","\\","]","^","_","`","{","|","}","~")
	var special = new Array("'", "&", "<", ">", "æ", "ø", "å", "Æ", "Ø", "Å", "ü", "Ü", "á", "ö", "Ö", "!", "\\", "#", "$", "%", "&", "(", "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", ">", "?", "@", "[", "]", "^", "_", "`", "{", "|", "}", "~") 
	for(var i=0;i<special.length;++i) {
		if(ch == special[i]) return true
	}
	return false
}
function isValidCC(elem, msgid) {
	// Check for valid credit card
	// Copyright (c) 2006. Adobe Systems Incorporated. Spry Framework
	var value = trim(elem.value);
	var regExp = null;
	regExp = /^[3-6]{1}[0-9]{12,15}$/;
	if (!regExp.test(value)) {
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "', 'Vennligst verifiser kredittkort nummer.', '" + msgid + "')", 0);
		return false;
	}
	var digits = [];
	var j = 1, digit = '';
	for (var i = value.length - 1; i >= 0; i--) {
		if ((j%2) == 0) {
			digit = parseInt(value.charAt(i), 10) * 2;
			digits[digits.length] = digit.toString().charAt(0);
			if (digit.toString().length == 2) {
				digits[digits.length] = digit.toString().charAt(1);
			}
		} else {
			digit = value.charAt(i);
			digits[digits.length] = digit;
		}
		j++;
	}
	var sum = 0;
	for(i=0; i < digits.length; i++ ) {
		sum += parseInt(digits[i], 10);
	}
	if ((sum%10) == 0) {
		return true;
	}
	setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "', 'Vennligst verifiser kredittkort nummer.', '" + msgid + "')", 0);
	return false;
}
function isDateOK(elem, msgid) {
    if(elem.value == "-1") {
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "', 'Vennligst velg dato.', '" + msgid + "')", 0);
        return false;
    } else {
        return true;
    }
}
function focusElement(formName, elemName, msg, msgid) {
    var elem = document.forms[formName].elements[elemName];
	var msgelem = document.getElementById(msgid);
	msgelem.innerHTML = msg;
	msgelem.className = "warn";
	msgelem.style.display = "block";
	elem.focus();
    elem.select();
	
}
function checkUserLoggedOn() {
	//testCookies();
	logonUser = getCookie("livredd");
	//alert("logonUser: " + logonUser);
	if (logonUser == null) {
		document.getElementById("logon").style.display = "block";
		loggedOn = false;
	} else {
		document.getElementById("logout").style.display = "block";
		writeUserName_1(logonUser);
		//document.getElementById("username").innerHTML = "Pålogget bruker:<br />&nbsp;" + getUserName(logonUser);
		loggedOn = true;
	}
	showHideUserContent(loggedOn);
	//checkReferrer(document.referrer);
}
function startSession (useremail) {
	//alert(username);
	loggedOn = true;
	logonUser = useremail;
	setCookie("livredd", useremail);
	document.getElementById("logon").style.display = "none";
	document.getElementById("logout").style.display = "block";
	writeUserName_1(useremail);
	//document.getElementById("username").innerHTML = "Pålogget bruker:<br />" + getUserName(useremail);
	showHideUserContent(true);
	showHideCounter();
}
function endSession () {
	logonUser = null;
	loggedOn = false;
	deleteCookie("livredd");
	document.getElementById("logon").style.display = "block";
	document.getElementById("logout").style.display = "none";
	document.getElementById("username").innerHTML = "";
	showHideUserContent(false);
	showHideCounter();
	abandonSession();	// Session variables set with Forum!
	if (winPop) {winPop.close() }
}
function showHideUserContent(show) {
	//document.getElementById("content-loggedon").style.display = "none";
	//document.getElementById("content-loggedout").style.display = "block";
	// Disabled due to to the fact that logged-on users should be able to buy boook!! ...  TMP !!!!
	if (document.getElementById("invoice")) {	// logged-on users should be able to buy boook!! ...  TMP !!!!
		document.getElementById("content-loggedon").style.display = "none";
		document.getElementById("content-loggedout").style.display = "block";
	} else {
		var cookie = getCookie("livredd");
		if (document.getElementById("content-loggedon")) {
			if (show && cookie.indexOf(gTestUser) == -1) {
				document.getElementById("content-loggedon").style.display = "block";
				document.getElementById("content-loggedout").style.display = "none";
			} else {
				document.getElementById("content-loggedon").style.display = "none";
				document.getElementById("content-loggedout").style.display = "block";
			}
		}
	}
}
function hideCreditOption(hide) {
	//alert(hide)
	if (hide && getPriceSelectedProducts() == 0) {
		document.getElementById("creditcash").style.display = "none";
		//document.getElementById("creditcash_describe").style.display = "none"
	} else {
		document.getElementById("creditcash").style.display = "inline";
		//document.getElementById("creditcash_describe").style.display = "inline"
	}
}
function showHideCredit(val) {
	// LEGACY
	if (val == "on") {
		document.getElementById("credit").style.display = "inline"
	} else {
		document.getElementById("credit").style.display = "none"
	}
}
function checkDiscountCode(code) {
	// upon user input of code
	if (trim(code) == "" ) { 
		document.getElementById("warncode").innerHTML = "";
		document.getElementById("warncode").style.display = "none";
	} else {
		getDiscountData_1(code.toString().replace(/ /gi, ""))		// remove any blanks
		
	};
}
function showDiscount(discount, partnerName, mincourseprice) {
	// upon body load 
	// cmp. identical strings in ajax.js:getDiscountData_2!
	//alert(mincourseprice);
	gbl_minCoursePrice = mincourseprice
	if (discount != 0) {
		if (discount >= mincourseprice) {
			gPrepaid = true;
			document.getElementById("msgcredit").innerHTML = "Tilgang til Den store norske Båtførerprøven er allerede betalt, <a href='aa_signon.asp'>klikk her for umiddelbar, gratis tilgang!</a>"
			if (document.getElementById("creditcash")) {	// this is sign-on page
				document.getElementById("msgDiscount").innerHTML = "<strong>Dette kurs er allerede betalt.</strong> (" + partnerName + ").</strong><br>Meld deg på og du vil umiddelbart få tilgang til kurset!";
				hideCreditOption(true);
			}
			disableGifts();
		} else {
			document.getElementById("msgcredit").innerHTML = "Du får et avslag på " + discount + " kroner ved kjøp av Den store norske Båtførerprøven!&nbsp;&nbsp;&nbsp;<a href='aa_signon.asp'>Klikk her for å melde deg på!</a>"
			//document.getElementById("msgDiscount").innerHTML = "<strong>Du får et avslag på kroner " + discount + ".</strong><br>Dette beløp er trukket fra ordinær pris.";
		}
		document.getElementById("msgcredit").style.display = "block";
		if (document.getElementById("creditcash")) {	// this is sign-on page, make sure users with code sees the form
			enableDisableSignon(true);
			showHideSignon(true)
			document.getElementById("msgSignon").style.display = "none";
			document.getElementById('msgDiscount').style.display = 'block';
			document.getElementById('includecourse').value = 1;
			document.getElementById('signon').className = "discount";
			if (discount >= mincourseprice) {
				document.getElementById('signonhead').innerHTML = "Ditt kurs er forhåndsbetalt!"
			} else {
				document.getElementById('signonhead').innerHTML = "Du sparer kr. " + discount + " på alle kurs!"
			}
		}
	} else {
		document.getElementById("msgcredit").style.display = "none";
	}
	if (document.getElementById("creditcash")) updateTotal(getPriceSelectedProducts())
}
function checkComplete () {
	var re = /.+/;
	if(document.getElementById('member_mail').value.match(re) && document.getElementById('member_mail_confirm').value.match(re) && document.getElementById('member_name1').value.match(re) && document.getElementById('member_name2').value.match(re) && document.getElementById('member_pno').value.match(re) && document.getElementById('member_place').value.match(re)) {
		document.getElementById("msgSignon").className = "complete";
		document.getElementById("msgSignon").innerHTML = "Informasjon OK"
		document.getElementById("msgSignon").style.display = "block";
		//document.getElementById("cmdsubmit").disabled = false;
	} else {
		document.getElementById("msgSignon").style.display = "none";
		//document.getElementById("cmdsubmit").disabled = true;
	}
}
function checkComplete_ExtraMember (nMember) {
	var complete;
	var alreadySet
	var re = /.+/;	// empty
	var reMail = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
	eval("complete = (document.getElementById('member" + nMember + "_mail').value.match(reMail)) && (document.getElementById('member" + nMember + "_mail').value.match(re)) && (document.getElementById('member" + nMember + "_name1').value.match(re)) && (document.getElementById('member" + nMember + "_name2').value.match(re))");
	if(complete) {
		eval("alreadySet = gExtraMember" + nMember + " == true")
		if (!alreadySet) {
			//eval("gExtraMember" + nMember + " = true")
			setExtraMember(nMember, true)
			eval("document.getElementById('member" + nMember + "').className = 'memberhead-ok'")
			updateTotal(parseInt(document.forms['frmSignon'].elements['totalprice'].value) + gHousePrice)
			
		}
	} else {
		eval("alreadySet = gExtraMember" + nMember + " == true")
		if (alreadySet) {
			//eval("gExtraMember" + nMember + " = false")
			setExtraMember(nMember, false)
			eval("document.getElementById('member" + nMember + "').className = 'memberhead'")
			updateTotal(parseInt(document.forms['frmSignon'].elements['totalprice'].value) - gHousePrice)
		}
	}
	getDiscountData_1(document.forms["frmSignon"].campaigncode.value)
}
function setExtraMember (nmember, val) {
	eval("gExtraMember" + nmember + " = " + val)
	if (val) {
		eval("document.forms['frmSignon'].elements['hasmember" + nmember + "'].value = 1")
	} else {
		eval("document.forms['frmSignon'].elements['hasmember" + nmember + "'].value = 0")
	}
}
function checkEmailConfirm(mail1, mail2) {
	if (trim(mail1) != trim(mail2)) {
		document.getElementById("msgEmail").innerHTML = "Epost adresser er ikke identiske. Prøv en gang til.";
		//setTimeout("document.forms['frmSignon'].elements['member_mail_confirm'].focus();", 0);
		//setTimeout("document.forms['frmSignon'].elements['member_mail_confirm'].select();", 0);
		document.forms['frmSignon'].elements['member_mail_confirm'].focus();
		document.forms['frmSignon'].elements['member_mail_confirm'].select();
	} else {
		document.getElementById("msgEmail").innerHTML = "";
		checkComplete()
	}
}
function checkProduct (priceproduct) {
	if (priceproduct == -1) {	// nothing selected, traverse DOM and set transparency?
		enableDisableSignon(false)
		showHideSignon(false)
		updateTotal(-1);
		document.getElementById("msgSignon").className = "message";
		document.getElementById("msgSignon").innerHTML = "Start med å velge produkt!"
		document.getElementById("msgSignon").className = "message";
		document.getElementById("msgSignon").style.display = "block";
		if (document.getElementById("msgDiscount")) document.getElementById("msgDiscount").style.display = "none";
		document.getElementById("gift_yes").checked=false;
		document.getElementById("gift_no").checked=true;
		document.getElementById("gift_yes").disabled = true;
		document.getElementById("gift_no").disabled = true;
		//document.getElementById("msgGift").style.display = "none";
		document.getElementById("group_yes").checked=false;
		document.getElementById("group_no").checked=true;
		document.getElementById("group_yes").disabled = true;
		document.getElementById("group_no").disabled = true;
		document.getElementById("groupsignon").style.display = "none";
		//document.getElementById("cmdsubmit").disabled = true;
	} else {
		//alert("checkProduct, selected price = " + getPriceSelectedProducts())
		enableDisableSignon(true)
		showHideSignon(true)
		//alert("checkProduct, includecourse before showHideDiscount_2: " + document.getElementById("includecourse").value)
		showHideDiscount_1(getSelectedProduct(priceproduct));
		//alert("checkProduct, includecourse after showHideDiscount_2: " + document.getElementById("includecourse").value)
		updateTotal(getSelectedPrice(priceproduct))
		checkComplete();
		//checkEmail_1(document.getElementById("member_mail").value, document.getElementById('includecourse').value)	//CRASH with showHideDiscount_1 !
		
		//hideCreditOption(true);
	}
	
}
function updateCreditInvoice(val) {
	document.getElementById("creditinvoice").value = val;
	//alert("updateCreditInvoice, price = " + getPriceSelectedProducts());
	updateTotal(getPriceSelectedProducts());
}

function updateTotal (price) {
	//alert("updateTotal, price = " + price);
	if (price == -1) {
		document.getElementById("totalSum").innerHTML = "NOK " + parseInt(0).toFixed(2)
		document.forms['frmSignon'].elements['totalprice'].value = 0;
	} else {
		document.forms['frmSignon'].elements['totalprice'].value = parseInt(price);
		var total = (document.getElementById("creditinvoice").value == "on") ? parseInt(price) : parseInt(parseInt(price) + parseInt(document.getElementById("invoicecost").value));
		//document.forms['frmSignon'].elements['totalprice'].value = total;
		document.getElementById("totalSum").innerHTML = "NOK " + parseInt(total).toFixed(2);
	}
}
function enableDisableSignon (enable) {
	document.getElementById("member_mail").disabled = !enable;
	if (!enable) document.getElementById("member_mail_confirm").disabled = !enable;
	//document.getElementById("member_mail_confirm").disabled = !enable;
	document.getElementById("member_name1").disabled = !enable;
	document.getElementById("member_name2").disabled = !enable;
	document.getElementById("member_address1").disabled = !enable;
	document.getElementById("member_address2").disabled = !enable;
	document.getElementById("member_pno").disabled = !enable;
	document.getElementById("member_place").disabled = !enable;
	//document.getElementById("cmdsubmit").disabled = !enable;
	document.getElementById("member2_mail").disabled = !enable;
	document.getElementById("member2_name1").disabled = !enable;
	document.getElementById("member2_name2").disabled = !enable;
	document.getElementById("member3_mail").disabled = !enable;
	document.getElementById("member3_name1").disabled = !enable;
	document.getElementById("member3_name2").disabled = !enable;
	document.getElementById("member4_mail").disabled = !enable;
	document.getElementById("member4_name1").disabled = !enable;
	document.getElementById("member4_name2").disabled = !enable;
	document.getElementById("member5_mail").disabled = !enable;
	document.getElementById("member5_name1").disabled = !enable;
	document.getElementById("member5_name2").disabled = !enable;
}
function showHideSignon (show) {
	var color = show ? "#fff" : "transparent"
	document.getElementById("member_mail").style.backgroundColor = color;
	if (!show) document.getElementById("member_mail_confirm").style.backgroundColor = color;
	//document.getElementById("member_mail_confirm").style.backgroundColor = color;
	document.getElementById("member_name1").style.backgroundColor = color;
	document.getElementById("member_name2").style.backgroundColor = color;
	document.getElementById("member_address1").style.backgroundColor = color;
	document.getElementById("member_address2").style.backgroundColor = color;
	document.getElementById("member_pno").style.backgroundColor = color;
	document.getElementById("member_place").style.backgroundColor = color;
	
	document.getElementById("member2_mail").style.backgroundColor = color;
	document.getElementById("member2_name1").style.backgroundColor = color;
	document.getElementById("member2_name2").style.backgroundColor = color;
	document.getElementById("member3_mail").style.backgroundColor = color;
	document.getElementById("member3_name1").style.backgroundColor = color;
	document.getElementById("member3_name2").style.backgroundColor = color;
	document.getElementById("member4_mail").style.backgroundColor = color;
	document.getElementById("member4_name1").style.backgroundColor = color;
	document.getElementById("member4_name2").style.backgroundColor = color;
	document.getElementById("member5_mail").style.backgroundColor = color;
	document.getElementById("member5_name1").style.backgroundColor = color;
	document.getElementById("member5_name2").style.backgroundColor = color;
	
}
function showHideGroup (val) {
	if (val == "on") {
		if (document.getElementById("giftcard").value == "on") {
			if (window.confirm("Påmelding av flere i husstanden lar seg dessverre ikke kombinere med gavekort.\nGavekort vil bli krysset vekk.")) {
				document.getElementById("giftcard").value = "off";
				document.getElementById("gift_no").checked = true;
				document.getElementById('lblGift_yes').style.fontWeight="normal";
				document.getElementById('lblGift_no').style.fontWeight="bold";
				document.getElementById("groupsignon").style.display = "block";
				document.getElementById("extramembers").value = val;
				document.getElementById("giftcard-contain").className = "nochecked";
				updateTotal(getPriceSelectedProducts());
				document.getElementById("member2_mail").focus();
			} else {
				// reset!
				document.getElementById("group_no").checked = true;
				document.getElementById('lblGroup_yes').style.fontWeight="normal";
				document.getElementById('lblGroup_no').style.fontWeight="bold";
			}
		} else {
			document.getElementById("groupsignon").style.display = "block";
			document.getElementById("extramembers").value = val;
			updateTotal(getPriceSelectedProducts());
			document.getElementById("member2_mail").focus();
		}
	} else {
		document.getElementById("groupsignon").style.display = "none";
		document.getElementById("extramembers").value = val;
		updateTotal(getPriceSelectedProducts());
	}
}
function updateGiftcard(val) {
	if (val == "on") {
		if (document.getElementById("extramembers").value == "on") {
			if (window.confirm("Gavekort lar seg dessverre ikke kombinere med påmelding av flere i husstanden.\nPåmelding av flere i husstanden vil bli krysset vekk.")) {
				document.getElementById("extramembers").value = "off";
				document.getElementById("group_no").checked = true;
				document.getElementById("groupsignon").style.display = "none";
				document.getElementById('lblGroup_yes').style.fontWeight="normal";
				document.getElementById('lblGroup_no').style.fontWeight="bold";
				document.getElementById("giftcard").value = val;
				document.getElementById("giftcard-contain").className = "checked";
				
				updateTotal(getPriceSelectedProducts());
			} else {
				// reset!
				document.getElementById("gift_no").checked = true;
				document.getElementById("group_yes").checked = true;
				document.getElementById('lblGift_yes').style.fontWeight="normal";
				document.getElementById('lblGift_no').style.fontWeight="bold";
			}
		} else {
			document.getElementById("giftcard").value = val;
			document.getElementById("giftcard-contain").className = "checked";
		}
	} else {
		document.getElementById("giftcard").value = val;
		document.getElementById("giftcard-contain").className = "nochecked";
	}
	//alert(document.getElementById("giftcard").value)
}
function disableGifts () {
	document.getElementById("giftcard").value = "off";
	document.getElementById("giftcard-contain").className = "nochecked";
	document.getElementById('lblGift_no').style.fontWeight="normal";
	document.getElementById('lblGift_yes').style.fontWeight="normal";
	document.getElementById("gift_yes").disabled=true;
	document.getElementById("gift_no").disabled=true;
	document.getElementById("explaingift").innerHTML = "<strong>Gavekort er ikke tilgjengelig for forhåndsbetalte kurs</strong>";
	document.getElementById("giftcard-contain").className = "prepaid";
}
function enableDisableMailConfirm (enable) {
	var color = enable ? "#fff" : "transparent"
	document.getElementById("member_mail_confirm").disabled = !enable;
	document.getElementById("member_mail_confirm").style.backgroundColor = color;
}
function textCounter(field) {
	if (field.value.length > 0) {
		document.getElementById("cmdcheck").style.visibility = "visible"
	} else {
		document.getElementById("cmdcheck").style.visibility = "hidden";
		document.getElementById("warncode").style.display = "none";
	}
}
function fbs_click() {
	u=location.href;
	t=document.title;
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&amp;t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
	return false;
}
function twtr_click() {
	u=location.href;
	t=document.title;
	window.open('http://twitter.com/home?status=Anbefaler '+encodeURIComponent(t)+' ' +encodeURIComponent(u),'sharer','toolbar=0,status=0,width=726,height=436');
	return false;
}