/*
 * Functies voor de pakketpagina
 */
var PakketService = "/server/PpPakketService.asmx";
var UserService = "/server/PpUserService.asmx";

var UwGegevensDiv = "hsuwgegevensdiv";
var PakketDiv = "hspakketdiv";
var FormDataDiv = "hsformdatadiv";
var FormDiv = "hsformdiv";
var FormOfferteDiv = "hsformoffertediv";
var FormOfferteMeldingSpan = "hsoffertemelding";
var ProductInfoDiv = "hsproductinfodiv";
var FormDataScript = "hsformdatascript";
var AfsluitFormMijCode = "0000";

var ActivePage = "";
var ActivePremiePer = 12;

var ActvFormMijCode = ""; // maatschappijcode van het laatst geladen formulier
var ActvFormProduct = ""; // productid van het laatst geladen formulier
var ActvFormNumber = 0;   // actieve volgnummer verzekering

function InitPakketPagina()
{
    if (!document.getElementById("pakketoverzicht")) return;
    
    var o = document.getElementById("frm_premieper");
    if (o)
    {
        o.onchange = function() { OnChangePremiePer(this); };
    }
    
    document.body.onbeforeunload= function() { WannaExitPagina(event); };
    
    // info teksten koppelen
    var y = document.getElementsByTagName('a');   
    for (var i=0;i<y.length;i++) 
    {
        if (y[i].getAttribute("hshinttext"))
        {
            y[i].onmouseover = function(event) { showhint(this.getAttribute("hshinttext"), this, event, ''); };
        }
    }

    var mijcode = GetQuerystringValue("m");
    var prod = GetQuerystringValue("p");
    if (mijcode && prod)
    {
        LoadCalcFormData(mijcode, prod, 0);
        HsGetPakketInfo();
    }
    else ToggleActiveDiv(PakketDiv);

    // fortis collectiviteit heeft geen korting, ook niet tonen dus
    if (loggedInCollectiviteit) hideField("kortingstabel");
    else showField("kortingstabel");
}

function WannaExitPagina(e)
{
    if (!e) e = window.event;

    // firefox: clientY bestaat niet maar ff komt hier alleen als je echt van de pagina afgaat (of refreshed)...
    // IE: clientY < 0
    if (typeof(e.clientY)=="undefined" || e.clientY < 0)
    {
        e.returnValue = "U verlaat de pakketpagina! Gebruik de navigatie in het pakketoverzicht om te navigeren op de pakketpagina. \n\nWilt u de pakketpagina echt verlaten?";
    }
}

function LoadProductInfoResp(r) 
{
	var o = document.getElementById(ProductInfoDiv);
	if (o && r) o.innerHTML  = r;

    ToggleActiveDiv(ProductInfoDiv);
}

function ToggleActiveDiv(divToShow)
{
    var updatePakketGegevens = false; // geforceerd pakketgegevens updaten
    if (ActivePage == UwGegevensDiv) { if (!HsValidateUwGegevens()) return; }
    else if (ActivePage == FormDataDiv && ActvFormMijCode==AfsluitFormMijCode) updatePakketGegevens = true;
    
    ShowHideField(PakketDiv, divToShow == PakketDiv);
    ShowHideField(ProductInfoDiv, divToShow == ProductInfoDiv);
    hideField(FormOfferteDiv);
    ShowHideField(FormDiv, divToShow == FormDataDiv);
    ShowHideField(UwGegevensDiv, divToShow == UwGegevensDiv); 

    ShowHideField("liGegGeg", divToShow == UwGegevensDiv);
    ShowHideField("liPakketGeg", divToShow != UwGegevensDiv);
    ShowHideField("liPakketPakket", divToShow == PakketDiv);
    ShowHideField("liPakketReken", divToShow != PakketDiv);
    ShowHideField("liRekenReken", divToShow == FormDataDiv && ActvFormMijCode!=AfsluitFormMijCode);
    ShowHideField("liInfoInfo", divToShow == ProductInfoDiv);
    ShowHideField("liPakketAfsluit", divToShow != FormDataDiv || ActvFormMijCode!=AfsluitFormMijCode);
    ShowHideField("liAfsluitAfsluit", divToShow == FormDataDiv && ActvFormMijCode==AfsluitFormMijCode);           
    
    // 'premie per' disabled op de afsluitpagina
    var o = document.getElementById("frm_premieper");
    if (o) o.disabled = (divToShow == FormDataDiv && ActvFormMijCode==AfsluitFormMijCode);
    
    ActivePage = divToShow;
    // bij terugkomst op de pakketpagina de info ff updaten...
    if (divToShow == PakketDiv) updatePakketGegevens = true; //HsGetPakketInfo();
    else if (divToShow == UwGegevensDiv) HsGetUwGegevens();
    else if (divToShow == FormDataDiv && ActvFormMijCode==AfsluitFormMijCode) 
    {
        /*update gegevens*/
        updatePakketGegevens = true;
    }
    if (updatePakketGegevens) HsGetPakketInfo();
}

function HsGetPakketInfo()
{  
    var pl = new SOAPClientParameters();
    pl.add("sessionId", ""+sesId);
    pl.add("premiePer", ""+ActivePremiePer);
    SOAPClient.invoke(PakketService, "GetPakketInfo", pl, true, HsGetPakketInfoResp);
}

function CreateHtmlForPpProduct(item)
{
    if (ActivePage == FormDataDiv && ActvFormMijCode==AfsluitFormMijCode)
    {
        // tijdens afsluit pagina kunnen geen verzekeringen worden verwijdered...
        return "<tr><td class=\"verzDescCol\"><a href=\"javascript:void(0);\" onclick=\"LoadCalcFormData('"+item.MijCode+"', '"+item.Product+"', "+item.Number+");\">"+(item.Description?item.Description:item.Omschrijving)+"</a></td><td>"+(item.PremieDisabled==1?"":"&euro;")+"</td><td><span class=\"po_premie\">"+(item.PremieDisabled==1?"<a href=\"javascript: void(0);\" class=\"hsHintanchor\" hshinttext=\"<p><strong>Premie op aanvraag</strong><br>Voor de door u ingestelde opties voor deze verzekering is het helaas niet mogelijk om een premie te berekenen.</p>\" onmouseover=\"showhint(this.getAttribute('hshinttext'), this, event, '');\">Aanvraag</a>":fmtMoney(item.Premie))+"</span></td><td><img src=\"images/dustbin.gif\" style=\"visibility: hidden;\" /></td></tr>";
    }
    else
    {
        return "<tr><td class=\"verzDescCol\"><a href=\"javascript:void(0);\" onclick=\"LoadCalcFormData('"+item.MijCode+"', '"+item.Product+"', "+item.Number+");\">"+(item.Description?item.Description:item.Omschrijving)+"</a></td><td>"+(item.PremieDisabled==1?"":"&euro;")+"</td><td><span class=\"po_premie\">"+(item.PremieDisabled==1?"<a href=\"javascript: void(0);\" class=\"hsHintanchor\" hshinttext=\"<p><strong>Premie op aanvraag</strong><br>Voor de door u ingestelde opties voor deze verzekering is het helaas niet mogelijk om een premie te berekenen.</p>\" onmouseover=\"showhint(this.getAttribute('hshinttext'), this, event, '');\">Aanvraag</a>":fmtMoney(item.Premie))+"</span></td><td><img src=\"images/dustbin.gif\" alt=\"Verwijderen\" onclick=\"VerwijderUitPakket('"+item.MijCode+"', '"+item.Product+"', "+item.Number+");\"/></td></tr>";
    }
}

function CreateHtmlForPpCategory(items)
{
    var html = "";
    var prevtype = "";
    for (var i = 0; i < items.length; i++)    
    {
        /*if (prevtype != items[i].Product)
        {
            html += "<tr><td colSpan=\"4\" class=\"verzLeftCol\">"+items[i].Omschrijving+"</td></tr>";
            prevtype = items[i].Product;
        }/**/
        html += CreateHtmlForPpProduct(items[i]);
    }   
    return html;
}

function HsGetPakketInfoResp(r)
{

    if (r) 
    {
        var html;
        // VERZEKERINGENLIJST VULLEN

        // OVERZICHTJE VULLEN
        // lijstje van afgesloten producten genereren
        if (r.Products.length==0)
        {
            html = "<p class=\"emptypakketinfo\">U heeft nog geen (nieuwe) verzekeringen toegevoegd aan uw pakket. Klik op een nevenstaand product om een premie te berekenen en deze toe te voegen aan het pakket.</p>";           
        }
        else
        {
            html = "<table>";     
            html += CreateHtmlForPpCategory(r.Products);  
            html += "</table>";
            
            ToggleVerzekeringen(r.Products);
        }
        var o = document.getElementById("pakketsamenstelling");
        o.innerHTML = html;
        
        // totale premie updaten
        var o = document.getElementById("pakketpremie");
        o.innerHTML = fmtMoney(r.TotalePremie);        
        
        // korting updaten       
        var o = document.getElementById("pakketkortingval");
        o.innerHTML = fmtMoney(r.TotaleKorting);                 
        var disp = (r.Korting != 0 ? "block" : "none");
        document.getElementById("pakketkortingvalh1").style.display = disp;
        document.getElementById("leftStaaf").style.display = disp;
        document.getElementById("centerStaaf").style.display = disp;
        document.getElementById("rightStaaf").style.display = disp;        
        document.getElementById("centerStaaf").style.width = Math.round((typeof(PpPakketPercentageFactor)=="undefined" ? 14 : PpPakketPercentageFactor())*r.Korting) + "px";
        document.getElementById("percentageStaaf").innerHTML = (r.Korting + " %").replace(".", ",");
    }
}

function MultipleAllowed(productId)
{
    return productId == 2034 || productId == 2024;
}

function ToggleVerzekeringen(items)
{
    var o;
    for (var i = 0; i < items.length; i++)
    {
        if (!MultipleAllowed(items[i].Product))
        {
            o = document.getElementById("verz" + items[i].Product);
            if (o)
            {
                o.onclick = null;
                o.className = "product_disabled";
                //o.setAttribute("hshinttext", "Deze verzekering heeft u reeds in uw pakket opgenomen.");
                //o.onmouseover = function(event) { showhint(this.getAttribute("hshinttext"), this, event, ''); }
            }
        }
    }   
}

function LoadCalcFormData(mijCode, productId, number)
{
    if (ActvFormMijCode != mijCode || ActvFormProduct != productId || number==0) 
    {
	    // load the content and script of the assurance
        var pl = new SOAPClientParameters();
        pl.add("mijCode", mijCode);
        pl.add("productId", productId);
        pl.add("number", (number?""+number:"0"));
        pl.add("sessionId", ""+sesId);
	    SOAPClient.invoke(PakketService, "GetCalcFormData", pl, true, LoadCalcFormDataResp);
	    
        ActvFormMijCode = mijCode;
        ActvFormProduct = productId;
    }
    else 
    {
        ActvFormNumber = number;
        
        var pl = new SOAPClientParameters();
        pl.add("sessionId", ""+sesId);
        pl.add("number", ""+ActvFormNumber);
        SOAPClient.invoke(HsWebsrvServer+GetWebService(), "GetFieldsFromSession", pl, true, HsPpFieldsFromSessionResp);
        
        ToggleActiveDiv(FormDataDiv);
    }
}

var scriptLoaded = false;
var scriptElem = null;

function LoadCalcFormDataResp(r)
{
	if (!r) 
	{
	    // volgende keer weer proberen...
	    ActvFormMijCode = "";
	    ActvFormProduct = "";
	    ActvFormNumber = 1;
	    ToggleActiveDiv(PakketDiv);
	    return;
	}

    ActvFormNumber = r.ActiveNumber;

    // script invoegen in de pagina
    var head = document.getElementsByTagName("head")[0];
    if (scriptElem) head.removeChild(scriptElem);
    if (r.script)
    {
        scriptElem = document.createElement("script");   
	    scriptElem.type = "text/javascript";	
		var s = "";
		for (var i=0; i<r.script.length; i++) s += r.script[i];
		s += " scriptLoaded=true;";
	    scriptElem.text = s;
		scriptLoaded = false;
        head.appendChild(scriptElem);
    }
    else scriptElem = null;
	
    // HTML invoegen in de pagina
	var o = document.getElementById(FormDataDiv);
	if (r.htmlcode)
	{
		var s = "";
		for (var i=0; i<r.htmlcode.length; i++) s += r.htmlcode[i];
		o.innerHTML  = s;
		
		//TryToSetPpForms();
		HsSetPpForms(); // init de nieuwe velden
	}
	else o.innerHTML = "";
	
    UpdatePremiePerText();
    
    ToggleActiveDiv(FormDataDiv);
}
/*
function TryToSetPpForms()
{
	if (!scriptLoaded) setTimeout("TryToSetPpForms()", 100);
	else HsSetPpForms();
}
*/
function LoadProductInfo(mijCode, productId)
{
    var pl = new SOAPClientParameters();
    pl.add("mijCode", mijCode);
    pl.add("productId", productId);
    SOAPClient.invoke(PakketService, "GetProductInfo", pl, true, LoadProductInfoResp);   
}

function LoadProductInfoResp(r) 
{
	var o = document.getElementById(ProductInfoDiv);
	if (o && r) 
	{
	    o.innerHTML  = r;

	    var x = o.getElementsByTagName("a");
	    var link;
	    for (var i = 0; i < x.length; i++)
	    {
	        link = x[i].getAttribute("hspakketpaginalink");
	        if (link)
	        {
	            x[i].href = "javascript: " + link;
	        }
	        else if (x[i].href.indexOf("javascript:") == -1)
	        {
	            x[i].href = "javascript: void(0);";
	            x[i].outerHTML = x[i].innerHTML;
	        }
	    }
	    
	    // for IE
	    var x = o.getElementsByTagName("A");
	    var link;
	    for (var i = 0; i < x.length; i++)
	    {
	        link = x[i].getAttribute("hspakketpaginalink");
	        if (link)
	        {
	            x[i].href = "javascript: " + link;
	        }
	        else if (x[i].href.indexOf("javascript:") == -1)
	        {
	            x[i].href = "javascript: void(0);";
	            x[i].outerHTML = x[i].innerHTML;
	        }
	    }
	}

    ToggleActiveDiv(ProductInfoDiv);
}

function VerwijderUitPakket(mijCode, productId, number)
{
    var pl = new SOAPClientParameters();
    pl.add("sessionId", ""+sesId);
    pl.add("number", ""+number);
    pl.add("mijCode", mijCode);
    pl.add("productId", productId);
    SOAPClient.invoke(PakketService, "VerwijderUitPakket", pl, true, VerwijderUitPakketResp);
    
    if (!MultipleAllowed(productId))
    {
        var o = document.getElementById("verz" + productId);
        if (o)
        {
            o.removeAttribute("hshinttext");
            o.className = "leftLinkA";
            o.onmouseover = null;
            o.onclick = function () { LoadCalcFormData(mijCode, productId, 0); }            
        }
    }
}

function VerwijderUitPakketResp(r)
{
    // update
    HsGetPakketInfo();
}

function ShowAfsluitPagina()
{
    // laden html en javascript
    LoadCalcFormData(AfsluitFormMijCode, "0", "0");
}

function UpdatePremiePerText()
{
    var t = "jaar";
    if (ActivePremiePer == 12) t = "maand";
    else if (ActivePremiePer == 4) t = "kwartaal";
    else if (ActivePremiePer == 2) t = "half jaar";
    
    var o = document.getElementById("premieper_pakketsamenoverzicht");
    if (o) o.innerHTML = t;
    var o = document.getElementById("premieper_formulier");
    if (o) o.innerHTML = t;
    var o = document.getElementById("premieper_formulier2");
    if (o) o.innerHTML = t;
}

function OnChangePremiePer(field)
{  
    ActivePremiePer = field.value; 
    UpdatePremiePerText();
       
    HsGetPakketInfo();
    
    if (ActivePage == FormDataDiv && ActvFormMijCode!=AfsluitFormMijCode)
    {
        if (ReadyForNewPremie())
        {
            DoUpdatePremies();
        }
    }
}

///////////////////////////////////////////////////////////////////
/////   USER HANDLING
///////////////////////////////////////////////////////////////////

function LoginUser()
{
    var username = document.getElementById("username").value;
    var password = document.getElementById("password").value;

    var pl = new SOAPClientParameters();
    pl.add("sessionId", ""+sesId);
    pl.add("username", ""+username);
    pl.add("password", ""+password);
    SOAPClient.invoke(UserService, "LoginUser", pl, true, LoginUserResp);
}

function LoginUserResp(r)
{
    if (r.Success)
    {
        var mijnpaginaurl = document.getElementById("mijnpaginaurl").value;
        document.location = mijnpaginaurl;
    }    
}

function GetPolisOverzicht()
{
    var pl = new SOAPClientParameters();
    pl.add("sessionId", ""+sesId);
    SOAPClient.invoke(UserService, "GetPolisOverzicht", pl, true, GetPolisOverzichtResp);
}

function GetPolisOverzichtResp(r)
{
    if (!r) return;
    
    var html = "<table>";
    
    html += "<tr class=\"tablehead\">";
    html += "<td>Polisnummer</td>";
    html += "<td>Omschrijving</td>";
    html += "<td>Ingangsdatum</td>";
    html += "</tr>";

    var poli = r.Polissen, p;
    for (var i = 0; i < poli.length; i++)
    {
        p = poli[i];
        
        html += "<tr>";
        html += "<td><a href=\"javascript: void(0)\" onclick=\"GetPolisDetails('" + p.PolisID + "');\">" + p.PolisNumber + "</a></td>";
        html += "<td>" + p.Description + "</td>";
        html += "<td>" + p.Date + "</td>";
        html += "</tr>";
    }
    html += "</table>";
       
    document.getElementById("polisoverzicht").innerHTML = html;

    ToggleMijnPaginaDiv("polisoverzicht");
}

function GetPolisDetails(polisId)
{
    var pl = new SOAPClientParameters();
    pl.add("sessionId", ""+sesId);
    pl.add("polisId", ""+polisId);
    SOAPClient.invoke(UserService, "GetPolisDetails", pl, true, GetPolisDetailsResp);
}

function GetPolisDetailsResp(r)
{
    if (!r) r = "";
    
    var detaildiv = document.getElementById("polisdetails");
    
    var s = "";
    for (var i = 0; i < r.length; i++)
    {
        s += r[i];
    }
    s += "<p><a href=\"javascript: void(0)\" onclick=\"ToggleMijnPaginaDiv('polisoverzicht')\">Terug naar overzicht</a></p>";

    detaildiv.innerHTML = s;
    
    ToggleMijnPaginaDiv("polisdetails");
}

function ToggleMijnPaginaDiv(toShow)
{
    document.getElementById("polisdetails").style.display = (toShow == "polisdetails" ? "block" : "none");
    document.getElementById("polisoverzicht").style.display = (toShow == "polisoverzicht" ? "block" : "none");
}
