/*Globale variabler*/
var disabledColor = "#dfe0e0";//"#C0C0C0";
var enabledColor = "#ffffff";

function otherPopup(id,title,refid,value,jsp)
{
    // select cmd sikre at data på formen som kalder popup ekstrakt'es. Dette er nødvendigt, hvis data ikke er ekstrakted
  document.data.cch_cmd.value="select";
  document.data.cch_other_id.value=id;
  document.data.cch_title.value=title;
  document.data.cch_refid.value=refid;
  document.data.cch_show_popup.value="true";
  document.data.cch_popup_txt.value=value;
  document.data.cch_jsp_page.value=jsp;

  document.data.submit();
}
function helpWin(id) {
	window.open('loen?id=help&cch_helid='+id,'Help','left=30,top=30,width=900,height=500,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes')
}


function printPage(jid) {
	window.open('loen?id=print&jid='+jid,'Print','left=20,top=20,width=548,height=500,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes')
}


/*Mouseover funktion*/
function swapImage() {

        for (var i=0; i<swapImage.arguments.length; i+=2) {
		document[swapImage.arguments[i]].src = swapImage.arguments[i+1];
	}
}

function swapImageObj() {
        for (var i=0; i<swapImageObj.arguments.length; i+=2) {
               swapImageObj.arguments[i].src = swapImageObj.arguments[i+1];
	}
}

/*Sætter fokus på felt fejler i firefox!*/
function setFocus(id) {
	document.getElementById(id).focus();
}

/*
Funktioner som cleare partner skinning. Kaldes fra Powered by logo
LsfAccessController håndterer parametret ref=clear og nullstiller PartnerManager
*/
function clearPartner() {
    confirmPopup('Information','Vil du til Løn som Fortjent?','Hvis du klikker på OK kommer du til Løn som Fortjents hjemmeside.',gotolsf);
}

function gotolsf() {
    location.href = "loen?id=forside&ref=clear";
}

/*
Funktion til at sætte baggrundsfarve på felter.
Eksempel: addFormToFocusColor(document.data)
	  hvor document.data er formen.
*/
function changeColor(){
	this.style.background="#FFFDC6";
}

function resetColor(){
	 this.style.background="#ffffff";
}

function addFormToFocusColor(formObj) {
	for(i=0; i<formObj.elements.length; i++) {
		if(formObj.elements[i].type != "hidden" && formObj.elements[i].type != "radio" && formObj.elements[i].type != "checkbox") {
			formObj.elements[i].onfocus=changeColor;
			formObj.elements[i].onblur=resetColor;
		}
	}
}

function checkAll(kampagne,formObj, newValue) {
        var name = "";
	for(i=0; i<formObj.elements.length; i++)
        {
            if(formObj.elements[i].type == "checkbox")
            {
                name = formObj.elements[i].name;
                if(name.indexOf(kampagne)>-1)
                {
                    formObj.elements[i].checked=newValue.checked;
                }
            }
        }
    }

function getScrollBarPosition(){
    var position;
if (navigator.appName == "Microsoft Internet Explorer")
    {
        position = document.body.scrollTop;
    }
else
    {
        position = window.pageYOffset;
    }
return position;
}


var scrollTo=-1;
function doScroll(pos)
{
    scrollTo = pos;
}
function getScrollTo()
{
    return scrollTo;
}


function setScrollBarPosition(){

if (navigator.appName == "Microsoft Internet Explorer")
    {
        document.body.scrollTop = Math.abs(getScrollTo());
    }
else
    {
        window.pageYOffset= getScrollTo();
    }
}

function getNiceDate(string_ddmmyyyy_hhmm)
{
    var all = string_ddmmyyyy_hhmm.slice(0,2);
    all+="-";
    all+= string_ddmmyyyy_hhmm.slice(2,4);
    all+="-";
    all+= string_ddmmyyyy_hhmm.slice(4,8);
    all+=" kl. ";
    all+= string_ddmmyyyy_hhmm.slice(9,11);
    all+=":";
    all+= string_ddmmyyyy_hhmm.slice(11,13);
    return all;
}

function closeWindow()
{
    if(window.event.keyCode == 13 || window.event.keyCode == 27) //"enter" og "esc"
        window.close();
}


function addDigitToDateField(val,lessThan)
{
        if(val<lessThan)
            return "0"+val;
        return val;
}

function next()
{
  document.data.cch_cmd.value="validate";
  document.data.submit();
}
function back_()
{
  document.data.cch_cmd.value="back";
  document.data.submit();
}

// ajax logoff
   function logout()
   {
    createRequest();
     var url = getRoot()+"/logoutservlet";

     request.open("GET", url, true);
     request.send(null);
   }

   function pingAlive(caller,time)
   {
    createRequest();
     var url = getRoot()+"/sessionservlet";
     request.open("GET", url, true);
     request.send(null);
     setTimeout(caller,time);
   }

function callMethod(id,action,params,fieldToSetValue) {
    createRequest();
    var p = "";
    for (i=0;i<params.length;i++)
    {
        p += "&p"+ i +"="+ params[i];
    }
    var url = getRoot()+"/ajaxservlet?d="+(new Date().valueOf())+"&id="+id+"&action="+action+p;

    request.onreadystatechange = function(){
        if(request.readyState == 4){
            if(fieldToSetValue!='' && fieldToSetValue!=null)
                fieldToSetValue.value=request.responseText;
        }


    }
    request.open("GET", url, true);
    // hvorfor er denne ikke sat til send(null);???
    request.send();

}
function callMethodSyncron(id,action,params,fieldToSetValue) {
    createRequest();
    var p = "";
    for (i=0;i<params.length;i++)
    {
        p += "&p"+ i +"="+ params[i];
    }
    var url = getRoot()+"/ajaxservlet?d="+(new Date().valueOf())+"&id="+id+"&action="+action+p;
    /*$.ajax({
        type: 'GET',
        url: "/ajaxservlet?d="+(new Date().valueOf())+"&id="+id+"&action="+action+p,
        success: function(data) {
            setTimeout(function() {
                fieldToSetValue.value=data;
			}, 2000 );
        },
        async: false
    });*/

    request.onreadystatechange = function(){
        if(request.readyState == 4){
            if(fieldToSetValue!='' && fieldToSetValue!=null)
                fieldToSetValue.value=request.responseText;
        }


    }
    request.open("GET", url, false);
    // hvorfor er denne ikke sat til send(null);???
    request.send();

}


function callMethodAcFieldUpdate(id,action,params,acFieldToSetValue) {
    createRequest();
    var p = "";
    for (i=0;i<params.length;i++)
    {
        p += "&p"+ i +"="+ params[i];
    }
    var url = getRoot()+"/ajaxservlet?d="+(new Date().valueOf())+"&id="+id+"&action="+action+p;

    request.onreadystatechange = function(){
        if(request.readyState == 4){
            if(acFieldToSetValue!=null && acFieldToSetValue!=''){
                // jsontxt
                var s=request.responseText;
                //var s = new Array(s);
                acFieldToSetValue.actb_keywords=s.split("€");
                }
        }
    }
    request.open("GET", url, true);
    // hvorfor er denne ikke sat til send(null);???
    request.send();
}
function callMethodWithCallBack(id,action,params,title,header,callBackFunction) {

    createRequest();
    var p = "";
    for (i=0;i<params.length;i++)
    {
        p += "&p"+ i +"="+ params[i];
    }

    var url = getRoot()+"/ajaxservlet?d="+(new Date().valueOf())+"&id="+id+"&action="+action+p;
    request.onreadystatechange = function(){
        if(request.readyState == 4){
            if(callBackFunction!='' && callBackFunction!=null)
                callBackFunction(title,header,request.responseText);
        }
    }

    request.open("GET", url, true);
    //request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
    request.send(null);
}

/*
Anvendes til normal alert validering (dvs. i main layout)
*/
function alertCallback(title,header,value){
if(value!=null && value!='' && value!='OK'){
        showStaticTextPopup(title,header,value,true);
    }
}

/*
Anvendes til alert validering i en popup (andet niveau)
*/
function alertCallback_second_level_popup(title,header,value){
if(value!=null && value!='' && value!='OK'){
        alertDialog(false,'<br><b>'+title+'</b><br><br>'+value,null,true,header,450,200,'Ok','');
    }
}


function createRequest() {
  try {
    request = new XMLHttpRequest();
  } catch (trymicrosoft) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (othermicrosoft) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) {
        request = false;
      }
    }
  }
}
/**
* TEST: status på request
*/
   function updatePage()
   {
     if (request.readyState == 4)
       if (request.status == 200)
       {
         alert("Server is done!");
         }
       else if (request.status == 404)
         alert("Request URL does not exist");
       else
         alert("Error: status code is " + request.status);
   }
/**
* henter req root
* OBSOLETE - skyldtes jdeveloper skulle have context - i.e. /lsf
*/
    function getRoot(){
        var root = location.protocol + '//' + location.host;

//        var ctx = location.pathname;
//        if(ctx.indexOf("/lsf",0) > -1) {
//            root += '/lsf';
//         }
        return root;
    }


function inArray(array, val){
  var i = array.length;
  while (i--) {
    if (array[i] === val) {
      return true;
    }
  }
  return false;
}
function disableField(field, disable){
        field.disabled = disable;
	if(disable){
	field.style.backgroundColor = disabledColor;
	}
	else{
		field.style.backgroundColor = enabledColor;
	}

}


function showHelp(id,error) {
    var field = $('#'+id);
    if(field != null && field!='undefined') {
        if(error) {
            field.removeClass('helpbox').addClass('errorbox');
        }
        field.fadeTo('400', 0.9) ;
    }
    return true;
}

function hideHelp(id,error) {
    var field = $('#'+id);
    if(field != null && field!='undefined' ) {
        if(!error) {
            field.hide();
            field.removeClass('errorbox').addClass('helpbox');
        }
    }
     return true;
}

function capitalizeMe(obj) {
        val = obj.value;
        newVal += val.substring(0,1).toUpperCase() + val.substring(1,val.length);
        obj.value = newVal;
}

function showId(id) {
    if (document.getElementById) {
        document.getElementById(id).style.display = 'block';
    }
}

function hideId(id) {
    if (document.getElementById) {
        document.getElementById(id).style.display = 'none';
    }
}

function toggle(obj,link) {
	var el = document.getElementById(obj);
	el.style.display = (el.style.display != 'none' ? 'none' : '' );

        var link = document.getElementById(link);
	if(el.style.display != 'none') {
            link.innerHTML = "Skjul";
        } else {
            link.innerHTML = "Vis";
        }
}
/**
* samme som findPartial, men metoden returnere ikke og stopper derfor ikke bubble
*/
function findPartialTry(array_,val,field){
    findPartial(array_,val,field);
    return;
}
/*
* hvis bare en del af feltets værdi er i et list element, skal pågældende element sættes aktivt
* hvis hit, skal felteets value opdateres
*/
function findPartial(array_,field){

    var val= field.value.toUpperCase();
    val=$.trim(val);
    if(val==''){
        field.value='';
        return true;// defineret som ok hvis det trimmes og er tomt, sennere validering vil så afgøre om det må være tomt
    }
    if(!findUpper(array_,val,field)){
        var tmpVal = "";
        var tmpOpt = "";
        for(var i=0;i<array_.length;i++){
            tmpVal = val.toUpperCase();
            tmpOpt = array_[i].toUpperCase();
            //if(val==array_[i].toUpperCase()){
            if(tmpOpt.indexOf(tmpVal)>-1){
                field.value=array_[i];
                return true;
            }
        }
    }
    else{
        return true;
    }
    return   false;

}


/*
chekker om værdien i et actb felt findes i liste med trim og upper case
*/
function findUpper(array_,val,field){
    val= val.toUpperCase();
    val=$.trim(val);
    if(val==''){
        field.value='';
        return true;// defineret som ok hvis det trimmes og er tomt, sennere validering vil så afgøre om det må være tomt
    }

    for(var i=0;i<array_.length;i++){
        if(val==array_[i].toUpperCase()){
            field.value=array_[i];
            return true;
        }
    }
    return false;
}

function editContent(fileName){
    var params = new Array();
    params[0] = fileName ;
   callMethod("MISC","cm",params);
}


/*JQUERY controls */

function buildAc(id,height,maxElems,match,autoF,matchCon,data){
    var f = $("#"+id);
    var w=0;
    try{
        w = f.attr("class")==='autocomp'?f.width()+20:f.outerWidth()-2;
    }
    catch(err){}
    if(w<30){// normalt 20 når IE 6 og 7 brilliere
        //w = 165; // default friggin' IE7 kan ikke så meget
        w = 265; // default friggin' IE7 kan ikke så meget
    }

    f.autocomplete(data, {
            minChars: 0,
            max: maxElems,
            autoFill: autoF,
            mustMatch: match,
            matchContains: matchCon,
            scrollHeight: height,
            //width: 265 //Sætter bredden på resultat listen (div'en)
            width : w
        });
}


function acPopupAlert(id,title,header,helpText,arrayOfValues){
    var val=$("#"+id).val();
    if(val!=null && val!=''){
        if(!findLowerJQ(arrayOfValues,id)){
            showHelp('help_'+id,true);
            showStaticTextPopup(title,header,helpText,'true');
            //return true;
        }
        hideHelp('help_'+id,false);
    }
    else{
        hideHelp('help_'+id,false);
        //return true;// defineret som ok hvis det trimmes og er tomt, sennere validering vil så afgøre om det må være tomt
//        showHelp('help_'+id,true);
//        showStaticTextPopup(title,header,helpText,'true');
    }
}
function acPopupOther(id,title,toPid,jsp,arrayOfValues){

    var val=$("#"+id).val();
    if(val!=null && val!=''){
        if(!findLowerJQ(arrayOfValues,id)){
            showHelp('help_'+id,true);
            otherPopup(id,title,toPid,$("#"+id).val(),jsp);
          //  return;
        }
        hideHelp('help_'+id,false);
    }
    else{
        hideHelp('help_'+id,false);
        //return true;// defineret som ok hvis det trimmes og er tomt, sennere validering vil så afgøre om det må være tomt
//        showHelp('help_'+id,true);
//        otherPopup(id,title,toPid,$("#"+id).val(),jsp);
    }
}

function findLowerJQ(array_,id){
    var val= $("#"+id).val().toLowerCase();
    val=$.trim(val);
    if(val==''){
        return true;
    }
    var hit=false;
    var firstHit = "";
    var t="";
    // hele loekken skal koeres igennem hvis der ikke er et exact match
    for(var i=0;i<array_.length;i++){
        t = array_[i].toLowerCase();
        if(t.indexOf(val)>-1){
            if(t===val){
             // complete hit, do return
                $("#"+id).val(array_[i]); // saetter rigtig lower/uppercase
                return true;
            }
            if(!hit){
                hit=true;
                firstHit=array_[i];
            }
        }
    }
    // der er minimum et match
    if(hit){
        $("#"+id).val(firstHit);
        return true;

    }
    return false;
}

/**
 * basicProgressValue is the progress on load from server, for all other screens but this
 */
function initProgressbar(initValueFromServer) {
    var prog = $("#progressbar");
    prog.data("initValue",initValueFromServer);
    prog.data("lastValueFields",-1);// performance
}

function invokeProgressbar(valueFields) {
    var prog = $("#progressbar");
    if( prog.data("lastValueFields") != valueFields) {
        var newPct = ((100/17) * valueFields) + prog.data("initValue");
        if(newPct > 100) {
           newPct = 100;
        }
       prog.progressbar({
           value: newPct
       });
       $("#progresstxt").html(Math.round(newPct) + "% færdig");
       prog.data("lastValueFields", valueFields);
    }
}

function completeCounter(){
    var valueFields = 0; //Antal felter der er udfyldt
    $(".complete-counter").bind("blur",function() {
        valueFields = 0;
        $(".complete-counter").each(function(inx,item){
            if( (item.type === 'checkbox' && item.checked) ||
                (item.type != 'checkbox' && item.value != '') ){
               valueFields++;
           }
        });
        invokeProgressbar(valueFields);
    });
// run once always on init
    $(".complete-counter:first").trigger("blur");
}


function prevAClick(div){
    location.href=$(div).prevAll("a").attr("href");
}


/**
 * util til at tilføje standard currency og percent felter
 *
 * @param outfocusSymbol valid any tag or ' %'
 */


function addAutoNumericFields(outfocusSymbol) {
    var percent = outfocusSymbol === ' %';
    var options = {
            aNeg: '',/* allowed negative sign / character */
            aSep: '.',/* allowed thousand separator character */
            aDec: ',',/* allowed decimal separator character */
            aSign: '',/* allowed currency symbol */
            pSign: 's',/* placement of currency sign prefix or suffix */
            vMax: percent?'100.00':'999999999.00',
            /*vMin: '0.00', default*/
            mDec: percent?2:0,/* max number of decimal places */
            mRound: 'S',/* method used for rounding */
            outfocusSymbol: outfocusSymbol/* symbol used when field don't have focus, it's removed on focus */
    }
    var clazz = '.autoformat-number';
    if(percent) {
        clazz='.autoformat-percent';
    }
    $(clazz).bind("post_focusin",function() {
        //this.value = $(this).autoNumericGet(); // removes any initial formatting
        if(this.value === '0') {
            this.value = '';
        }
    }).bind("post_focusout",function() {
        if(this.value === '' || this.value === '0') {
            this.value = '';
            return;
        }
        this.value += options.outfocusSymbol;
    }).autoNumeric(options);
}
