var _DocumentService = "HsDocumentService.asmx";

function checkFieldValid(fieldName, allowNul, fasenr) 
{
    var o = document.getElementById(fieldName);
    var selectOK = true;
    if(o)
    {
        if(o.type=="select-one")
        {
            if(!o.value && !allowNul) selectOK=false;
        }
        else if(o.type=="radio")
        {
            var rg = document.getElementsByName(o.name);
            if(rg) 
            {
                selectOK = false;
                fieldName = o.name;
                for (var i=0; !selectOK && i<rg.length; i++)
                {
                    if (rg[i].checked) selectOK = true;                          
                }
            }
        }        
        else if(o.type=="checkbox")
        {
            if(!getValueFromCheckbox(document.getElementById(fieldName))) selectOK = false;
        }

        if(o.value && selectOK)
        {
            var p = document.getElementById(fieldName+"E");
            if(p)
            {
                if(p.style.display == "none")
                {
                    return true;
                }
                else return false;
            } 
            else 
            {
                return true;
            }
        }
        //else if (!o.value) return false;
    }
    //if(fasenr)hsGoToFase(fasenr);
    setFieldInValid(fieldName);
    return false;
}

function QuickCheckField(id)
{
    var o = document.getElementById(id);
    if (!o || !o.value) return false;
    if (o.type=="text")
    {
        // geen 0 (nul) getypt?!
        if (o.value == "0") return false;
    }
    
    var p = document.getElementById(id+"E"); 
    if (p)
    {
        if(p.style.display == "none")
        {
            return true;
        }
        else return false;
    }
    
    return true;
}

function setFieldInValid(fieldName) 
{
    changeClassAddStr(fieldName+"Lbl", "E");
    showFieldError(fieldName+"E", "<p>"+Language.HSFormUtils_FieldInvalid_Text+"</p>");
    setFocus(fieldName);
}

function SetPremieField(fieldName, premie, clearIfNul) 
{
    var o = document.getElementById(fieldName);
    if(o) 
    {
        if(!isNaN(premie))
        {
            if(premie!=0 || !clearIfNul)
            {
                o.innerHTML = "<span class=\"hsESign\">&euro;</span><span class=\"hsEMon\">"+fmtMoney(premie)+"</span>"
            } 
            else 
            {
                o.innerHTML = "";
            }
        } 
        else 
        {
            if(clearIfNul) o.innerHTML = "";
        }
    }
}

function ShowHideCalcPremieDisabled(show)
{
    for (var i = 0; i < OfferteDivs.length; i++)
    {
        ShowHideField(OfferteDivs[i], show); 
    }
}

function ShowHideField(field, show)
{
    if (show) showField(field);
    else hideField(field);
}


var popupdiv;
function ShowPopupDiv(title, content, width, noAutoHide)
{
    if (!popupdiv)
    {
        popupdiv = document.createElement("div");       
        document.body.appendChild(popupdiv);
        popupdiv.style.position = "absolute"; 
        if (width) popupdiv.style.width = width;
        popupdiv.className = "popupdiv";
        popupdiv.style.zIndex = 100;
    }
    
    if (!noAutoHide)
    {
        popupdiv.onmouseover = function() 
        {   
            this.onblur = function(){}; 
            document.body.onclick = function()
            {
                document.body.onclick = function(){};
                HidePopupDiv();
            };
            //this.onmouseout = function() { this.style.display="none"; }
        };
    }
    else
    {
        popupdiv.onmouseover = function() { };
    }    
    
    if (!noAutoHide)
    {
        popupdiv.onblur = function() { this.style.display="none"; };
    }
    else
    {
        popupdiv.onblur = function() { };
    }
    
    if(content) 
    {
        popupdiv.innerHTML = "<div class=\"popupdivclosebtn\" onclick=\"HidePopupDiv();\" title=\"Scherm sluiten\"></div><h3>" + title + "</h3>" + content;
    }
    
    popupdiv.style.display = "block";   
    popupdiv.style.left = ((document.body.offsetWidth - popupdiv.offsetWidth) / 2) + "px";
    
    var oh = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight;
    oh = ((oh - popupdiv.offsetHeight) / 2);
    oh += (window.scrollY ? window.scrollY : document.documentElement.scrollTop);
    if (oh < 0) oh = 0;
    popupdiv.style.top = oh + "px";
    popupdiv.focus();
}

function HidePopupDiv()
{
    if (popupdiv)
    {
        popupdiv.style.display="none";
    }
}

function LoadProductVoorwaarden(mijCode, productId, variant)
{
    if (!variant)
    {
        variant = "";
    }
    
    // polisvoorwaarden opsnorren
    var pl = new SOAPClientParameters();
    pl.add("verzekeraar", mijCode);
    pl.add("product", productId);
    pl.add("variant", variant);
    SOAPClient.invoke(hsWebsrvServer + _DocumentService, "GetPolisvoorwaarden", pl, true, LoadProductVoorwaardenResp);
}

function LoadProductVoorwaardenSbi(mijCode, productId, variant)
{
    // Doorlussen naar de standaard methode
    LoadProductVoorwaarden(mijCode, productId, variant);

    /*
    if (!variant)
    {
        variant = "";
    }
    
    // polisvoorwaarden opsnorren
    var pl = new SOAPClientParameters();
    pl.add("sessionId", ""+sesId);
    pl.add("verzekeraar", mijCode);
    pl.add("product", productId);
    pl.add("variant", variant);
    SOAPClient.invoke(hsWebsrvServer + _DocumentService, "GetPolisvoorwaardenSbi", pl, true, LoadProductVoorwaardenResp);
    /**/
}

function LoadProductVoorwaardenResp(r)
{
    if (!r || r.length == 0)
    {
        var msg = Language.GeenPolisVoorwaardenGekoppeldAanProduct;
        if (typeof(geenpolisvoorwaardenmsg) == "string") msg = geenpolisvoorwaardenmsg;
        var width = "";
        if (typeof(geenpolisvoorwaardenmsgwidth) == "string") width = geenpolisvoorwaardenmsgwidth;
        ShowPopupDiv("Polisvoorwaarden", msg, width);
    }
    else
    {
        // popup met opties tonen
        var s = "<ul class=\"polisvoorwaardenlijst\">";
        for(var i=0; i < r.length; i++)
        {
            s += "<li><a href=\"" + BaseSiteUrl + "HsPdfDocumentForm.aspx?mijcode=" + escape(r[i].Maatschappij || "") + "&doc=" + escape(r[i].Name) + "\" target=\"_blank\" onclick=\"HidePopupDiv()\">" + r[i].Description + "</a></li>";
        }
        s += "</ul>";

        ShowPopupDiv("Polisvoorwaarden", s);
    }
}

// *********************************************
// Popup handling
// *********************************************

var CurrentPopup = null;

function ShowPopup(id, postCloseCall)
{
    ClosePopup();
    
    var popup = document.getElementById(id);
    if (!popup)
    {
        return;
    }
    
    CurrentPopup = popup;
    CurrentPopup.PostCloseCall = postCloseCall ? postCloseCall : null;
    
    popup.style.position = "absolute";
    popup.style.display = "block";   
    popup.style.zIndex = 100;
    popup.style.left = ((document.body.offsetWidth - popup.offsetWidth) / 2) + "px";
    
    var oh = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight;
    // var oh = document.body.offsetHeight;
    oh = ((oh - popup.offsetHeight) / 2);
    oh += (window.scrollY ? window.scrollY : document.documentElement.scrollTop)
    if (oh < 0) oh = 0;
    popup.style.top = oh + "px";
}

function ClosePopup()
{
    if (CurrentPopup) 
    {
        CurrentPopup.style.display = "none";
        
        if (CurrentPopup.PostCloseCall)
        {
            var call = CurrentPopup.PostCloseCall;
            CurrentPopup.PostCloseCall = null;
            
            call();
        }
        
        CurrentPopup = null;
    }
}

// *********************************************
// Field validation
// *********************************************

function OnFieldCheck(field, type)
{
    if (!field.value) return;
    
    var value = field.value;
    if(field.type && field.type=="text" && value.replace)
    {
        // trim
        value = value.replace(/^\s+/,'');
        value = value.replace(/\s+$/,'');
          
        if (value != field.value)
        {
            field.value = value;
        }
    }
    
    var pl = new SOAPClientParameters();
    pl.add("fieldName", ""+field.id);
    pl.add("fieldValue", ""+value);
    pl.add("fieldType", ""+type);
    SOAPClient.invoke(hsWebsrvServer + srvGeneralForm, "AdvisorCheckField", pl, true, OnFieldCheckResp);
}

function OnFieldCheckResp(r)
{
    if (!r)
    {
        alert(Language.FormUtils_OnFieldCheck_NoResult);
        return;
    }
    
    var o = document.getElementById(r.FieldName);
    if (r.Result == ValidationResult.Error) 
    {
        alert(Language.FormUtils_OnFieldCheck_OngeldigeInvoer);
        o.value = "";
        o.focus();
    }
    else if (r.Result == ValidationResult.Altered) 
    {
        o.value = r.NewValue;
    }
    
    if (r.Result > ValidationResult.Error)
    {
        // hspostfieldcheck uitvoeren
        var f = o.getAttribute("hspostfieldcheck");
        if (f) 
        {
            if (typeof(f) == "function")
            {
                f();
            }
            else
            {
                eval(f);
            }
        }
    }
}
