
var passwd1 = null;
var passwd2 = null;
var passwdReqCell1 = null;
var passwdReqCell2 = null;

function ValidateFields(holderId)
{
	var retVal = true;
	var holder = document.getElementById(holderId);
	if (holder == null) 
		return;
	var rows = holder.getElementsByTagName("TR");
	for (var i = 0; retVal && i < rows.length; i++)
	{
		var reqCell = null, inCell = null, lblCell = null;
		for (var j = 0; j < rows[i].cells.length; j++)
		{
			switch (rows[i].cells[j].className)
			{
				case "FormLabelCell":
					lblCell = rows[i].cells[j];
					break;
				case "ObligatoryCell":
					reqCell = rows[i].cells[j];
					break;
				case "InputCell":
					inCell = rows[i].cells[j];
					break;
			}
		}
		if (reqCell != null && inCell != null)
		{
			retVal = ParseChildren(inCell, reqCell, lblCell);
		}
	}
	if (retVal)
	{
		if (passwd1 && passwd2 && passwd1.value != passwd2.value)
		{
			alert("Passwords er ikke ens");
			passwd1.focus();
			passwdReqCell1.style.color = passwdReqCell2.style.color = "red";
			passwd1.value = passwd2.value = "";
			passwd1 = passwd2 = null;
			retVal = false;
		}
	}
	return retVal;
}

function ValidateCustomerSubmit(custTypeId, holderId, text)
{
	var custType = document.getElementById(custTypeId);
	if (custType.selectedIndex == 0)
	{
		alert(text);
		custType.focus();
		return false;
	}
	
	return ValidateFields(holderId);	
}

function CheckEnterSubmit(e, buttonId)
{
	var obj = typeof(e.target) != "undefined" ? e.target : e.srcElement;
	if (e.keyCode == 13 && obj.type != "textarea")
	{
		var button = document.getElementById(buttonId);
		if (button)
		{
			button.click();
		}
		
		return false;
	}
	return true;
}

function ValidateField(control, reqCell, lblCell)
{
	var retVal = true;
	var req = getInnerText(reqCell);
	var validate = document.getElementById(control.id + "_validate");
	if (validate)
	{
		retVal = Validate(control, validate.innerHTML);	
	}
	reqCell.style.color = "";
	if (!retVal)
	{
		reqCell.style.color = "red";
		control.focus();
	}
	
	return retVal;
}

function Validate(control, validateValue)
{
	var val = "", retVal = true;
	var error, currRule = "";
	
	if (control.disabled || control.readOnly)
		return true;
			
	switch (control.nodeName)
	{
		case "INPUT":
		case "TEXTAREA":
			val = Trim(control.value);
			break;
	}
	var rules = validateValue.split("___");
	for (var i = 0; i < rules.length; i++)
	{
		var rule = rules[i].split("=");
		if (rule.length != 2)
			continue;
		if (retVal && rule[0].indexOf("error") == -1)
		{
			currRule = rule[0];
			switch (rule[0])
			{
				case "equal":
					retVal = val == rule[1];
				case "notequal":
					retVal = val != rule[1];
					break;
				case "maxlength":
					retVal = val.length <= parseInt(rule[1]);
					break;
				case "minlength":
					retVal = val.length >= parseInt(rule[1]);
					break;
				case "length":
					retVal = val.length == parseInt(rule[1]);
					break;
				case "regexp":
					var regexp = new RegExp(rule[1]);
					var matches = regexp.exec(val);
					retVal = matches != null && val == matches[0];
					break;
				case "datatype":
					if (rule[1] == "int")
						retVal = val.search(/\D/) == -1;
					break;
			}
		}
	}
	if (!retVal)
	{
		for (var i = 0; i < rules.length; i++)
		{
			var rule = rules[i].split("=");
			if (rule.length != 2)
				continue;
			if (rule[0] == currRule + "error")
			{
				error = rule[1];
				break;
			}
		}
		alert(error);
	}	
	
	return retVal;
}

function ParseChildren(node, reqCell, lblCell)
{
	var retVal = true;
	if (node == null) return;
	for (var i = 0; i < retVal && node.childNodes.length; i++) 
	{	
		var currNode = node.childNodes[i];
		switch (currNode.nodeName)
		{
			case "INPUT":
				if (!((currNode.type == "text" || currNode.type == "password") && (!currNode.disabled || currNode.readOnly)))
					continue;
				retVal = ValidateField(currNode, reqCell, lblCell);
				if (retVal && currNode.id.match(/password(|2)$/) != null)
				{
					if (currNode.id.charAt(currNode.id.length - 1) != '2')
					{
						passwd1 = currNode;
						passwdReqCell1 = reqCell;
					}
					else
					{
						passwd2 = currNode;
						passwdReqCell2 = reqCell;
					}
				}
				break;
			case "SELECT":
				var validate = false;
				reqCell.style.color = ""
				if (currNode.options.length > 0 && currNode.selectedIndex == 0) 
				{
					var label = Trim(getInnerText(lblCell));
					switch (label)
					{
						case "Virksomhedstype":
							validate = true;
							break;
					}
					if (validate)
					{
						alert("V" + unescape("%E6") + "lg venligst " + label);
						reqCell.style.color = "red";
						currNode.focus();
						retVal = false;
					}
				}
				break;
		}
		if (retVal && currNode.length > 0)
			ParseChildren(currNode.firstChild, reqCell, lblCell);
	}
	
	return retVal;
}

function Trim(strValue)
{
	return strValue.replace(/^\s+|\s+$/g, '');
} 

function getInnerText(el) 
{
	if (typeof(el.innerText) != "undefined") return el.innerText;	
	var str = "";
	for (var i=0; i<el.childNodes.length; i++) {
		switch (el.childNodes.item(i).nodeType) {
			case 1: 
				str += getInnerText(el.childNodes.item(i));
				break;			
			case 3:	
				str += el.childNodes.item(i).nodeValue;
				break;
		}
	}
	return str;
}

function HandleDeliveryPanel(checkbox)
{
	var checked = checkbox.checked;
	var deliveryHolder = document.getElementById("DeliveryInfoHolder");
	HandleDeliveryEnable(deliveryHolder, "INPUT", checked);
	HandleDeliveryEnable(deliveryHolder, "SELECT", checked);
}

function HandleDeliveryEnable(holder, tagName, enable)
{
	var nodes = holder.getElementsByTagName(tagName);
	for (var i = 0; i < nodes.length; i++)
	{
		var handled = false;
		var currNode = nodes[i];
		if (currNode.nodeName == "INPUT" && nodes[i].type == "text")
		{
			currNode.value = "";
			currNode.disabled = enable;
			handled = true;
		}
		else if (currNode.nodeName == "SELECT")
		{
			if (currNode.id.indexOf("countrycode") != -1) {
				//currNode.value = "DK";	
                var selects = document.getElementsByTagName("SELECT");
                for (var j = 0; j < selects.length; j++) {
                    if (selects[j].id.indexOf("ii_countrycode") != -1) {
                        currNode.value = selects[j].value;
                        break;
                    }
                }
            }
			currNode.disabled = enable;
			handled = true;
		}
		if (handled)
		{
			var reqCell = GetPreviousNode(GetParentNode(currNode, "TD"), "TD");
			if (reqCell != null)
				reqCell.style.color = enable ? "white" : "black";
		}
	}
}

function GetParentNode(currNode, tagName)
{
	var retNode = null;
	if (currNode != null)
		for (retNode = currNode.parentNode; retNode != null && retNode.nodeName != tagName; retNode = retNode.parentNode);
	
	return retNode;
}

function GetPreviousNode(currNode, tagName)
{
	var retNode = null;
	if (currNode != null)
		for (retNode = currNode.previousSibling; retNode != null && retNode.nodeName != tagName; retNode = retNode.previousSibling);
	
	return retNode;
}

function OpenCustomerTypeHelp(custTypeId)
{
	var custType = document.getElementById(custTypeId);
	OpenHelpWindow("/message/customer/help/" + custType.options[custType.selectedIndex].text + ".aspx");
}

function OpenHelpWindow(url)
{
	var wnd = window.open(url, "HelpWindow", "width=500,height=400");	
	wnd.focus();
}

function OpenMessageWindow(url) {
	var wnd = window.open(url, "MessageWindow", "width=500,height=400");	
	wnd.focus();
}

function SubmitShowCustomerAction(action)
{
	document.getElementById('CustomerAction').value = action;
	if (document.getElementById('CustomerTypeAction'))
		document.getElementById('CustomerTypeAction').value = "show";
		
	document.forms[0].action = "/user/customer.aspx";
	document.forms[0].submit();
}

var paymentButton = null;
var paymentTimer = null;

function ValidatePaymentForm(button)
{
	var checked = false;
	var radioElement = null;
		
	paymentButton = button;
	var paymentDataTable = document.getElementById("PaymentDataTable");
	elements = paymentDataTable.getElementsByTagName("INPUT");
	for (var i = 0; i < elements.length; i++)
	{
		if (elements[i].type == "text")
		{
			var validate = document.getElementById(elements[i].id + "_validate");	
			if (!Validate(elements[i], validate.innerHTML))
			{
				elements[i].focus();
				return false;
			}
		}
	}
	elements = paymentDataTable.getElementsByTagName("SELECT");
	for (var i = 0; i < elements.length; i++)
	{
		if (!elements[i].disabled && elements[i].value == "")
		{
			alert("V" + unescape("%E6") + "lg venligst en v" + unescape("%E6") + "rdi fra listen");
			elements[i].focus();
			return false;
		}
	}
	
	paymentTimer = window.setTimeout(DisablePaymentButton, 100);
		
	return true;
}

function DisablePaymentButton()
{
	paymentButton.disabled = true;
	window.clearTimeout(paymentTimer);
}

function SyncWrite(id, obj)
{
	var elem = document.getElementById(id)
	if (elem)
	{
		elem.innerHTML = obj.value;
	}
}

function OpenPublicationInMainWindow(id)
{
	window.opener.location.href = "/publikationer/publikationsdetaljer.aspx?PId=" + id;
	window.opener.focus();
}

function ResetCheckOutPersonalData(deliveryCheckboxId, state)
{
	var checkbox = document.getElementById(deliveryCheckboxId);
	if (checkbox.checked != state)
	{
		checkbox.checked = state;
		HandleDeliveryPanel(checkbox);
	}
	document.forms[0].reset(); 
	return false;
}

function ShowShopBasketSimple(elem) 
{
	var shopBasketSimple = document.getElementById("ShopBasketSimple");
	var shopBasketSimpleFrame = document.getElementById("ShopBasketSimpleFrame");
	var pos = getElementPosition(elem);
	shopBasketSimple.style.top = (GetTopPos(elem) + elem.offsetHeight + 5) + "px";
	var leftPos = GetLeftPos(elem);
	shopBasketSimple.style.display = "block";
	if (leftPos + shopBasketSimple.offsetWidth > document.body.clientWidth)
		leftPos = document.body.clientWidth - shopBasketSimple.offsetWidth;
	shopBasketSimple.style.left = leftPos + "px";
	if (shopBasketSimpleFrame)
	{
		shopBasketSimpleFrame.style.left = shopBasketSimple.style.left;
		shopBasketSimpleFrame.style.top = shopBasketSimple.style.top;
		shopBasketSimpleFrame.style.width = shopBasketSimple.offsetWidth;
		shopBasketSimpleFrame.style.height = shopBasketSimple.offsetHeight;
		shopBasketSimpleFrame.style.display = "";
	}
}

function HideShopBasketSimple(elem)
{
	var shopBasketSimple = document.getElementById("ShopBasketSimple");
	var shopBasketSimpleFrame = document.getElementById("ShopBasketSimpleFrame");
	shopBasketSimple.style.display = "none";
	if (shopBasketSimpleFrame)
	{
		shopBasketSimpleFrame.style.display = "none";
	}
}

function GetTopPos(objCurrNode)
{
	var intTopPos = 0;	
	var objNode = objCurrNode;
	
	while (objNode && objNode.nodeName != "BODY")
	{
		intTopPos += objNode.offsetTop;
		objNode = objNode.offsetParent;
	} 
		
	return intTopPos;
}

function GetLeftPos(objCurrNode)
{
	var intLeftPos = 0;	
	var objNode = objCurrNode;
	
	while (objNode && objNode.nodeName != "BODY")
	{
		intLeftPos += objNode.offsetLeft;
		objNode = objNode.offsetParent;
	} 
		
	return intLeftPos;
}

function getElementPosition(element) {
    var result = new Object();
    result.x = 0;
    result.y = 0;
    result.width = 0;
    result.height = 0;
    if (element.offsetParent) {
        result.x = element.offsetLeft;
        result.y = element.offsetTop;
        var parent = element.offsetParent;
        while (parent) {
            result.x += parent.offsetLeft;
            result.y += parent.offsetTop;
            var parentTagName = parent.tagName.toLowerCase();
            if (parentTagName != "table" &&
                parentTagName != "body" && 
                parentTagName != "html" && 
                parentTagName != "div" && 
                parent.clientTop && 
                parent.clientLeft) {
                result.x += parent.clientLeft;
                result.y += parent.clientTop;
            }
            parent = parent.offsetParent;
        }
    }
    else if (element.left && element.top) {
        result.x = element.left;
        result.y = element.top;
    }
    else {
        if (element.x) {
            result.x = element.x;
        }
        if (element.y) {
            result.y = element.y;
        }
    }
    if (element.offsetWidth && element.offsetHeight) {
        result.width = element.offsetWidth;
        result.height = element.offsetHeight;
    }
    else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
        result.width = element.style.pixelWidth;
        result.height = element.style.pixelHeight;
    }
    return result;
}

function CheckFMSubscriptionChoice(name)
{
	var retVal = false;
	var radios = document.getElementsByName(name);
	for (var i = 0; i < radios.length; i++)
	{
		if (radios[i].checked)
		{
			retVal = true;
			break;
		}
	}
	if (!retVal)
		alert('Du skal v' + unescape("%E6") +'lge et abonnement f' + unescape("%F8") +'rst...');
		
	return retVal;
}

function ValidateMicrositePaymentSubmit(paymentTypeId, holderId, alertText)
{
	var custType = document.getElementById(paymentTypeId);
	if (custType && custType.selectedIndex == 0)
	{
		alert(alertText);
		custType.focus();
		return false;
	}
	
	return ValidateFields(holderId);	
}

function SortItemsList(url, sortBy)
{
	document.location.href = url + "?sort=" + sortBy;	
}

var changedCountList = new Array();

function removeFromArray(arr, elem) {
    if (arr == null)
        return;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] == elem) {
            arr.splice(i, 1);
            break;
        }
    }
}

function existsInArray(arr, elem) {
    var retVal = false;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] == elem) {
            retVal = true;
            break;
        }
    }
    return retVal;
}

var _checkOutItemCountChanged = false;
var _checkOutCountryChanged = false;

function checkOutItemCountChanged(publCountElem, orgPublCount, nextBtnId) {
    _checkOutItemCountChanged = true;
    
    if (publCountElem.value !== orgPublCount.toString()) {
        if (!existsInArray(changedCountList, publCountElem))
            changedCountList.push(publCountElem);
    } else {
        removeFromArray(changedCountList, publCountElem);
    }
    if (changedCountList.length == 0) {
        _checkOutItemCountChanged = false;
    }
    handleNextBtnEnabled(nextBtnId, !_checkOutItemCountChanged && !_checkOutCountryChanged);
}

function checkOutCountryChanged(countryElem, orgVal, nextBtnId) {
    _checkOutCountryChanged = countryElem.value != orgVal;
    handleNextBtnEnabled(nextBtnId, !_checkOutItemCountChanged && !_checkOutCountryChanged);
}

function handleNextBtnEnabled(nextBtnId, enabled) {
    var disabledClassName = " CheckOutNextButtonDisabled";
    var nextBtn = document.getElementById(nextBtnId);
    if (!enabled) {
        if (nextBtn.type === "image" && nextBtn.className.indexOf(disabledClassName) == -1) {
            nextBtn.className += disabledClassName;    
        }
        nextBtn.disabled = true;
    } else {
        if (nextBtn.type === "image") {
            nextBtn.className = nextBtn.className.replace(disabledClassName, "");
        }
        nextBtn.disabled = false;
    }
}

function openDIBSWindow() {
    var dw = window.open('/forms/DIBSPaymentForm.aspx', 'DISBWindow', 'scrollbars,status,width=550,height=600');
    dw.focus();
    return false;
}
