var _DocumentService = "/server/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>Om verder te gaan moet dit veld ingevuld worden.</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(_DocumentService, "GetPolisvoorwaarden", pl, true, LoadProductVoorwaardenResp);
}

function LoadProductVoorwaardenSbi(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(_DocumentService, "GetPolisvoorwaardenSbi", pl, true, LoadProductVoorwaardenResp);
}

function LoadProductVoorwaardenResp(r)
{
    if (!r || r.length == 0)
    {
        var msg = "Er zijn geen polisvoorwaarden gekoppeld aan dit product.";
        if (typeof(geenpolisvoorwaardenmsg) == "string") msg = geenpolisvoorwaardenmsg;
        var width = "";
        if (typeof(geenpolisvoorwaardenmsgwidth) == "string") width = geenpolisvoorwaardenmsgwidth;
        ShowPopupDiv("Polisvoorwaarden", msg, width);
    }
    /*else if (r.length == 1)
    {
        // meteen tonen
        window.open("/polisvoorwaarden/"+r[0].Maatschappij+"/" + r[0].Name + ".pdf");
    }*/
    else
    {
        // popup met opties tonen
        var s = "<ul class=\"polisvoorwaardenlijst\">";
        for(var i=0; i < r.length; i++)
        {
            s += "<li><a href=\"/polisvoorwaarden/"+r[i].Maatschappij+"/"+r[i].Name+".pdf\" 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("Oeps, onbekende fout...");
        return;
    }
    
    var o = document.getElementById(r.FieldName);
    if (r.Result == ValidationResult.Error) 
    {
        alert("Ongeldige invoer");
        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);
            }
        }
    }
}