/* 	functies voor viewscript formulier module */
var range;
var objField;
var objDigiDwindow;
var objTimer;
var helpWindow;
	
var	masks = new Array(
	/^[1-9]\d{3} ?[a-zA-Z]{2}$/,
	/^(\(?0[123457]\d{1}\)?[ -]\d{7})|(\(?0[123457]\d{2}\)?[ -]\d{6})|(\(?06\)?[ -]\d{8})|(\(?0[89]\d{1,2}\)?[ -]\d{4,7})$/,
	/^(([012]\d)|(3[01])|\d)[ -]((0?\d)|(1[012]))[ -](([12]\d{3})|(\d{2}))$/,
	/^([\w\.\-])+@([\w\-]{2,}\.)+(\w{2,4})$/,
	/^((http|https|ftp|file):\/\/)?(\w+:\w+@)?([\w\-]{2,}\.)+(\w{2,4})(:[0-9]+)?([\/\?#].+)*$/,
	/^\d*$/,
	/^( |\w)*$/,
	/^(\d{2}[\. ]?\d{2}[\. ]?\d{2,3}[\. ]?\d{3})|(P\d{1,7})$/,
	/^[A-Z]{2}\d{2} ?([A-Z0-9]{4} ?){2,6}[A-Z0-9]{1,4}$/,
	/^(860[1-8]|8626|8631|8633)[a-zA-Z]{2}$/);

//Test invoermasker voor opgegeven veld
function TestRegExp(field,id,type)

{	
//	var re = new RegExp(masks[type]);
	var re = masks[type];
	var result = false;

	if (field.value.match(re))
	{
		// alleen globale match gewenst
		result = (re.exec(field.value)[0] == field.value);
	}
	
	if (!result & field.value != "")
	{
		try
		{	// probeer veldlabel te achterhalen
			var fieldName = document.getElementById("label_" + id).innerHTML.replace(/ \*/g,"");
		}
		catch (err)
		{	// fallback: veldnaam
			var fieldName = field.name;
		}
		alert("Het veld '" + fieldName + "' is niet correct ingevuld.");
		
		try
		{	// probeer inhoud van veld te selecteren
			range = field.createTextRange();
    		range.moveEnd('character', 255);
    		range.moveStart('character', 0);
    		setTimeout("range.select()",100);
		}
		catch(err)
		{	// fallback: set cursor achteraan in veld
			objField = field;
			setTimeout("objField.focus();",100);
		}
	}
}

//Test of alle verplichte velden van een waarde zijn voorzien
function TestRequired()
{
	var field;
	var tagName;
	var fieldName;
	var found = false;
	var result = true;
	var conditionField = document.getElementById("conditionField");
		
	for (var i=0; i<TestRequired.arguments.length; i++)
	{
		field = document.getElementById("field_" + TestRequired.arguments[i]);
		fieldName = "";
		tagName = field.nodeName.toLowerCase();
		
		if (tagName == "input" || tagName == "textarea")
		{	// tekstveld, memoveld, passwordveld of radiobutton
			if (field.name == "radio")			// radio
			{	
				fieldName = field.value;		// veldnaam opgeslagen in hidden field
				//Rinse (28-06-06):
				//field = eval("field.form." + field.value);
				field = eval(document.getElementById(field.id).form);
									
				result = TestRadiogroup(field);		
			}
			else
			{
				result = (field.value != "");	// overig
			}
		}
		else if (tagName == "select")			// select list
		{				
			//Rinse (26-06-06): != -1 added
			result = (field.selectedIndex != -1 && field.selectedIndex != 0);
		}
				
		if (!result)							// melding geven
		{
			if (fieldName == "")
			{
				try
				{	// probeer veldlabel te achterhalen
					fieldName = document.getElementById("label_" + TestRequired.arguments[i]).innerHTML.replace(/ \*/g,"");
				}
				catch (err)
				{	// fallback: veldnaam
					fieldName = field.name;
				}
			}

			alert("Het veld '" + fieldName + "' is nog niet ingevuld.");
			
			if (field.focus) field.focus();
			break;
		}		
	}
		
	//if (result && conditionField)
	//{
	//	result = checkConditions(conditionField)
	//}
				
	return result;
}

//Test of er een keuze is gemaakt voor het opgegeven veld
function TestRadiogroup(field)
{
	var result = false;	
	
	for (var i=0; i<field.length; i++)
	{		
		result |= field[i].checked;
	}
	
	return result;
}

//Obsolete...
function Timer(strURL, lngObjectID)
{	
	if (strURL != null)
	{					
		objDigiDwindow = window.open(strURL, "DigiDwin", "fullscreen=0,menubar=1,toolbar=1,scrollbars=0,location=1,directories=0,status=1,resizable=1,width=700,height=600");
	}
	
	if (!objDigiDwindow.closed)
	{					
 		objTimer = setTimeout("Timer(null, " + lngObjectID + ")", 1000);
	}
	else
	{        			
   		clearTimeout(objTimer);
		document.getElementById("form_" + lngObjectID).submit();				
	}			
}	

//Checks clipboard for trackingcode
function checkClipBoard(code)
{			
	var pressedKey 
	var clipBoardData				
	var trackingCode
	
	pressedKey = String.fromCharCode(event.keyCode).toLowerCase();
	clipBoardData = window.clipboardData.getData('Text');
	
  	if (event.ctrlKey && pressedKey == "v")
	{	
		if (clipBoardData.length > 0)
		{
			trackingCode = clipBoardData.split("-")		
			document.getElementById("code_" + code).value = trackingCode[code - 1];		
		}
			
		setFocus(code);
	}
}

//Sets focus for trackingpage
function setFocus(code)
{
	if (document.getElementById("code_" + code).value.length == 4)
	{
		if (code < 4)
		{
			document.getElementById("code_" + (code + 1)).focus();			
			checkClipBoard(code + 1);
		}
		else
		{
			document.getElementById("submitcode").focus();
		}		
	}
}

//Show help window
function showHelp(fieldID, style)
{
	var width = 400;
	var height = 200;	
	var leftMargin = (window.screen.availWidth / 2) - (width / 2);
	var topMargin = (window.screen.availHeight / 2) - (height / 2) - 50;
	
	var styleSheet = "/sjablonen/" + style + "/inc/form.css";
	var content = document.getElementById("fieldHelp_" + fieldID).innerHTML;
						
	if (helpWindow) 
	{
		helpWindow.close();
	}
		
	helpWindow = window.open("about:blank", "help", "menubar=0, toolbar=0, scrollbars=0, location=0, directories=0, status=0, resizable=0, width=" + width + ", height=" + height + ", top=" + topMargin + ", left=" + leftMargin);
	helpWindow.focus();
	
	helpWindow.document.write("<html><head><title>help</title><link rel='stylesheet' type='text/css' href='" + styleSheet + "' /></head>");
	helpWindow.document.write("<body><div id='containerForm'>" + content + "</div></body></html>");
}

//Check conditions
function checkConditions(conditionField)
{		
	var result = false;
	var fieldToCheck = document.getElementById("field_" + conditionField.value);
	
	if (!fieldToCheck)
	{
		return result;
	}
	
	var fieldToCheckName = fieldToCheck.name;
	var fieldToCheckLabel = document.getElementById("label_" + conditionField.value).innerHTML.replace(/ \*/g,"");
	
	var conditionType = document.getElementById("conditionType").value;
	var conditionValue = document.getElementById("conditionValue").value.toLowerCase();
	
	var	operatorTypes = new Array("", "<", "<=", "==", ">", ">=", "!=");
	var	operatorDescriptions = new Array("", "kleiner zijn dan", "kleiner of gelijk zijn aan", "gelijk zijn aan", "groter zijn dan", "groter of gelijk zijn aan", "ongelijk zijn aan");
		
	//Exception for radio-buttons
	if (fieldToCheckName != "radio")
	{
		var fieldToCheckValue = fieldToCheck.value.toLowerCase();
		
		//Check condition
		result = eval("if ('" + fieldToCheckValue + "' " + operatorTypes[conditionType] + " '" + conditionValue + "'){true}else{false};")	
	}
	else
	{
		var radioField = eval(fieldToCheck.form);
		
		for (var i = 0; i < radioField.length; i++)
		{		
			if (radioField[i].type == "radio" && radioField[i].checked)
			{				
				//Check condition
				result = eval("if ('" + radioField[i].value.toLowerCase() + "' " + operatorTypes[conditionType] + " '" + conditionValue + "'){true}else{false};")
				
				if (result)
				{
					break;
				}
			}
		}	
	}
	
	if (!result)
	{
		alert("De waarde van het veld '" + fieldToCheckLabel + "' moet " + operatorDescriptions[conditionType] + ": '" + conditionValue + "'");
		
		if (fieldToCheck.focus && fieldToCheck.type != "hidden")
		{
			fieldToCheck.focus();
		}		
	}
	
	return result;
}

function toggleForm(containerID)
{
	if (!document.getElementById(containerID)) return;
	
	var form = document.getElementById(containerID);
		
	if (form.style.display == "none")
	{					
		form.style.display = "block";		
	}	
	else
	{					
		form.style.display = "none";		
	}
	
	form.scrollIntoView();
}
