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;
	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();
	} else {
		ImportToetsingsInkomenApplicatie();
	}

}

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() {
	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) {
		oRequest.onreadystatechange = CheckLoaded;
		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() {
	var sHTML1;
	var sHTML2;
	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("TiTemp").innerHTML = "";
			document.getElementById("butTiOke").innerHTML = "<input type=\"button\" value=\"Ok\" class=\"clButtons\" onClick=\"KopieerInkomen()\" />";
			toonTiVersie();
			ToonInkomenApplicatie();
		}
	}
}

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){}
	}
}

function ToonInkomenApplicatie() {
	sStatusButtonBereken = document.getElementById("but_bereken").disabled;
	if (sTiJaarSelect != null && sTiJaarSelect != "" && checkJarenInModule(sTiJaarSelect, 'TiSelectJaar')== true) {
		document.frmBerekening.TiSelectJaar.value = sTiJaarSelect;
		document.getElementById('fsTiJaarKeuze').style.display = 'none';
		doTiJaarKeuze(sTiJaarSelect);
	}
	// Set y-position of TI-div.
	document.getElementById(sDivToetsingsinkomen).style.position = "absolute";
	document.getElementById(sDivToetsingsinkomen).style.top = GetScrollOffset()[1].toString(10) + "px";
	ShowOrHideTiLinks(false);
	DisableInputs(true);
	DisableSelects(true);
	
	toonDivs('','divHelp','','','','','');
	vulText();

	document.getElementById(sDivToetsingsinkomen).style.display = "block";
	document.getElementById("divTiBG").style.display = "none";
	bLoadedInDiv = true;
}

function VerbergInkomenApplicatie() {
	DisableInputs(false);
	document.getElementById("but_bereken").disabled = sStatusButtonBereken;
	DisableSelects(false);
	ShowOrHideTiLinks(true);
	document.getElementById(sDivToetsingsinkomen).style.display = "none";
}

function KopieerInkomen() {
	var sInkomen = iTiToetsingsinkomenReturn.toString();
	document.getElementById(sInpToetsingsinkomen).value = sInkomen;
	document.getElementById(sDivToetsingsinkomen).style.display = "none";
	ShowOrHideTiLinks(true);
	DisableInputs(false);
	DisableSelects(false);
	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];
}

