var HsWebsrvServer = "/server/";
var AfhandelingsWijze = -1;

function HsSetPpForms()
{
    hideField("hsFase2But");
    hideField("hsPrintButton");    
    
    var x = document.getElementById('hsForm');
    if (!x) return;
    var y = x.getElementsByTagName('input');
    for (var i=0;i<y.length;i++) {
    switch(y[i].type) {
        case "checkbox":
            y[i].onclick = function() { HsPpFieldCheck(this); };
            break;
        case "radio":
            y[i].onclick = function() { HsPpFieldCheck(this); };
            break;
        default:
            if(y[i].getAttribute("hsisselect")!="true")
            {
                y[i].onblur = function() { HsPpFieldCheck(this); };
            }
          }
    }
    
    var y = x.getElementsByTagName('select');    
    for (var i=0;i<y.length;i++) 
    {    
        y[i].onchange = function() { HsPpFieldCheck(this); };
        if(y[i].getAttribute("hshasinput")=="true") { hsInitAdvSelect(y[i].id) };
    }  
            
    var y = x.getElementsByTagName('textarea');   
    for (var i=0;i<y.length;i++) 
    {
        y[i].onblur = function() { HsPpFieldCheck(this); };
    }

    var y = x.getElementsByTagName('a');   
    for (var i=0;i<y.length;i++) 
    {
        if (y[i].className && (y[i].className=="hsHintanchorNoPr" || y[i].className=="hsHintanchor") && y[i].getAttribute("hshinttext"))
        {
            y[i].onmouseover = function(event) { showhint(this.getAttribute("hshinttext"), this, event, ''); };
        }
    }
    
    var y = x.getElementsByTagName('span');   
    for (var i=0;i<y.length;i++) 
    {
        if (y[i].className && y[i].className=="hsErrorBg")
        {
            y[i].style.display="none";
        }
    }    

    if (typeof(HsSetPpFormsExtra) != "undefined") HsSetPpFormsExtra();

    if(sesId)
    {
        var pl = new SOAPClientParameters();
        pl.add("sessionId", ""+sesId);
        pl.add("number", ""+ActvFormNumber);
        SOAPClient.invoke(HsWebsrvServer+GetWebService(), "GetFieldsFromSession", pl, true, HsPpFieldsFromSessionResp);
    }
        
    if (!loggedInCollectiviteit) 
    {
        showField('showPakketKorting');
        showField("showSumPrMin");
        showField("showSubtotaal");
    }
    else 
    {
        hideField('showPakketKorting');
        hideField("showSumPrMin");
        hideField("showSubtotaal");
    }
}

function HsPpFieldCheck(field)
{

    var pl = new SOAPClientParameters();
    // if (field.value)
    {
        if (sesId) pl.add("sessionId", ""+sesId);
        pl.add("number", ""+ActvFormNumber);
        
        if(field.type && field.type=="radio")
        {
            pl.add("fieldName", field.name);
        }
        else pl.add("fieldName", field.id);
        
        if(field.type && field.type=="checkbox")
        {
      		pl.add("fieldValue", (field.checked ? field.value : "0"));
        } 
        else 
        {
            pl.add("fieldValue", field.value);
        }

        pl.add("sendPremie", (ReadyForNewPremie() && AfhandelingsWijze!=0 ? "true" : "false"));
        SOAPClient.invoke(HsWebsrvServer + GetWebService(field.id), "CheckField", pl, true, HsPpFieldCheckResp);
    }
}
 
function HsPpFieldCheckResp(r)
{
    // als er een divje gekoppeld is dan deze laten reageren op het vinkje
    // eerst schakelen zodat r.ErrorField netjes focus kan zetten!
    var field = document.getElementById(r.FieldName);
    if(field && field.type && field.type=="checkbox")
    {
        var linkedIds = field.getAttribute("hsshowdiv");
        if (linkedIds)
        {
            linkedIds = linkedIds.split("|");
            var linkedId;
            for (var j=0; j<linkedIds.length; j++)
            {
                linkedId = linkedIds[j];
                if (field.checked) showField(linkedId);
                else hideField(linkedId);
            }
        }
        
        if (field.checked)
        {
            var o = field.getAttribute("hsfocusobject");
            if (o) setFocus(o);
        }
    }
    else if (field && field.tagName.toLowerCase()=="select")
    {
        UpdateLinkedFieldsForSelect(field);
    }
    else if (!field || (field && field.type && field.type=="radio")) // IE also search by name with getElementById -> GET A REAL BROWSER!
    {
        UpdateLinkedFieldsForRadioGroup(r.FieldName);
    }

    if (r.ErrorField)
    {
  		changeClassAddStr(r.ErrorField+"Lbl", "E");
  		if (r.ErrorFieldMessage) showFieldError(r.ErrorField+"E", "<p>"+r.ErrorFieldMessage+"</p>");  	
  		setFocus(r.ErrorField);
    }
    else
    {
        if (r.Result == 0)
        {
		    if (r.NewValue) document.getElementById(r.FieldName).value = r.NewValue;
  		    changeClassAddStr(r.FieldName+"Lbl", "E");
  		    showFieldError(r.FieldName+"E", "<p>"+r.ErrorMessage+"</p>");
      		setFocus(r.ErrorField);
        }
        else
        {
            if (fieldIsVisible(r.FieldName+"E"))
            {
                changeClassDelStr(r.FieldName+"Lbl", "E");
	            hideFieldError(r.FieldName+"E");            

	            // fout uitgeschakeld... nogmaals proberen te rekenen als huidige fout de enige resterende was...
                if (r.CalcPremieDisabled!=1 && ReadyForNewPremie())
                {
                    var pl = new SOAPClientParameters();
                    pl.add("sessionId", ""+sesId);
                    pl.add("number", ""+ActvFormNumber);
                    SOAPClient.invoke(HsWebsrvServer + GetWebService(null), "GetPremies", pl, true, HsPpGetPremiesResp);
                }
	        }
            
            // update de waarde van het veld eventueel
            if (r.Result == 1)
            {
                var o = document.getElementById(r.FieldName);
                if (o) o.value = r.NewValue;
            }
        }   
    }
    if (typeof(HsPpFieldCheckRespSpec) != "undefined") HsPpFieldCheckRespSpec(r);
    
    if (r.Premies)
    {
        if (r.Premies.CalcPremieDisabled != -1 && typeof(OfferteDivs) != "undefined")
        {
            ShowHideCalcPremieDisabled(r.Premies.CalcPremieDisabled==0);
            ShowHideField(FormOfferteDiv, r.Premies.CalcPremieDisabled==1);
        }
        if (r.Premies.CalcPremieDisabledReason) setInnerHtml(FormOfferteMeldingSpan, r.Premies.CalcPremieDisabledReason); 

        HsPpSetPremies(r.Premies);
    }
    else if (typeof(HsPpEmptyPremies) != "undefined") HsPpEmptyPremies();
}

function HsPpBaseFieldsFromSessionResp(r)
{
    //var o = document.getElementById("frm_omschrijving");
    //if (o) o.value = (r.Description ? r.Description : "");

    /*if (r.Description)
    {
        var o = document.getElementById("formtitle");
        var i = o.innerHTML.indexOf(" - ");
        if (i != -1) o.innerHTML = o.innerHTML.substr(0, i);
        o.innerHTML = o.innerHTML + " - " + r.Description;
    }    */

    var o = document.getElementById("frm_addproduct");
    if (o) o.innerHTML = (r.Status > 0 ? "Aanpassen in pakket" : "Toevoegen aan pakket");
    
    var o = document.getElementById("hsFase3Prev");
    if (o) o.style.display = (r.Status > 0 ? "none" : "");

    AfhandelingsWijze = r.AfhandelingsWijze;
    if (r.CalcPremieDisabled != -1 || r.AfhandelingsWijze == 0)
    {
        if (typeof(OfferteDivs) != "undefined")
        {
            ShowHideCalcPremieDisabled(r.CalcPremieDisabled==0);
            ShowHideField(FormOfferteDiv, r.CalcPremieDisabled==1);
        }
        if (r.CalcPremieDisabledReason) setInnerHtml(FormOfferteMeldingSpan, r.CalcPremieDisabledReason);
    }    

    if (r.CalcPremieDisabled!=1 && ReadyForNewPremie())
    {
        var pl = new SOAPClientParameters();
        pl.add("sessionId", ""+sesId);
        pl.add("number", ""+ActvFormNumber);
        SOAPClient.invoke(HsWebsrvServer + GetWebService(null), "GetPremies", pl, true, HsPpGetPremiesResp);
    }
    else if (typeof(HsPpEmptyPremies) != "undefined") HsPpEmptyPremies();
}

function HsPpGetPremiesResp(r)
{
    if (r) HsPpSetPremies(r);    
    else HsPpEmptyPremies();
}

function HsPpBaseSetPremies(premies)
{
    if (premies.ErrorMessage)
    {
        alert(premies.ErrorMessage);
        return false;
    }

    if (premies.CalcPremieDisabled != -1 && typeof(OfferteDivs) != "undefined")
    {
        ShowHideCalcPremieDisabled(premies.CalcPremieDisabled==0 && AfhandelingsWijze!=0);
        
        if (AfhandelingsWijze != 0)
        {
            ShowHideField(FormOfferteDiv, premies.CalcPremieDisabled==1);     
            if (premies.CalcPremieDisabledReason) setInnerHtml(FormOfferteMeldingSpan, premies.CalcPremieDisabledReason); 
            if (premies.CalcPremieDisabled == 1) return false;
        }
        else return false;
    }
    
    ShowHideField("showCollKorting", premies.Collectiviteitskorting>0.0);
    if (premies.Collectiviteitskorting>0.0)
    {        
        SetPremieField("hsCollKortingPrS", premies.Collectiviteitskorting);        
        var o = document.getElementById("hsCollKortingPr"); 
        if (o) o.innerHTML = (""+premies.CollectiviteitskortingPerc).replace(".", ",") + "%";
        
        o = document.getElementById("hsCollKorting");
        if (o) o.innerHTML = ""+collectiviteitsName;
    }
    
    SetPremieField("frm_kortingPrS", premies.Korting);
    
    SetPremieField("hsSubtotPrS", premies.Subtotaal);

    SetPremieField("hsPremieKortingPrS", premies.Pakketkorting);    
    var o = document.getElementById("hsPremieKortingPr"); 
    if (o) o.innerHTML = (""+premies.PakketkortingPerc).replace(".", ",") + "%";

    SetPremieField("hsPremieBrutPrS", premies.Bruto);

    SetPremieField("hsPremieAssurantiePrS", premies.Assurantiebelasting);
    SetPremieField("hsPremieTotPrS", premies.Totaal);
    
    return true;
}

function HsPpBaseEmptyPremies()
{
    SetPremieField("frm_kortingPrS", 0, false);

    SetPremieField("hsSubtotPrS", 0, false);

    var o = document.getElementById("hsPremieKortingPr");
    if (o) o.innerHTML = "0%";
    SetPremieField("hsPremieKortingPrS", 0, false);    
    
    SetPremieField("hsPremieBrutPrS", 0, false);
    SetPremieField("hsPremieAssurantiePrS", 0, false);
    SetPremieField("hsPremieTotPrS", 0, false);
}

function HideFormDiv()
{
    ToggleActiveDiv(PakketDiv);
}

function VoegToeAanPakket()
{
    if (ReadyForSave())
    {
        var pl = new SOAPClientParameters();
        pl.add("sessionId", ""+sesId);
        pl.add("number", ""+ActvFormNumber);
        SOAPClient.invoke(HsWebsrvServer + GetWebService(null), "VoegToeAanPakket", pl, true, VoegToeAanPakketResp);
    }
}

function VoegToeAanPakketResp()
{
    ToggleActiveDiv(PakketDiv);
}

function DoUpdatePremies()
{
    if (AfhandelingsWijze == 0) return;
    
    var pl = new SOAPClientParameters();
    pl.add("sessionId", ""+sesId);
    pl.add("number", ""+ActvFormNumber);
    SOAPClient.invoke(HsWebsrvServer + GetWebService(null), "GetPremies", pl, true, HsPpGetPremiesResp);
}
