// strFormat - Eks. "Kr|before|.|," 
// Parameter 0: Valutakode
// Parameter 1: Skal valutakode placeres f?r eller efter bel?bet (before/after)
// Parameter 2: Tusinde seperator
// Parameter 3: Decimal seperator




function formatCurrency(strValue, strFormat)
{
    var arrayFormat = strFormat.split('|');
    var strReturn = "";
    
	strValue = strValue.toString().replace(/\$|\,/g,'.');
	dblValue = parseFloat(strValue);




	blnSign = (dblValue == (dblValue = Math.abs(dblValue)));
	dblValue = Math.floor(dblValue*100+0.50000000001);
	intCents = dblValue%100;
	strCents = intCents.toString();
	dblValue = Math.floor(dblValue/100).toString();
	if(intCents<10)
		strCents = "0" + strCents;
	for (var i = 0; i < Math.floor((dblValue.length-(1+i))/3); i++)
		dblValue = dblValue.substring(0,dblValue.length-(4*i+3))+ arrayFormat[2] + dblValue.substring(dblValue.length-(4*i+3));
	
	if (arrayFormat[1] == 'before')
	{
	    strReturn = (arrayFormat[0] + ' ' + ((blnSign)?'':'-') + dblValue + arrayFormat[3] + strCents);
	}
	else
	{
	    strReturn = (((blnSign)?'':'-') + dblValue + arrayFormat[3] + strCents + ' ' + arrayFormat[0]);
	}
	return strReturn; 
}




// Finder der x, y pos for det aktuelle object (obj). Ogs? selvom det ikke er placeret absolut.
// Eks.: 
// var coors = findPos(object);
// var ypos = coors[1] - 7;
// var xpos = coors[0] - 150;
function findPos(obj)
{
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft
        curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
	        curleft += obj.offsetLeft
	        curtop += obj.offsetTop
        }
    }
    return [curleft,curtop];
}




// Skjuler elementet angivet i elementId
// Eks.: hideElement('divBoks_1234');
function hideElement(elementId)
{
    tmpElement = document.getElementById(elementId);
    tmpElement.style.display = 'none';
}




// Skjuler alle elementer med et givent tag (tagName) og id pr?fiks (idPrefixStr)
// Eks.: hideAllElements('div', 'DivOrderLineComment_');
function hideAllElements(tagName, idPrefixStr)
{
 
    var tmpElements = getElementsByIdPart(idPrefixStr,null,tagName)
    var len = tmpElements.length;
	for (i = 0; i < len; i++) {
			//classElements[j] = els[i];
			tmpElements[i].style.display = 'none';
	}
}




function getBodyHeight() {
  var myHeight = 0;
  if (typeof( window.innerHeight) == 'number') 
  {
    //Non-IE
    myHeight = window.innerHeight;
  } else if( document.documentElement && document.documentElement.clientHeight) {
    //IE 6+ in 'standards compliant mode'
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && document.body.clientHeight) {
    //IE 4 compatible
    myHeight = document.body.clientHeight;
  }
  return myHeight
}








function getBodyWidth() {
  var myWidth = 0;
  if (typeof( window.innerWidth) == 'number') 
  {
    //Non-IE
    myWidth = window.innerHeight;
  } else if( document.documentElement && document.documentElement.clientWidth) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
  } else if( document.body && document.body.clientWidth) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
  }
  return myWidth
}




function getScrollX() {
  var scrOfX = 0;
  if (typeof(window.pageXOffset) == 'number' ) 
  {
    //Netscape compliant
    scrOfX = window.pageXOffset;
  } 
  else if( document.body && document.body.scrollLeft ) 
  {
    //DOM compliant
    scrOfX = document.body.scrollLeft;
  } 
  else if( document.documentElement && document.documentElement.scrollLeft) 
  {
    //IE6 standards compliant mode
    scrOfX = document.documentElement.scrollLeft;
  }
  return scrOfX;
}








function getScrollY() {
  var scrOfY = 0;
  if (typeof(window.pageYOffset) == 'number' ) 
  {
    //Netscape compliant
    scrOfY = window.pageYOffset;
  } 
  else if( document.body && document.body.scrollTop ) 
  {
    //DOM compliant
    scrOfY = document.body.scrollTop;
  } 
  else if( document.documentElement && document.documentElement.scrollTop) 
  {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
  }
  return scrOfY;
}




function checkKey(element_event)
{
    var shift = 0;
    var evt = null;
    
    //alert(isDefined(element_event));
    if (isDefined(element_event))
    {
	evt = element_event;
    }
    else if (isDefined(window.event))
    {
	evt = window.event;
    }
        
    if (evt != null)
    {
        
        if(evt.shiftKey==true||evt.altKey==true||evt.ctrlKey==true){
	        shift = 1000		
        }
        key = evt.keyCode + shift
        
	    switch(key)
        {
	        case 109:break			//Numerisk -
            case 189:break			//-
            case 48:break			//0
            case 49:break			//1
            case 50:break			//2
            case 51:break			//3
            case 52:break			//4
            case 53:break			//5
            case 54:break			//6
            case 55:break			//7
            case 56:break			//8
            case 57:break			//9
            case 96:break			//Nummerisk + 0
            case 97:break			//Nummerisk + 1
            case 98:break			//Nummerisk + 2
            case 99:break			//Nummerisk + 3
            case 100:break			//Nummerisk + 4
            case 101:break			//Nummerisk + 5
            case 102:break			//Nummerisk + 6
            case 103:break			//Nummerisk + 7
            case 104:break			//Nummerisk + 8
            case 105:break			//Nummerisk + 9
            case 8:break			//backspace
            case 1008:break			//backspace
            case 46:break			//delete
            case 1046:break			//delete
            case 9:break			//tabulator
            case 1009:break			//tabulator
            case 37:break			//cursor left
            case 1037:break			//cursor left
            case 39:break			//cursor right
            case 1039:break			//cursor right
            case 13:				//return
	            //event.keyCode = 9	//tabulator
	            evt.keyCode = 9	//tabulator
	            break
            case 1013:				//return
	            //event.keyCode = 9	//tabulator
	            evt.keyCode = 9	//tabulator
	            break
            default:
	            
	            evt.returnValue = false;
                evt.cancel = true;
                return false;
	    }
    }
}




function getElementsByIdPart(idPart,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp(idPart);
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].id) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}


function getElementsByTagNames(tagNames)
{
	var arrayTagNames = tagNames.split(",");
	var allContainers = new Array(); 
	var n = 0;
	var ii=0; 
	for (var n=0; n<arrayTagNames.length; n++)
	{
		var elements = document.getElementsByTagName(arrayTagNames[n]); 
		for(var i=0; i<elements.length; i++){ 
			allContainers[ii] = elements[i]; 
			ii++; 
		} 
	}
	
	return allContainers;
} 

function isDefined(variable)
{
    //alert(typeof(variable));
    return (typeof(variable) == "undefined")?  false: true;
}


function validate(sender,direction) {
	var items = new Array();
	items = getElementsByTagNames("input,select");//document.getElementsByTagName("input"); 
	
	var displayError = false;
	var formvalid = true; 
	var samletfejlbesked = "";
	var errorText = "";
	var strAllowBlankErrorText = "m\u00E5 ikke v\u00E6re tom";
	var strAllowBlankErrorText2 = "skal  v\u00E6re valgt";
	
	for (var i = 0; i < items.length; i++) { 
		if (items[i].getAttribute('validate') == "true") { 
			displayError = false;
			
			feltvalue = new String(items[i].value);
			if ((items[i].getAttribute('allowblank') != 'true') && (feltvalue == '')) {
				displayError = true;
				if (items[i].tagName == 'INPUT')
				{
					errorText = strAllowBlankErrorText;
				}
				else
				{
					errorText = strAllowBlankErrorText2;
				}
			}
			else {
				
				regError = false;
				if ((items[i].getAttribute('regularexpression') != null) && (items[i].getAttribute('regularexpression') != ''))
				{
					myRegExp = new RegExp(items[i].getAttribute('regularexpression'))
					tmp = myRegExp.exec(feltvalue);
					if (tmp == null) 
					{
						displayError = true;
						regError = true;
					}
				}
				if ((displayError == false) && (items[i].getAttribute('validationfunction') != null) && (items[i].getAttribute('validationfunction') != ''))
				{
				    var isFieldValid = false;
					strFunc = new String(items[i].getAttribute('validationfunction'));
					eval('isFieldValid = ' + strFunc + '(items[i]);');
					if  (!isFieldValid)
						displayError = true;
					
				}
				if (displayError)
				{
					if ((items[i].getAttribute('errordescriptionid') != null) && (items[i].getAttribute('errordescriptionid') != ''))
						errorText = getGlobalText('',items[i].getAttribute('errordescriptionid'));
					else if ((regError) && (items[i].getAttribute('errordescription_reg') != null) && (items[i].getAttribute('errordescription_reg') != ''))
						errorText = items[i].getAttribute('errordescription_reg');
					else if ((!regError) && (items[i].getAttribute('errordescription_func') != null) && (items[i].getAttribute('errordescription_func') != ''))
						errorText = items[i].getAttribute('errordescription_func');
					else
						errorText = 'unknown error';
				}
				
			}
			if (displayError == true) {
			    if (items[i].getAttribute('errorelement') != "") 
			    {
			        if (document.getElementById(items[i].getAttribute('errorelement')) != null) 
				        document.getElementById(items[i].getAttribute('errorelement')).style.display = 'block';
				}
				
				if ((document.getElementById(items[i].getAttribute('labelid')) != null) && (document.getElementById(items[i].getAttribute('labelid')).innerHTML != ''))
				{
				    samletfejlbesked = samletfejlbesked + "<li>" + document.getElementById(items[i].getAttribute('labelid')).innerHTML + ' ' + errorText + "</li>"
				    items[i].title = document.getElementById(items[i].getAttribute('labelid')).innerHTML + ' ' + errorText;
				}
				else
				{
				    samletfejlbesked = samletfejlbesked + "<li>" + items[i].getAttribute('friendly') + ' ' + errorText + "</li>"
				    items[i].title = items[i].getAttribute('friendly') + ' ' + errorText;
				}
				
				items[i].className = items[i].getAttribute('errorclass');
				formvalid = false;
			}
			else {
			    if (items[i].getAttribute('errorelement') != "") 
			    {
			        if (document.getElementById(items[i].getAttribute('errorelement')) != null) 
				        document.getElementById(items[i].getAttribute('errorelement')).style.display = 'none';
				}    
				items[i].title = "";
				items[i].className = items[i].getAttribute('normalclass');
			}
		}
	}
	
	if (formvalid == true) {
		document.getElementById('validationsummery').innerHTML = '';
		document.getElementById('validationcontainer').style.display = 'none';
	}
	else {
		document.getElementById('validationsummery').innerHTML = samletfejlbesked;
		
		var valContainer = document.getElementById('validationcontainer');
		
		var valSubmit = sender;//document.getElementById('btnSaveUser');
        var coors = findPos(valSubmit);
        valContainer.style.display = 'block';
        var ypos = coors[1];
        var xpos = coors[0];
        if (direction == 'up')
        {
            ypos = ypos - valContainer.offsetHeight + 25;
        }
        else
        {
            ypos = ypos - 5;
        }
        
        xpos = xpos - 130;
        
        valContainer.style.left = xpos;
        valContainer.style.top = ypos;
	}
	 
	return formvalid;
}	

function old_validate() {
	
	var items = document.getElementsByTagName("input"); 
	var displayError = false;
	var formvalid = true; 
	var samletfejlbesked = "";
	var errorText = "";
	var strAllowBlankErrorText = "must not be emty";
	if (isDefined('validationAllowBlankErrorText')) 
    {
	    strAllowBlankErrorText = validationAllowBlankErrorText;
    }
	for (var i = 0; i < items.length; i++) { 
		if (items[i].getAttribute('validate') == "true") { 
			displayError = false;
			feltvalue = new String(items[i].value);
			if ((items[i].getAttribute('allowblank') != 'true') && (feltvalue == '')) {
				displayError = true;
			    //errorText = getGlobalText('','Validation:MustNotBeEmpty');
				errorText = strAllowBlankErrorText;
			}
			else {
				if ((items[i].getAttribute('regularexpression') != null) && (items[i].getAttribute('regularexpression') != ''))
				{
					myRegExp = new RegExp(items[i].getAttribute('regularexpression'))
					tmp = myRegExp.exec(feltvalue);
					if (tmp == null) 
					{
						displayError = true;
						if ((items[i].getAttribute('errordescriptionid') != null) && (items[i].getAttribute('errordescriptionid') != ''))
						{
						    errorText = getGlobalText('',items[i].getAttribute('errordescriptionid'));
						}
						else if ((items[i].getAttribute('errordescription') != null) && (items[i].getAttribute('errordescription') != ''))
						{
				    	    errorText = items[i].getAttribute('errordescription');
				    	}
				    	else
				    	{
				    	    errorText = 'unknown error';
				    	}
					}
				}
			}
			if (displayError == true) {
			    if (items[i].getAttribute('errorelement') != "") 
			    {
			        if (document.getElementById(items[i].getAttribute('errorelement')) != null) 
			        {
				        document.getElementById(items[i].getAttribute('errorelement')).style.display = 'block';
				    }    
				}
				
				if ((document.getElementById(items[i].getAttribute('labelid')) != null) && (document.getElementById(items[i].getAttribute('labelid')).innerHTML != ''))
				{
				    samletfejlbesked = samletfejlbesked + document.getElementById(items[i].getAttribute('labelid')).innerHTML + ' ' + errorText + "<br>"
				    items[i].title = document.getElementById(items[i].getAttribute('labelid')).innerHTML + ' ' + errorText;
				}
				else
				{
				    samletfejlbesked = samletfejlbesked + items[i].getAttribute('friendly') + ' ' + errorText + "<br>"
				    items[i].title = items[i].getAttribute('friendly') + ' ' + errorText;
				}
				
				items[i].className = items[i].getAttribute('errorclass');
				formvalid = false;
			}
			else {
			    if (items[i].getAttribute('errorelement') != "") 
			    {
			        if (document.getElementById(items[i].getAttribute('errorelement')) != null) 
			        {
				        document.getElementById(items[i].getAttribute('errorelement')).style.display = 'none';
				    }    
				}    
				items[i].title = "";
				items[i].className = items[i].getAttribute('normalclass');
			}
		}
	}
	
	if (formvalid == true) {
		document.getElementById('validationsummery').innerHTML = '';
		document.getElementById('validationsummery').style.display = 'none';
	}
	else {
		document.getElementById('validationsummery').innerHTML = samletfejlbesked;
		document.getElementById('validationsummery').style.display = 'block';
	}
	 
	 
	return formvalid;
}	




function initXMLHttpRequestObject()
{
    var XMLHttpRequestObject = null;
    if (window.XMLHttpRequest)




    { // Mozilla, Safari,...  And IE 7.0
        XMLHttpRequestObject = new XMLHttpRequest();
        if (XMLHttpRequestObject.overrideMimeType)
        {
            XMLHttpRequestObject.overrideMimeType('text/xml');
        }
    }
    else if (window.ActiveXObject)
    { // IE
        try
        {
            XMLHttpRequestObject = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {




            }
        }
    }
return XMLHttpRequestObject;
}








//Henter Querystring variable udfra current querystring
function javaqueryString(key, dounescape)
{
    var page = new PageQuery(window.location.search); 
	if (dounescape == false)
	{
	    
	    return page.getValue(key); 
	}
	else
	{
	    return unescape(page.getValue(key)); 
	}
}








function Get_Cookie( name ) 
{
    var start = document.cookie.indexOf( name + "=" );
    var len = start + name.length + 1;
    if ( ( !start ) &&
    ( name != document.cookie.substring( 0, name.length ) ) )
    {
    return null;
    }
    if ( start == -1 ) return null;
    var end = document.cookie.indexOf( ";", len );
    if ( end == -1 ) end = document.cookie.length;
    return unescape( document.cookie.substring( len, end ) );
}




function Delete_Cookie( name, path, domain ) 
{
    if ( Get_Cookie( name ) ) document.cookie = name + "=" +
    ( ( path ) ? ";path=" + path : "") +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}




function Set_Cookie(name, value, expiredays, domain) 
{
    var ExpireDate = new Date ();
    ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
    document.cookie = name + "=" + escape(value) + 
    ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString()) + 
    ( ( domain ) ? "; domain=" + domain : "" );
}




function Set_Cookie2(cname, value, expiredate, domain) 
{
    cookiestr = cname + '=' + escape(value);
    if (expiredate != null)
    {
        cookiestr += '; expires=' + expiredate.toGMTString();
    }
    if (domain != null)
    {
        cookiestr += "; domain=" + domain;
    }
    document.cookie = cookiestr;
    //document.cookie = cname + "=" + escape(value) + ((expiredays == null) ? "" : "; expires=" + expiredate.toGMTString()) + ( ( domain ) ? "; domain=" + domain : "");
}








function doPictureExists(pic)
{
    var result = false;
    var http_request = initXMLHttpRequestObject();
    if (http_request != null)
    {
        http_request.open('GET', pic, true);
        http_request.onreadystatechange = function () 
        {
            if (http_request.readyState == 4) {
                if (http_request.status == 200) {
                    result = true
                } 
            }
        }
        http_request.send(null);
    }
    return result;
}








function PageQuery(q) 
{
	if(q.length > 1) 
		this.q = q.substring(1, q.length);
	else 
		this.q = null;




	this.keyValuePairs = new Array();
	if(q) 
	{
		for(var i=0; i < this.q.split("&").length; i++) 
		{
			this.keyValuePairs[i] = this.q.split("&")[i];
		}
	}




	this.getKeyValuePairs = function() { return this.keyValuePairs; }




	this.getValue = function(s) 
	{
		for(var j=0; j < this.keyValuePairs.length; j++) 
		{
			if(this.keyValuePairs[j].split("=")[0] == s)
				return this.keyValuePairs[j].split("=")[1];
		}
		return false;
	}




	this.getParameters = function() 
	{
		var a = new Array(this.getLength());
		for(var j=0; j < this.keyValuePairs.length; j++) 
		{
		a[j] = this.keyValuePairs[j].split("=")[0];
		}
		return a;
	}




	this.getLength = function() 
	{ 
		return this.keyValuePairs.length; 
	} 
}