﻿var errorMsg = "";
var errorFocus = "";
var debug = false; //  set this to true to get various debug alerts
var redirectUrlIfLoginSuccess = ""; //set this in loginShow method

function downloadXtraSaverClickCounter()
{
	document.getElementById("downloadXtraSaverClick").src = "/click/default.asp?clickId=623289";
	//window.open("http://www.forbrugerliv.dk/Admin/Public/DWSDownload.aspx?File=%2fFiles%2fFiler%2fXtraSaver%2fxtrasaver.exe", "Download", "");
	//location.replace("/");
	//location.href = "http://www.forbrugerliv.dk/Admin/Public/DWSDownload.aspx?File=%2fFiles%2fFiler%2fXtraSaver%2fxtrasaver.exe";
	//alert("her");
}

function errorMsgAdd(dc, errorText)
{
	errorMsg += "\n- " + errorText;
	if(errorFocus == "") errorFocus = dc;
}

function elementDisable(dc)
{
    var i=0;
    var dcChild = dc.childNodes[i];
    while (dcChild)
    {         
        switch (dcChild.tagName)
        {
            case "INPUT":
            case "SELECT":
                dcChild.className = dcChild.className + " disabled";            
            case "BUTTON":
                dcChild.disabled = true;
                break;
        }
        elementDisable(dcChild);
        i++;
        dcChild=dc.childNodes[i];
    }
}

function elementEnable(dc)
{
    var i=0;
    var dcChild = dc.childNodes[i];
    while (dcChild)
    {         
        switch (dcChild.tagName)
        {
            case "INPUT":
            case "SELECT":
                dcChild.className = dcChild.className.replace(" disabled", "");
            case "BUTTON":
                dcChild.disabled = false;
				dcChild.removeAttribute("disabled");
                break;              
        }
        elementEnable(dcChild);
        i++;
        dcChild=dc.childNodes[i];
    }
}

/* Shows a loading gif while data is collected using AJAX */
function showLoading(dc)
{
	document.getElementById(dc).innerHTML = "<img src='http://beta.forbrugerliv.dk/files/billeder/site/ajax_loading.gif' alt='' style='margin-left: 4px;margin-top: 4px;' align='center' />";
}

function cookieWrite(name,value,seconds) {
	if (seconds) {
		var date = new Date();
		date.setTime(date.getTime()+(seconds*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function cookieRead(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return "";
}

function cookieErease(name) {
	cookieWrite(name,"",-1);
}

function queryStringGetString(title)
{
	if(!location.search) return "";
	
	var search = new Array();
	search = location.search.replace("?", "").split("&");
	for(i=0; i<search.length; i++)
	{
		var info = new Array();
		info = search[i].split("=");
		if(info[0].toString().toLowerCase() == title.toString().toLowerCase())
		{
			return info[1].toString();
		}
	}	
	return "";
}

/* Shows the loginbox and changes styles to make the link aligned */
function loginShow(redirectUrlIfSuccess)
{
	try
	{
    	document.getElementById("loginContainer").style.display = "inline";
		document.getElementById("loginLink").innerHTML = '<a href="#" onclick="loginHide();">Luk loginvindue</a>';
		document.getElementById("loginLink").setAttribute("id","loginLinkClose");		
	    redirectUrlIfLoginSuccess = redirectUrlIfSuccess;
	    window.scroll(0,0);
		
	} catch(e)
	{
		if (debug)
		{ 
			alert(e);
		}
	}
}
/* Hides the loginbox and changes styles to make the link aligned */
function loginHide()
{
	try
	{
		document.getElementById("loginContainer").style.display = "none";
		document.getElementById("loginLinkClose").innerHTML = '<a href="#" onclick="loginShow();">Log ind</a>';
		document.getElementById("loginLinkClose").setAttribute("id", "loginLink");
	} catch(e)
	{
		if (debug)
		{
			alert(e);
		}
	}
}

/* Used in the default loginbox at the top of all pages */
function submitenter(myfield,e)
{
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;

	if (keycode == 13)
	{	   
		Forbrugerliv.Member.FrontEnd.MemberAuthenticate(document.getElementById('logonEmailAddress').value, document.getElementById('logonPassword').value, MemberAuthenticate_CallBack);
		//void(0);		   
		return false;
	}
	else
	{
	   return true;
	}
}

/* Used on pages with login box placed in a paragraph */
function submitenterPage(myfield,e)
{
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;

	if (keycode == 13)
	{	   
		Forbrugerliv.Member.FrontEnd.MemberAuthenticate(document.getElementById('logonEmailAddressPage').value, document.getElementById('logonPasswordPage').value, MemberAuthenticatePage_CallBack);
		//void(0);
		return false;
	}
	else
	{
	   return true;
	}
}

/* Used on pages with login box placed in a paragraph */
function submitEnterTransferPage(myfield,e)
{
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;

	if (keycode == 13)
	{	   
		Forbrugerliv.Member.FrontEnd.MemberAuthenticate(document.getElementById('logonEmailAddressPage').value, document.getElementById('logonPasswordPage').value, MemberAuthenticatePage_CallBackTransferPage);
		//void(0);
		return false;
	}
	else
	{
	   return true;
	}
}

/* For the search field */
function searchOnFocus()
{
    document.getElementById("q").value = "";
}

function searchOnBlur(c)
{   
    if (document.getElementById("q").value== "")
    {
        document.getElementById("q").value= "S\370g...";
    }
}

/*
* Sets the class for the a item that has been clicked, and resets the other a tags in the UL/OL
*/
function menuMakeLiActive(dc)
{
    try
    {	
        for(var i=0; i < dc.parentNode.parentNode.childNodes.length; i++)
        {
            if (dc.parentNode.parentNode.childNodes[i].tagName == "LI")
            {
                dc.parentNode.parentNode.childNodes[i].firstChild.className = "";
            }
        }
    } catch(e) {}    

    dc.className = "activeItem";
    dc.blur();
}

function makePopupFromContainerContent(elementId, windowTitle)
{
	if (!windowTitle) windowTitle = "Forbrugerliv.dk";
	var w = window.open("", elementId, "height=500, width=500");
	w.document.title = windowTitle;
	w.document.write(document.getElementById(elementId).innerHTML);
	w.document.write('<html><head>');
	w.document.write('<link rel="stylesheet" type="text/css" href="/Files/System/standardText.css?633300667586939629" />');
	w.document.write('<link rel="stylesheet" type="text/css" href="/Files/System/defaultStyle.css?633300667586939629" />');
	w.document.write('<script language="javascript" type="text/javascript" src="Js/Common.js"></script>');
	w.document.write('</head><body>');
	w.document.write('<div style="position:absolute;left:0;top:0;width: 455px;" id="myPopupDiv">' + 
		document.getElementById(elementId).innerHTML + '</div>')
	w.document.write('<script language="javascript" type="text/javascript">resizeWinTo("myPopupDiv");</script>');
	w.document.write('</body></html>');
}

/** 
* Popup resize script made by Mark "Tarquin" Wilton-Jones.
* - http://www.howtocreate.co.uk/perfectPopups.html
*/
var popupMaxHeight = 600;	// The maximum height before the popup puts on scrollbars

function getRefToDivMod( divID, oDoc ) 
{
	if ( !oDoc ) { oDoc = document; }
	if( document.layers ) {
		if( oDoc.layers[divID] ) { return oDoc.layers[divID]; } else {
			for( var x = 0, y; !y && x < oDoc.layers.length; x++ ) {
				y = getRefToDivNest(divID,oDoc.layers[x].document); }
			return y; } }
	if( document.getElementById ) { return oDoc.getElementById(divID); }
	if( document.all ) { return oDoc.all[divID]; }
	return oDoc[divID];
}
function resizeWinTo(idOfDiv)
{
	
	var oH = getRefToDivMod( idOfDiv );
	if( !oH ) {
		return false;
	}
	
	var x = window; x.resizeTo( screen.availWidth, screen.availWidth );
	var oW = oH.clip ? oH.clip.width : oH.offsetWidth;
	var oH = oH.clip ? oH.clip.height : oH.offsetHeight; if( !oH ) { return false; }
	
	x.resizeTo( oW + 200, oH + 200 );
	
	var myW = 0, myH = 0, d = x.document.documentElement, b = x.document.body;
	
	if( x.innerWidth ) {
		myW = x.innerWidth;
		myH = x.innerHeight;
	} else if( d && d.clientWidth ) {
		myW = d.clientWidth;
		myH = d.clientHeight;
	} else if( b && b.clientWidth ) {
		myW = b.clientWidth;
		myH = b.clientHeight;
	}
	
	if( window.opera && !document.childNodes ) { myW += 16; }
	
	//second sample, as the table may have resized
	var oH2 = getRefToDivMod( idOfDiv );
	var oW2 = oH2.clip ? oH2.clip.width : oH2.offsetWidth;
	var oH2 = oH2.clip ? oH2.clip.height : oH2.offsetHeight;
	
	oW2 = oW2 + ( ( oW + 200 ) - myW );
	oH2 = oH2 + ( (oH + 198 ) - myH );

	// Add extra width to Opera vindows otherwise the scrollbar eats some of the space in the popup.
	if (navigator.appName == "Opera")
	{
		oW2 += 16;
	}
	
	// Is the window bigger than our max height
	if ( oH2 > popupMaxHeight)
	{
		oH2 = popupMaxHeight;
		/*
		try {
			// Makes the window a little wider to cover the width of the added scrollbar
			// scrollbars.visible only works in Firefox/Mozilla/Netscape
			if (x.scrollbars.visible == true)
			{
				oW2 += 18;
			}
		} catch(e) {}
		*/
	}
	if (navigator.appName == "Microsoft Internet Explorer")
	{
		x.resizeTo( oW2 , oH2+18 );
	}
	else
	{	
		x.resizeTo(oW2+20, oH2);
	}
 	
	// Centers the popup on the screen
	var scW = screen.availWidth ? screen.availWidth : screen.width;
  	var scH = screen.availHeight ? screen.availHeight : screen.height;
  	
	x.moveTo(Math.round((scW-oW)/2),Math.round((scH-oH)/2));

	//Makes sure the window has focus unless the users browser (Firefox) disallows this
	if( x.focus ) { x.focus(); }
}
// End popup scripts

/*
 * Function that can check if an input field has been filled out. Can handle radio, checkbox, select and text fields
 * fieldId	- The id of the field that needs to be checked
 * errorMessage - The text that should be displayed if the field has not been filled out correctly 
 */
function fieldCheck(fieldId, errorMessage)
{
	// Remove the class errorText from the field
	document.getElementById("div_" + fieldId).className = document.getElementById("div_" + fieldId).className.replace("errorText", "");
	
	try
	{
		if (!document.getElementById(fieldId) && debug)
		{
			rtn = "Error - The field " + fieldId + " does not exist.";
			return rtn;
		}
	} catch(e) {}
	if (!errorMessage)
	{
		errorMessage = "Du bedes angive en værdi.";
	}
	
	var rtnVal = "";
	var field = document.getElementById(fieldId);
	var fieldValue = "";

	switch(field.type)
	{
		default:
		case "text":
			fieldValue = field.value;
			break;
		case "select-one":
			if(field.selectedIndex > 0)
			{
				fieldValue = "valueIsSet";
			}
			break;
		case "select-multible":
			break;
		case "radio":
		case "checkbox":
			var myCheckboxCount = 0;
			for(var i=0; i<document.getElementsByName(fieldId).length; i++)
			{
				if(document.getElementsByName(fieldId)[i].checked)
				{
					myCheckboxCount++
				}
			}
			myCheckboxCount == 0 ? fieldValue = "" : fieldValue = "ok";
			break;
	}

	if(fieldValue == "") 
	{
		// Sets the class errorText to the object that contains the field we check
		document.getElementById("div_" + fieldId).className = document.getElementById("div_" + fieldId).className + "errorText";
		
		rtnVal += "<li>" + errorMessage + "</li>";
	}
	return rtnVal;
}

/**********************************************************************************************
Returns whether or not the given ssn is valid
***********************************************************************************************/
function validateSsnDk(cvr)
{
	try
	{
		if(cvr.length != 10) return false;
		
		var cvrArray = new Array(12);
		
		for(i=0; i<10; i++)
		{
			cvrArray[i+1] = cvr.substring(i, i+1);
		}
		
		return ((
			(Number(cvrArray[1])*4)+
			(Number(cvrArray[2])*3)+
			(Number(cvrArray[3])*2)+
			(Number(cvrArray[4])*7)+
			(Number(cvrArray[5])*6)+
			(Number(cvrArray[6])*5)+
			(Number(cvrArray[7])*4)+
			(Number(cvrArray[8])*3)+
			(Number(cvrArray[9])*2)+
			Number(cvrArray[10])
			) % 11) == 0
	}
	catch(e)
	{
		return false;
	}
}

function validateTelephoneNumber(dc, countryId)
{
	var t = new String(dc.value);
	
	switch(countryId)
	{
		default:
		case "da":
			var s = /^\b[3-9][0-9]{7}\b$/;
			break;
		case "se":
			var s = /^(0[1-9]\d{5}(?:\d{1})?(?:\d{2})?(?:\d{3})?(?:\d{4})?(?:\d{5})?)$/;
			break;
	}
	
	if(s != null)
	{
		return s.test(t);
	}
	else
	{
		return false;
	}
}

function validateMobileTelephoneNumber(dc, countryId)
{
	var t = new String(dc.value);
	
	switch(countryId)
	{
		default:
		case "da":
			var s = /^\b[2-9][0-9]{7}\b$/;
			break;
		case "se":
			var s = /^0(10|70|73|74|76)(\d{7})$/;
			break;
	}
	
	if(s != null)
	{
		return s.test(t);
	}
	else
	{
		return false;
	}
}

/* Used in member profile automatic check*/
function valueCheck(fieldId, helpText, minimum, regExp)
{
	var typeText = document.getElementsByName(fieldId)[0].type;
	var prefixRtn = "\n- ";
	var errorText = "";
	var field;
	
	if(typeText == "text" ||
		typeText == "hidden")
	{
		field = document.getElementById(fieldId);
		if(field.value == "")
		{
			errorText = prefixRtn + helpText;
		}
		else if(regExp)
		{
			var re = new RegExp(regExp);
			if(!re.test(field.value))
			{
				errorText = prefixRtn + helpText;
			}
		}
	}
	else if(typeText == "select-one")
	{
		field = document.getElementById(fieldId);
		if(field.selectedIndex == 0)
		{
			errorText = prefixRtn + helpText;
		}
	}
	else
	{
		if(!minimum)
		{
			minimum = 1;
		}
		field = document.getElementsByName(fieldId);
		
		var checkedQty = 0;
		
		for(counter = 0; counter<field.length; counter++)
		{
			try
			{
				if(field[counter].checked)
				{
					checkedQty++;
				}
			} catch(e){alert(e);}
		}
		errorText = (checkedQty >= minimum ? "" : prefixRtn + helpText);
	}
	return errorText;
}

function dateCheck(dayFieldId, monthFieldId, yearFieldId)
{
    var errorMessage = "\n- Den valgte dato er ugyldig.";

    var year = document.getElementById(yearFieldId).value;
    var month = document.getElementById(monthFieldId).value;
    var day = document.getElementById(dayFieldId).value;
    
    if (year <= 0 || month <= 0 || day <= 0)
        return "";
    
    month = month - 1;    

    var date = new Date(year, month, day);


    if (date.getMonth() != month)
        return errorMessage;
    else
        return "";
}

function commonCreatePassword(passwordLength) {
	var cifferString = new String("123abcdefghijklm456nopqrstuvwxyz0123456789ABCDEFGHIJKL789MNOPQRSTUVWXYZ0");
	var password = new String("");
	while (password.length < passwordLength) {
		var n = new String(Math.random()*10000).substring(0, 3);
		while (cifferString.length < n) {
			n = Math.round(n/10);
		}
		password += cifferString.substring(n, n+1);
	}
	return password;
}

function getKeyCode(sender)
{
    var keyCode;
    if(window.event)
    {
        keyCode = sender.keyCode;
    }
    else if(sender.which)
    {
        keyCode = sender.which;
    }
    
    return keyCode;
}

function EscapePatternCharacters(str)
{
    return str.replace(/\\/g, '\\\\').replace(/%/g, '\\%').replace(/_/g, '\\_').replace(/\[/g, '\\[');
}

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
