function fParseFloat(c)
{
	if(! c)
		return 0.0;
	var f = parseFloat(c, 10);
	if(isNaN(f))
		return 0.0;
	return f;
}


function fInList(tcList, tcVal)
{
	var llInList = false;
	
	if(tcList == "" && tcVal == "")
		return true;
	
	var taList = tcList.split(',');
	for(var i=0; i<taList.length; i++)
	{
		if(tcVal == taList[i])
		{
			llInList = true;
			break;
		}
	}

	return llInList;
}


function fIsTabEnabled(toTab)
{
	var llEnabled = false;

	var lcTmpID = toTab.getAttribute('id');
	if(lcTmpID == null)
		lcTmpID = "____error_";
		
	//var lcPageID = toTab.id.substr(3);
	var lcPageID = lcTmpID.substr(3);
	
	var loPage = document.getElementById('page'+lcPageID);
	if(loPage == null)
		return false;
	
	var loItem;
	for(var i=0; i<loPage.childNodes.length; i++)
	{
		loItem = loPage.childNodes.item(i);
		if(loItem.tagName == null)
			continue;
		if(loItem.tagName.toLowerCase() != 'fieldset')
			continue;
		if(loItem.className.substr(0,11) != 'divQuestion')
			continue;
		
		if(loItem.className != 'divQuestionGrey')
		{
			llEnabled = true;
			break;
		}
	}
	return llEnabled;
}


function fShowPage(tcID)
{
	var loPTC = document.getElementById('pagetabcontainer');
	
	var loTabs = loPTC.childNodes;
	if(loTabs == null)
		return false;
	if(loTabs.length < 1)
		return false;
	
	var loTab;
	for(var i=0; i<loTabs.length; i++)
	{
		loTab = loTabs.item(i);
		
		if(loTab.tagName == null)
			continue;
		if(loTab.id.substr(0,3) != "tab")
			continue;
			
		if(fIsTabEnabled(loTab))
		{
			if(loTab.id == 'tab'+tcID)
				loTab.className = 'pagetabSel';
			else
				loTab.className = 'pagetab';
		}
		else
		{
//alert(loTab.id);
			if(loTab.id == 'tab'+tcID)
				loTab.className = 'pagetabGreySel';
			else
				loTab.className = 'pagetabGrey';
		}
	}
	
  
	var loPC = document.getElementById('pagecontainer');
	
	var loPages = loPC.childNodes;
	if(loPages == null)
		return false;
	if(loPages.length < 1)
		return false;
		
	var loPage;
	for(var i=0; i<loPages.length; i++)
	{
		loPage = loPages.item(i);
		
		if(loPage.tagName == null)
			continue;
		if(loPage.tagName.toLowerCase() != 'div')
			continue;
			
		if(loPage.id == 'page'+tcID)
			loPage.style.display = 'block';
		else
			loPage.style.display = 'none';
	}
	  
	return true;
}


function fGetInputValue(tcID)
{
	//var loQuestion = loRoot.selectSingleNode("//vraag[@id='"+tcID+"']");
	var loQuestion = $(oQuestions).find("vraag[id='"+tcID+"']");
	if(loQuestion == null)
		return "";
	
	//var loType = loQuestion.selectSingleNode("type");
	var loType = $(loQuestion).children("type");
	if(loType == null)
		return "";

	var lcHtmlVal = "";
//alert(tcID + " : " + loType.text())
	switch(loType.text())
	{
		case "check":
			var loHtmlQ = document.getElementById('inp_'+tcID);
			if(loHtmlQ == null)
				return "";
			lcHtmlVal = loHtmlQ.checked ? 'on' : 'off';
			break;
		
		case "text":
			var loHtmlQ = document.getElementById('inp_'+tcID);
			if(loHtmlQ == null)
				return "";
			lcHtmlVal = loHtmlQ.value == "" ? 'filled' : 'empty';
			break;

		case "select":
			var loHtmlQ = document.getElementById('inp_'+tcID);
			if(loHtmlQ == null)
				return "";
			lcHtmlVal = loHtmlQ.options[loHtmlQ.selectedIndex].value;
			break;

		case "radio":
			//var loOptions = loQuestion.selectNodes("choices/choice");
			var loOptions = $(loQuestion).find("choices > choice");
			for(var i=0; i<loOptions.length; i++)
			{
				//var loHtmlQ = document.getElementById('inp_' + tcID + "_" +loOptions.item(i).getAttribute("value"));
				var loHtmlQ = document.getElementById('inp_' + tcID + "_" +$(loOptions[i]).attr("value"));
				if(loHtmlQ != null)
				{
					if(loHtmlQ.checked)
					{
						lcHtmlVal = loHtmlQ.value;
						break;
					}
				}
			}
			break;
	}
	
	return lcHtmlVal;
}


function fCheckDeps(toQuestion)
{
	var llDepOK = true;
	
	var loDep;
	var lcDepID, lcDepVal, lcDepReqVals;
	
	//var loDeps = toQuestion.selectNodes('depends/depend');
	var loDeps = $(toQuestion).find('depends > depend');
	for(var j=0; j<loDeps.length; j++)
	{
		loDep = loDeps[j];	//loDeps.item(j);
//alert(loDep.xml);
		lcDepID = $(loDep).attr('refid');		//loDep.getAttribute('refid');
		lcDepVal = fGetInputValue(lcDepID);
		lcDepReqVals = $(loDep).text();		//loDep.text;
//alert(lcDepID+': '+lcDepReqVals +'=?='+ lcDepVal );
	  
		if(!fInList(lcDepReqVals,lcDepVal))
		{
			llDepOK = false;
			break;
		}
	}

	return llDepOK;
}


function fEnableInput(tcID,tlEnable)
{
	//var loQuestion = loRoot.selectSingleNode("//vraag[@id='"+tcID+"']");
	var loQuestion = $(oQuestions).find("vraag[id='"+tcID+"']");
	if(loQuestion == null)
		return "";
	
	//var loType = loQuestion.selectSingleNode("type");
	var loType = $(loQuestion).children("type");
	if(loType == null)
		return "";

	//switch(loType.text)
	switch(loType.text())
	{
		case "check":
			var loHtmlQ = document.getElementById('inp_'+tcID);
			if(loHtmlQ == null)
				return "";
			loHtmlQ.disabled = ! tlEnable;
			break;
		
		case "text":
			var loHtmlQ = document.getElementById('inp_'+tcID);
			if(loHtmlQ == null)
				return "";
			loHtmlQ.disabled = ! tlEnable;
			break;

		case "select":
			var loHtmlQ = document.getElementById('inp_'+tcID);
			if(loHtmlQ == null)
				return "";
			loHtmlQ.disabled = ! tlEnable;
			break;

		case "radio":
			//var loOptions = loQuestion.selectNodes("choices/choice");
			var loOptions = $(loQuestion).find("choices > choice");
			for(var i=0; i<loOptions.length; i++)
			{
				//var loHtmlQ = document.getElementById('inp_' + tcID + "_" +loOptions.item(i).getAttribute("value"));
				var loHtmlQ = document.getElementById('inp_' + tcID + "_" +$(loOptions[i]).attr("value"));
				if(loHtmlQ != null)
				{
					loHtmlQ.disabled = ! tlEnable
				}
			}
			break;
	}

	return true;
}


function fRecalcDepends(tcID)
{
	var loQuestion;
	var lcQID;
	var loDivQ;
	var llIsSub;
	
	//var loDepQs = loRoot.selectNodes('//vraag[depends/depend/@refid="'+tcID+'"]');
	var loDepQs = $(oQuestions).find('vraag > depends > depend[refid="'+tcID+'"]').closest('vraag');
	for(var i=0; i<loDepQs.length; i++)
	{
		//loQuestion = loDepQs.item(i);
		loQuestion = loDepQs[i];
//alert(loQuestion.xml);
//alert(loQuestion);
		
		//lcQID = loQuestion.getAttribute('id');
		lcQID = $(loQuestion).attr('id');
		loDivQ = document.getElementById('div_'+lcQID);
//alert('tcID = '+tcID);
//alert(loQuestion);
//alert(lcQID);

		//llIsSub = loQuestion.parentNode.tagName == 'vraag';
		llIsSub = $(loQuestion).parent().get(0).tagName == 'vraag';
//alert($(loQuestion).parent().get(0).tagName);

		if(llIsSub)
		{
			loDivQ.style.display = fCheckDeps(loQuestion) ? 'block' : 'none';
		}
		else
		{
			if(fCheckDeps(loQuestion))
			{
				loDivQ.className = 'divQuestion';
//alert('enabling..');
				fEnableInput(lcQID,true);
			}
			else
			{
				loDivQ.className = 'divQuestionGrey';
//alert('disabling.. ' + lcQID);
				fEnableInput(lcQID,false);
			}
		}
	}

	return true;
}


function fSetPrice(tcID)
{
//alert(tcID);
	//var lcType = fGetNodeValue(loQuestions,'//vraag[@id="'+tcID+'"]/type');
	var loQuestion = $(oQuestions).find('vraag[id="'+tcID+'"]');
	
	var lcType = $(loQuestion).children('type').text();
	
	if(lcType == "select")
	{
		var loPricePlace = document.getElementById('prc_'+tcID);
		if(loPricePlace == null)
			return false;
		var loInput = document.getElementById('inp_'+tcID);
		
		//loPricePlace.innerHTML = fGetNodeValue(loQuestions,'//vraag[@id="'+tcID+'"]/choices/choice[.="'+loInput.value+'"]/@price');
		var loChoices = $(loQuestion).find('vraag[id="'+tcID+'"] > choices > choice');
		var loChoice;
		for(var c=0; c<loChoices.length; c++)
		{
			loChoice = loChoices[c];
			if($(loChoice).text() == loInput.value)
			{
				loPricePlace.innerHTML = $(loChoice).attr('price');
				break;
			}
		}
	}
}


function fRecalcPrices(tcID)
{
	var liTotalAmount, liPrice;
	var liTotalSubscription, liSubscription, liMinSubscription;
	var loQuestion;
	var lcQID, lcQType, lcInpVal, lcMS;
	
	//var liBasePrice = fParseFloat(fGetNodeValue(loRoot,'/vragen/@baseprice'));
	var liBasePrice = fParseFloat($(oQuestions).find('vragen:first').attr('baseprice'));
//alert('liBasePrice = '+$(oQuestions).find('vragen[baseprice]'));
//alert('liBasePrice = '+$(oQuestions).find('vragen').attr('baseprice'));
	liTotalAmount = liBasePrice;
	
	//var liBaseSubscription = fParseFloat(fGetNodeValue(loRoot,'/vragen/@basesubscription'));
	var liBaseSubscription = fParseFloat($(oQuestions).find('vragen:first').attr('basesubscription'));
	liTotalSubscription = liBaseSubscription;

	//var liMinSubscription = fParseFloat(fGetNodeValue(loRoot,'/vragen/@minsubscription'));
	var liMinSubscription = fParseFloat($(oQuestions).find('vragen:first').attr('minsubscription'));
	
//alert("BaseSub="+liBaseSubscription+", MinSub="+liMinSubscription+", sub="+liTotalSubscription);

	//var loQs = loRoot.selectNodes('//vraag');
	var loQs = $(oQuestions).find('vraag');
	for(var i=0; i<loQs.length; i++)
	{
		loQuestion = loQs[i];	//loQs.item(i);
		liPrice = "";
		liSubscription = "";
		
		if(fCheckDeps(loQuestion))
		{
			//lcQID = fGetNodeValue(loQuestion,'@id');
			//lcQType = fGetNodeValue(loQuestion,'type');
			lcQID = $(loQuestion).attr('id');
			lcQType = $(loQuestion).children('type').text();
			
//alert('lcQID = '+lcQID);
//alert('lcQType = '+lcQType);
			
			switch(lcQType)
			{
				case "check":
					if(fGetInputValue(lcQID) == 'on')
					{
						//liPrice = fGetNodeValue(loQuestion,'price');
						//liSubscription = fGetNodeValue(loQuestion,'subscriptionprice');
						liPrice = $(loQuestion).children('price').text();
						liSubscription = $(loQuestion).children('subscriptionprice').text();
//alert("1: BaseSub="+liBaseSubscription+", MinSub="+liMinSubscription+", sub="+liTotalSubscription);	
					}
					break;
					
				case "select":
					lcInpVal = fGetInputValue(lcQID);
					//liPrice = fGetNodeValue(loQuestion,'choices/choice[.="'+lcInpVal+'"]/@price');
					//liSubscription = fGetNodeValue(loQuestion,'choices/choice[.="'+lcInpVal+'"]/@subscriptionprice');
					
					var loChoices = $(loQuestion).find('choices > choice');
					var loChoice;
					lcMS = "";
					for(var c=0; c<loChoices.length; c++)
					{
						loChoice = loChoices[c];
						if($(loChoice).text() == lcInpVal)
						{
							liPrice = $(loChoice).attr('price');
							liSubscription = $(loChoice).attr('subscriptionprice');
							lcMS = $(loChoice).attr('minsubscriptionprice');
//if(lcMS){
//alert('lcMS = '+lcMS);
//alert($(loQuestion).children('pricetype').text());
//}
							break;
						}
					}
					//if(fGetNodeValue(loQuestion,'pricetype') == 'base')
					if($(loQuestion).children('pricetype').text() == 'base')
					{
						liBasePrice += fParseFloat(liPrice);
						//lcMS = fGetNodeValue(loQuestion,'choices/choice[.="'+lcInpVal+'"]/@subscriptionprice');
						if(fParseFloat(lcMS) > 0)
						{
							liMinSubscription = fParseFloat(lcMS);
//alert("2: BaseSub="+liBaseSubscription+", MinSub="+liMinSubscription+", sub="+liTotalSubscription);	
						}
					}
					break;

				case "radio":
					lcInpVal = fGetInputValue(lcQID);
//alert('lcInpVal = '+lcInpVal);
					//liPrice = fGetNodeValue(loQuestion,'choices/choice[@value="'+lcInpVal+'"]/@price');
					//liSubscription = fGetNodeValue(loQuestion,'choices/choice[@value="'+lcInpVal+'"]/@subscriptionprice');
					liPrice = $(loQuestion).find('choices > choice[value="'+lcInpVal+'"]').attr('price');
					liSubscription = $(loQuestion).find('choices > choice[value="'+lcInpVal+'"]').attr('subscriptionprice');
//alert('liPrice = '+liPrice);
//alert('liSubscription = '+liSubscription);
					//if(fGetNodeValue(loQuestion,'pricetype') == 'base')
					if($(loQuestion).children('pricetype').text() == 'base')
					{
						liBasePrice += fParseFloat(liPrice);
						//lcMS = fGetNodeValue(loQuestion,'choices/choice[@value="'+lcInpVal+'"]/@minsubscriptionprice');
						lcMS = $(loQuestion).find('choices > choice[value="'+lcInpVal+'"]').attr('minsubscriptionprice');
//if(lcMS){
//alert('lcMS = '+lcMS);
//alert($(loQuestion).children('pricetype').text());
//}
						if(fParseFloat(lcMS) > 0)
						{
							liMinSubscription = fParseFloat(lcMS);
//alert("3: lcQID = "+lcQID+", BaseSub="+liBaseSubscription+", MinSub="+liMinSubscription+", sub="+liTotalSubscription);	
						}
					}
					break;
			}
		}
		
		if(! liPrice)
			liPrice = "";
		if(! liSubscription)
			liSubscription = "";

		if(liPrice != "")
		{
			liPrice = fParseFloat(liPrice);
			liTotalAmount += liPrice;
		}
		
		if(liSubscription != "")
		{
//alert("4: tcID = "+tcID+"; BaseSub="+liBaseSubscription+", MinSub="+liMinSubscription+", sub="+liSubscription + ", total="+liTotalSubscription);	
			liSubscription = fParseFloat(liSubscription);
			liTotalSubscription += liSubscription;
		}
	}
		
	if(!isNaN(liMinSubscription))
	{
//alert('liMinSubscription = '+liMinSubscription);
		if(liTotalSubscription < liMinSubscription)
			liTotalSubscription = liMinSubscription;
	}
			
			
	// eenmalige kosten hidden fields

	var loInpBasePrice = document.getElementById("inp_BasePrice");
	if(loInpBasePrice != null)
		loInpBasePrice.value = liBasePrice;
	
	var loInpTotalAmount = document.getElementById("inp_TotalAmount");
	if(loInpTotalAmount != null)
		loInpTotalAmount.value = liTotalAmount;
		

	// abonnement hidden fields

	var loInpBaseSubscription = document.getElementById("inp_BaseSubscription");
	if(loInpBaseSubscription != null)
		loInpBaseSubscription.value = liBaseSubscription;
	
	var loInpTotalSubscription = document.getElementById("inp_TotalSubscription");
	if(loInpTotalSubscription != null)
		loInpTotalSubscription.value = liTotalSubscription;
	
	
	// Pas teksten op scherm aan
	
	var loTotalAmount = document.getElementById("PriceTag");
	loTotalAmount.innerHTML = String(liTotalAmount)+',-';
		
	var loTotalSubscription = document.getElementById("Subscription");
	loTotalSubscription.innerHTML = String(liTotalSubscription)+',-';
		
//alert('liBasePrice = '+liBasePrice+'; liTotalAmount = '+liTotalAmount);
//alert('liMinSubscription = '+liMinSubscription+'; liBaseSubscription = '+liBaseSubscription+'; liTotalSubscription = '+liTotalSubscription);
}


function fRefreshTabs()
{
	var loPTC = document.getElementById('pagetabcontainer');
	if(loPTC == null)
		return false;
		
	var loTab, loTabs;
	var lcPageID;
	
	loTabs = loPTC.childNodes;
	for(var i=0; i<loTabs.length; i++)
	{
		loTab = loTabs.item(i);
		//if(loTab.id.substr(0,3) != 'tab')
		//	continue;
		if(loTab.nodeType != 1)
			continue;
		lcPageID = loTab.getAttribute('id');
		if(lcPageID == null)
			lcPageID = "";
		if(lcPageID.substr(0,3) != 'tab')
			continue;
		if(fIsTabEnabled(loTab))
		{
			if(loTab.className != 'pagetabSel')
			{
				loTab.className = 'pagetab';
			}
		}
		else
		{
			loTab.className = 'pagetabGrey';
		}
	}
}


function fRecalcAll(tcID)
{
	fRecalcDepends(tcID);
	fSetPrice(tcID);
	fRecalcPrices(tcID);
	fRefreshTabs();
}


function submitform(oField)
{
	oAction = oField.form.txtAction;
	if(oAction != null)
	{
		oAction.value = oField.name;
		oField.form.submit();
	}
}

