// 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;
    
    if (isDefined('element_event'))
    {
        evt = element_event;
    }
    else if (isDefined(event))
    {
        evt = 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 isDefined( variable)
{
    //alert(typeof(variable));
    return (typeof(variable) == "undefined")?  false: true;
}

function 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');//strAllowBlankErrorText;
			}
			//else if ((items[i].getAttribute('allowblank') == 'true') && (feltvalue == '')) {
			//    
			//}
			else {//if ((items[i].getAttribute('allowblank') == 'true') && (feltvalue != '')) {
				//var tt = '';
				//tt = items[i].getAttribute("regularexpression");
				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') != ''))
						{
						    //alert(items[i].getAttribute('errordescriptionid'));
						    errorText = getGlobalText('',items[i].getAttribute('errordescriptionid'));
						    //alert(errorText);
						}
						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; 
	} 
}
