var bLoadedInDiv = false;
var oRequest = false;
var yPosTi = 150;
var sTiJaarSelect;
var sAanroeper;
var sStatusButtonBereken;

bIntegratie = true;	// false in TI zelf >> voorkomt tonen van "divTiBG"

// wordt als argument gebruikt >> mocht start-locatie rekenhulp afwijken, dan kan argument in aanroep functie worden aangepast.
var sURL = "../TIfunctionaliteit/index.html";
var sDivToetsingsinkomen = "divToetsingsinkomen";

function StartInkomenApplicatie(sTiURL,sInp, sJaar, sVanWelkeModule,sPersoon) {
	sWie = sPersoon;
	sTiJaarSelect = sJaar;
	sURL = sTiURL + "?newdata=" + new Date().getTime(); // voorkom dat tijdens testen TI-functionaliteit uit de cache wordt getoond
	sAanroeper = sVanWelkeModule;	
	if(sInp != sInpToetsingsinkomen) {
		// Ander TI (bv. partner) dus alles opnieuw uitrekenen
		bLoadedInDiv = false;
	}
	sInpToetsingsinkomen = sInp;
	sStatusButtonBereken = document.getElementById("but_bereken").disabled;
	// Reeds geïmporteerd?
	if(bLoadedInDiv) {
		ToonInkomenApplicatie(sInp);
	} else {
		ImportToetsingsInkomenApplicatie(sInp);
	}
}

function vulText(){
	if ( sWie != undefined) {
		if (sWie == "partner") {
			var sText = "uw partner";
		} else if (sWie == "medebewoner") {
			var sText = "uw medebewoner";
		} else {
			var sText = "u";
		}

		var arrElements = getElementsByClassName(document, "span", "clWie"); 
		
		for (var i = 0; i < arrElements.length; i++) {
			arrElements[i].innerHTML = sText;
		}
	}
}


function initTI(){
	bLoadedInDiv = false;
}

function ImportToetsingsInkomenApplicatie(sInp) {
	oRequest = false;
	//Mozilla
	if(window.XMLHttpRequest) {
		try {oRequest = new window.XMLHttpRequest()}
		catch(e) {oRequest = false}
	}
	// IE
	else if(window.ActiveXObject) {
		try {oRequest = new ActiveXObject("Msxml2.XMLHTTP")}
		catch(e) {
			try {oRequest = new ActiveXObject("Microsoft.XMLHTTP")}
			catch(e) {oRequest = false}
		}
	} else {oRequest = false};

	if(oRequest) {
		// mdb: 16-03-2011
//		removeClass(document.getElementById("waiting-"+sInp), "invisible");
		// function nodig om argumenten mee te kunnen geven.
		oRequest.onreadystatechange = function() {CheckLoaded(sInp);};
		oRequest.open("GET",sURL,true);
		oRequest.setRequestHeader("Content-Type","text/plain; charset=utf-8");	// "text/xml"
		oRequest.send(null);
	} else {
		// Error: geen httpRequest object
	}
}

function CheckLoaded(sInp) {
//alert("div_"+sInp)
//document.getElementById("test").innerHTML = "div_"+sInp + ": " + document.getElementById("div_"+sInp);
	var sHTML1;
	var sHTML2;
//	sInp = "toetsingsinkomen_medebewoner5";
	if(oRequest.readyState == 4) {
		if(oRequest.status == 200) {
			document.getElementById("TiTemp").innerHTML = oRequest.responseText;
			// Div rechtstreeks vullen vanuit temp-div (niet via strings). Max-length string in IE = 32KB
//			document.getElementById(sDivToetsingsinkomen).innerHTML = document.getElementById("TiTemp").innerHTML.substring(document.getElementById("TiTemp").innerHTML.indexOf("<!-- Start import1 -->"),document.getElementById("TiTemp").innerHTML.indexOf("<!-- Einde import2 -->")-1);
//			document.getElementById(sDivToetsingsinkomen).innerHTML = "<form id=\"frmBerekening\" action=\"#\" method=\"post\" onsubmit=\"return false\">" + document.getElementById("TiTemp").innerHTML.substring(document.getElementById("TiTemp").innerHTML.indexOf("<!-- Start import1 -->"),document.getElementById("TiTemp").innerHTML.indexOf("<!-- Einde import1 -->")-1) + "</form>";
//			document.getElementById("div_"+sInp).innerHTML = "<form id=\"frmBerekening\" action=\"#\" method=\"post\" onsubmit=\"return false\">" + document.getElementById("TiTemp").innerHTML.substring(document.getElementById("TiTemp").innerHTML.indexOf("<!-- Start import1 -->"),document.getElementById("TiTemp").innerHTML.indexOf("<!-- Einde import1 -->")-1) + "</form>";

			WisInkomenApplicatie();

			document.getElementById("div_"+sInp).innerHTML = document.getElementById("TiTemp").innerHTML.substring(document.getElementById("TiTemp").innerHTML.indexOf("<!-- Start import1 -->"),document.getElementById("TiTemp").innerHTML.indexOf("<!-- Einde import1 -->")-1);
			document.getElementById("divHelpToetsingsinkomen").innerHTML = document.getElementById("TiTemp").innerHTML.substring(document.getElementById("TiTemp").innerHTML.indexOf("<!-- Start import2 -->"),document.getElementById("TiTemp").innerHTML.indexOf("<!-- Einde import2 -->")-1);
			document.getElementById("TiTemp").innerHTML = "";
			document.getElementById("butTiOke").innerHTML = "<input type=\"button\" value=\"Ok\" class=\"submit\" onClick=\"KopieerInkomen('" + sInp + "')\" />";
			toonTiVersie();
			ToonInkomenApplicatie(sInp);
		}
	}
}

function toonTiVersie(){
  var uri = new Object();
  uri = getURL(uri);
	if (uri.dom == 'file:' || uri.dom.substr(0,6) == "www-o." || uri.dom.substr(0,9) == "douane-o."|| uri.dom.substr(0,8) == "tslgn-o." || uri.dom.substr(0,9) == "la2006-o." || uri.dom.substr(0,6) == "www-t." || uri.dom.substr(0,9) == "douane-t."|| uri.dom.substr(0,8) == "tslgn-t." || uri.dom.substr(0,8) == "localhos") {
		try{document.getElementById("divTiVersie").style.display = 'block';} 
		catch(e){}
	}
}

var iProtect = 0;
//var sDivs = "";
function SetParentOpacity(sDivId, iOpacity) {
	iProtect++;
	sTiParentDivId = "#" + $(sDivId).parent().attr("id");
	// alle directe children m.u.v. sDivId
	$(sTiParentDivId + " > *").not(sDivId).fadeTo("fast",iOpacity);
	// ga door tot parent.id = divVragen (of 50x indien geen divVragen in broncode)
	if (sTiParentDivId != "#divVragen" && iProtect < 50) {
		SetParentOpacity(sTiParentDivId, iOpacity)
	}
	if ($.browser.msie) {
		/* IE: forceer legends naar 30% */
		$("#divVragen > fieldset > legend").fadeTo("fast",iOpacity);
		$("#divVragen > #fsMedebewoner > div.repeat-1-5 > fieldset > legend").fadeTo("fast",iOpacity);
		$("#divVragen > #fsKinderen > div.repeat-1-8 > fieldset > legend").fadeTo("fast",iOpacity);
	}
}

function ToonInkomenApplicatie(sInp) {
	// mdb: 16-03-2011
//	addClass(document.getElementById("waiting-"+sInp), "invisible");

	sStatusButtonBereken = document.getElementById("but_bereken").disabled;
	if (sTiJaarSelect != null && sTiJaarSelect != "" && checkJarenInModule(sTiJaarSelect, 'TiSelectJaar')== true) {
//		document.getElementById("frmBerekening").TiSelectJaar.value = sTiJaarSelect;
		document.getElementById("TiSelectJaar").value = sTiJaarSelect;
		document.getElementById('pTiJaarKeuze').style.display = 'none';
		doTiJaarKeuze(sTiJaarSelect); // tijdrovend
	}

	ShowOrHideTiLinks(false);
	
	// opacity 30%, behalve Toetsingsinkomen en parents(s) hiervan.	
	SetParentOpacity("#div_"+sInp, 0.3);

	// alles deactiveren (behalve TI-blok)
	$("#divVragen > fieldset input").attr('disabled',true);
	$("#divVragen > fieldset select").attr('disabled',true);
	$("#but_bereken").hide();
	$("#divVragen .ti input").attr('disabled',false);
	$("#divVragen .ti select").attr('disabled',false);

	toonDivs('','divHelp','','','','','');
	vulText();
	toonDivs("div_"+sInp,'div_','','','','','');
	bLoadedInDiv = true;

	algTiValidatie(); /* zorg dat Bereken-knop default disabled is */
}

function VerbergInkomenApplicatie() {
	$("#divContainer input").attr('disabled',false);
	$("#divContainer select").attr('disabled',false);
	$("#but_bereken").show();
	document.getElementById("but_bereken").disabled = sStatusButtonBereken;
	ShowOrHideTiLinks(true);
	SluitHelp();

	// opacity 100%, zichtbare Ti-div + bijbehorende parent(s)
	sZichtbareTiDiv = $(".ti:visible").attr("id");
	SetParentOpacity("#"+sZichtbareTiDiv, 1);

	// alle TI's verbergen
	toonDivs('','div_','','','','','');
	
	// 29-12-2010: radiobuttons aanpassen in IE8 (na terugzetten hebben ze een lelijke rand)
	$("input:radio:visible").css("background", "transparent");
}

function WisInkomenApplicatie() {
	$(".ti").html("");
}

function KopieerInkomen(sInp) {
	var sInkomen = iTiToetsingsinkomenReturn.toString();
	document.getElementById(sInp).value = sInkomen;
	$("#but_bereken").show();

	ShowOrHideTiLinks(true);
	$("#divContainer input").attr('disabled',false);
	$("#divContainer select").attr('disabled',false);
	$("#divContainer input.clInkomen").css("background-color","#ffffff");
//	ZetVeldDisabled(false, "#ffffff")
//	DisableInputs(false);
//	DisableSelects(false);

	// opacity 100%, zichtbare Ti-div + bijbehorende parent(s)
	sZichtbareTiDiv = $(".ti:visible").attr("id");
	SetParentOpacity("#"+sZichtbareTiDiv, 1);

	// eerst opacity (moet zichtbaar zijn), daarna div verbergen
	document.getElementById("div_"+sInp).style.display = "none";

	if (sAanroeper === 'toeslagen-generiek' ){
		updateForm();
	} else {
		algValidatie();
	}
}

var aDisabledSelects = new Array();
function DisableSelects(bSwitch) { // true = zet Selectvelden op disabled, false is zet Selectvelden op enabled
	var aSelects = document.getElementById("divContainer").getElementsByTagName("Select");	
	aDisabledSelects = disableFields (aSelects, bSwitch, aDisabledSelects);
}

var aDisabledInputs  = new Array();
function DisableInputs(bSwitch) { // true = zet inputvelden op disabled, false is zet inputvelden op enabled
	var aInputs = document.getElementById("divContainer").getElementsByTagName("input");	
	aDisabledInputs = disableFields (aInputs, bSwitch, aDisabledInputs);
}

function disableFields (aFields, bSwitch, aDisabledFields){
	var sDisabled = bSwitch ? "disabled" : "";
	var aTemp = new Array();
	for(var i=0; i<aFields.length; i++) {
		if (aFields[i].type != "hidden") {
			if (sDisabled != "") { // disable actie				
				if (aFields[i].disabled === 'disabled') { // als het Fieldveld al op disable is ingesteld de veldnaam bewaren.
					aTemp[aTemp.length] = aFields[i].id;
				} else {
					aFields[i].disabled = sDisabled;
				}
			} else { // enable actie
				var bFound = false;
				for (var j=0; j < aDisabledFields.length && bFound === false; j++){ // controleren of het Fieldveld al disabled was
					if (aDisabledFields[j].id === aFields[i].id) {
						bFound = true;
					}		
				}
				if (bFound === false){ // zo niet ... enable het Fieldveld
					aFields[i].disabled = sDisabled;
				}		
			}
		}
	}
	return aTemp;
}

function ShowOrHideTiLinks(bShow) {
	bVisible = bShow ? "visible" : "hidden";
	aTiLinks = document.getElementById("divContainer").getElementsByTagName("a");
	for(i=0; i<aTiLinks.length; i++) {
		if(aTiLinks[i].id.indexOf("BerekenTiLink") > -1 ) {
			aTiLinks[i].style.visibility = bVisible;
		}
	}
	aTiLinks = document.getElementById("divContainer").getElementsByTagName("span");
	for(i=0; i<aTiLinks.length; i++) {
		if(aTiLinks[i].id.indexOf("BerekenTiLink") > -1 ) {
			aTiLinks[i].style.visibility = bVisible;
		}
	}	
	
}

function GetScrollOffset() {
	xScroll = 0;
	yScroll = 0;
	topOffset = 75;	// om css-margin (8.5em) te corrigeren
	if(typeof(window.pageYOffset) == "number") {
		// Mozilla
		xScroll = window.pageXOffset;
		yScroll = window.pageYOffset;
	} else if(document.body.scrollLeft || document.body.scrollTop) {
		// W3-DOM
		xScroll = document.body.scrollLeft;
		yScroll = document.body.scrollTop;
	} else if(document.documentElement.scrollLeft || document.documentElement.scrollTop) {
		// IE6
		xScroll = document.documentElement.scrollLeft;
		yScroll = document.documentElement.scrollTop;
	}
	if(yScroll > 0) yScroll -= topOffset;	// Geen scrolling? Dan ook geen correctie!
	return [xScroll, yScroll];
}


