/*
	CKA klachtenformulier1
*/
CKA_Klachtenformulier1=Class.create();
CKA_Klachtenformulier1.prototype=
{
	numItems:0,
	currentItem:0,
	hasInit:false,
	itemPrefix:"item_",
	buttonPrefix:"button_",
	buttonsWrapper:"buttonsWrapper",
	errors:null,
	debug:false,
	theForm:"",
	theFormOBJ:null,
	
	initialize:function(args)
	{
		this.errors=Array();
		args=getDefaults(args,{numItems:this.numItems,itemPrefix:this.itemPrefix,buttonPrefix:this.buttonPrefix,buttonsWrapper:this.buttonsWrapper,debug:this.debug,theForm:this.theForm});
		
		this.theForm=args.theForm;
		
		if(this.theForm!="")
		{
			this.theFormOBJ=$(this.theForm);
			
			if(this.theFormOBJ)
			{
				this.theFormOBJ.onsubmit=this.onSubmit.bindAsEventListener(this);
				
				this.numItems=args.numItems;
				this.itemPrefix=args.itemPrefix;
				this.buttonPrefix=args.buttonPrefix;
				this.buttonsWrapper=args.buttonsWrapper;
				this.debug=args.debug;
				
				if(this.numItems>0)		
				{
					this.hasInit=true;
					this.setupButtons();
					this.show(1);
				}
			}
		}
	},
	
	onSubmit:function(e)
	{
		var returnValue=false;
		this.errors.clear();
		if(!this.checkTextfield("code")) this.addError("Er is nog geen code ingevoerd.");

		returnValue=!this.hasErrors();
		this.alertErrors();
				
		return returnValue;
	},
	
	addError:function(err)
	{
		this.errors.push(err);
	},
	
	alertErrors:function()
	{
		if(this.errors.length>0)
		{
			if(!this.debug)
			{
				alert("De volgende problemen zijn opgetreden :\n\n" + this.errors.join("\n"));
			}
		}
	},
	
	hasErrors:function()
	{
		if(this.errors.length>0) return true;
		return false;
	},
	
	setupButtons:function()
	{
		for(var i=0;i<this.numItems;i++)
		{
			buttonObj=$(this.buttonPrefix+(i+1));
			if(buttonObj)
			{				
				buttonObj.buttonID=(i+1);
				buttonObj.onclick=this.callBackButton.bindAsEventListener(this);
				buttonObj.style.display="none";
			}
		}
		
		if($(this.buttonsWrapper)) $(this.buttonsWrapper).style.display="block";
	},
	
	callBackButton:function(event)
	{		
		element = Event.element(event);

		if(element.buttonID>this.currentItem)
		{
			if(this.checkRequiredFields())
			{
				this.alertErrors();	
				
				this.hideCurrent();		
				this.show(element.buttonID);				
			}
		} else {
			this.hideCurrent();		
			this.show(element.buttonID);			
		}

		
		this.alertErrors();
	},
	
	checkTextfield:function(fieldID)
	{
		var returnValue=false;
		if($(fieldID))
		{
			if($(fieldID).value!="")
			{
				returnValue=true;	
			}
		}
		
		return returnValue;
	},
	
	checkRadio:function(radioName)
	{
		var returnValue=false;
		var theRadioLength=this.theFormOBJ[radioName].length;
		var theRadiochecked = false;
		
		for(i=0;i<theRadioLength;i++)
		{
			var theRadio=this.theFormOBJ[radioName][i];
			if(theRadio.checked) returnValue=true;
		}
		
		//alert(theRadio);
		
		return returnValue;
	},
	
	clearErrors:function()
	{
		this.errors=null;
		this.errors=Array();		
	},
	
	isValidEmail:function(str) 
	{	
		
	   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	   var address = str;
	   return reg.test(address);
		
	  // return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
	},	
	
	checkRequiredFields:function()
	{
		this.clearErrors();
		var returnValue=false;
		switch(this.currentItem)
		{
		
			case 1:
			{
				returnValue=true;
				break;
			}
			
			case 2:
			{
				if(!this.checkRadio("sollicitatieprocedure")) this.addError("Was er wel of geen sollicitatieprocedure?");
				returnValue=!this.hasErrors();
				break;
			}
			
			case 3:
			{
				returnValue=true;
				break;
			}
			
			case 4:
			{
				returnValue=true;
				break;
			}	
			
			case 5:
			{
				if(!this.checkRadio("andere_personen")) this.addError("Waren er nog andere personen betrokken?");
				returnValue=!this.hasErrors();				
				break;
			}					
			
			case 6:
			{
				if(!this.checkRadio("gezondheidsvragen")) this.addError("Zijn er wel of geen gezondheidsvragen gesteld?");
				returnValue=!this.hasErrors();				
				break;								
			}
			
			case 7:
			{
				if(!this.checkRadio("bedrijfsarts")) this.addError("Heeft u te maken gehad met een (bedrijfs) arts?");
				returnValue=!this.hasErrors();				
				break;								
			}
			
			case 8:
			{
				returnValue=true;
				break;
			}

			case 9:
			{
				returnValue=true;
				break;				
			}
			
			case 10:
			{
				returnValue=true;
				break;				
			}			
			
			case 11:
			{
				if(!this.checkTextfield("klacht_naam")) this.addError("Naam is niet ingevuld.");
				if(!this.checkTextfield("klacht_adres")) this.addError("Adres is niet ingevuld.");
				if(!this.checkTextfield("klacht_postcode")) this.addError("Postcode is niet ingevuld.");
				if(!this.checkTextfield("klacht_woonplaats")) this.addError("Woonplaats is niet ingevuld.");
				//if(!this.checkTextfield("klacht_telefoonnummer")) this.addError("Telefoonummer is niet ingevuld.");
				
				/*
				if(!this.checkTextfield("klacht_email")) {
					this.addError("E-mail is niet ingevuld.");
				} else {
					if(!this.isValidEmail($("klacht_email").value))
					{
						this.addError("Dit is geen geldig e-mail.");
					}
				}
				*/
				
				returnValue=!this.hasErrors();
				break
			}
			
			case 12:
			{
				returnValue=true;
				break;				
			}			
			
			
		}
		
		if(this.debug) returnValue=true;

		
		return returnValue;
	},
	
	showCurrent:function()
	{
		this.show(this.currentItem);
	},
	
	
	hideCurrent:function()
	{
		this.hide(this.currentItem);
	},
	
	hide:function(itemNr)
	{
		itemObj=$(this.itemPrefix+itemNr);
		if(itemObj)
		{
			itemObj.style.display="none";
		}		
	},
	
	show:function(itemNr)
	{
		itemObj=$(this.itemPrefix+itemNr);
		if(itemObj)
		{		
			this.currentItem=itemNr;
			itemObj.style.display="block";
			this.showButtons();
		}
	},
	
	showButton:function(itemNr)
	{
		itemObj=$(this.buttonPrefix+itemNr);
		
		if(itemObj)
		{
			itemObj.style.display="";
			theText="vorige vraag";
						
			if(this.currentItem==(itemNr-1)) theText="volgende vraag";			
			itemObj.update(theText);			
		}
	},
	
	hideButton:function(itemNr)
	{
		itemObj=$(this.buttonPrefix+itemNr);
		if(itemObj)
		{
			itemObj.style.display="none";
		}		
	},
	
	hideButtons:function()
	{
		for(var i=0;i<this.numItems;i++)
		{
			var itemObj=$(this.buttonPrefix+(i+1));
			if(itemObj) itemObj.style.display="none";
			
		}
	},
	
	
	
	showButtons:function()
	{
		this.hideButtons();
		this.showButton(this.currentItem+1);
		this.showButton(this.currentItem-1);
		
		this.hideButton(this.currentItem);
	}
	
};


/*
	CKA klachtenformulier
*/
CKA_Klachtenformulier=Class.create();
CKA_Klachtenformulier.prototype=
{
	numItems:0,
	currentItem:0,
	hasInit:false,
	itemPrefix:"item_",
	buttonPrefix:"button_",
	buttonsWrapper:"buttonsWrapper",
	errors:null,
	debug:false,
	theForm:"",
	theFormOBJ:null,
	
	initialize:function(args)
	{
		this.errors=Array();
		args=getDefaults(args,{numItems:this.numItems,itemPrefix:this.itemPrefix,buttonPrefix:this.buttonPrefix,buttonsWrapper:this.buttonsWrapper,debug:this.debug,theForm:this.theForm});
		
		this.theForm=args.theForm;
		
		if(this.theForm!="")
		{
			this.theFormOBJ=$(this.theForm);
			
			if(this.theFormOBJ)
			{
				this.theFormOBJ.onsubmit=this.onSubmit.bindAsEventListener(this);
				
				this.numItems=args.numItems;
				this.itemPrefix=args.itemPrefix;
				this.buttonPrefix=args.buttonPrefix;
				this.buttonsWrapper=args.buttonsWrapper;
				this.debug=args.debug;
				
				if(this.numItems>0)		
				{
					this.hasInit=true;
					this.setupButtons();
					this.show(1);
				}
			}
		}
	},
	
	onSubmit:function(e)
	{
		var returnValue=false;
		
		this.errors.clear();
				
		if(!this.checkTextfield("code")) this.addError("Er is nog geen code ingevoerd.");

		
		
		returnValue=!this.hasErrors();
		this.alertErrors();
				
		return returnValue;
	},
	
	addError:function(err)
	{
		this.errors.push(err);
	},
	
	alertErrors:function()
	{
		if(this.errors.length>0)
		{
			if(!this.debug)
			{
				alert("De volgende problemen zijn opgetreden :\n\n" + this.errors.join("\n"));
			}
		}
	},
	
	hasErrors:function()
	{
		if(this.errors.length>0) return true;
		return false;
	},
	
	setupButtons:function()
	{
		for(var i=0;i<this.numItems;i++)
		{
			buttonObj=$(this.buttonPrefix+(i+1));
			if(buttonObj)
			{				
				buttonObj.buttonID=(i+1);
				buttonObj.onclick=this.callBackButton.bindAsEventListener(this);
				buttonObj.style.display="none";
			}
		}
		
		if($(this.buttonsWrapper)) $(this.buttonsWrapper).style.display="block";
	},
	
	callBackButton:function(event)
	{		
		element = Event.element(event);

		if(element.buttonID>this.currentItem)
		{
			if(this.checkRequiredFields())
			{
				this.alertErrors();	
				
				this.hideCurrent();		
				this.show(element.buttonID);				
			}
		} else {
			this.hideCurrent();		
			this.show(element.buttonID);			
		}

		
		this.alertErrors();
	},
	
	checkTextfield:function(fieldID)
	{
		var returnValue=false;
		if($(fieldID))
		{
			if($(fieldID).value!="")
			{
				returnValue=true;	
			}
		}
		
		return returnValue;
	},
	
	checkRadio:function(radioName)
	{
		var returnValue=false;
		var theRadioLength=this.theFormOBJ[radioName].length;
		var theRadiochecked = false;
		
		for(i=0;i<theRadioLength;i++)
		{
			var theRadio=this.theFormOBJ[radioName][i];
			if(theRadio.checked) returnValue=true;
		}
		
		//alert(theRadio);
		
		return returnValue;
	},
	
	clearErrors:function()
	{
		this.errors=null;
		this.errors=Array();		
	},
	
	isValidEmail:function(str) 
	{	
		
	   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	   var address = str;
	   return reg.test(address);
		
	  // return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
	},	
	
	checkRequiredFields:function()
	{
		this.clearErrors();
		var returnValue=false;
		switch(this.currentItem)
		{
			case 1:
			{
				if(!this.checkTextfield("klacht_naam")) this.addError("Naam is niet ingevuld.");
				if(!this.checkTextfield("klacht_adres")) this.addError("Adres is niet ingevuld.");
				if(!this.checkTextfield("klacht_postcode")) this.addError("Postcode is niet ingevuld.");
				if(!this.checkTextfield("klacht_woonplaats")) this.addError("Woonplaats is niet ingevuld.");
				if(!this.checkTextfield("klacht_telefoonnummer")) this.addError("Telefoonummer is niet ingevuld.");
				if(!this.checkTextfield("klacht_email")) {
					this.addError("E-mail is niet ingevuld.");
				} else {
					if(!this.isValidEmail($("klacht_email").value))
					{
						this.addError("Dit is geen geldig e-mail.");
					}
				}
				
				returnValue=!this.hasErrors();
				break
			}
			
			case 2:
			{
				returnValue=true;
				break;
			}
			
			case 3:
			{
				if(!this.checkRadio("sollicitatieprocedure")) this.addError("Was er wel of geen sollicitatieprocedure?");
				returnValue=!this.hasErrors();
				break;
			}
			
			case 4:
			{
				returnValue=true;
				break;
			}
			
			case 5:
			{
				returnValue=true;
				break;
			}	
			
			case 6:
			{
				if(!this.checkRadio("andere_personen")) this.addError("Waren er nog andere personen betrokken?");
				returnValue=!this.hasErrors();				
				break;
			}					
			
			case 7:
			{
				if(!this.checkRadio("gezondheidsvragen")) this.addError("Zijn er wel of geen gezondheidsvragen gesteld?");
				returnValue=!this.hasErrors();				
				break;								
			}
			
			case 8:
			{
				if(!this.checkRadio("bedrijfsarts")) this.addError("Heeft u te maken gehad met een (bedrijfs) arts?");
				returnValue=!this.hasErrors();				
				break;								
			}
			
			case 9:
			{
				returnValue=true;
				break;
			}

			case 10:
			{
				returnValue=true;
				break;				
			}
			
			case 11:
			{
				returnValue=true;
				break;				
			}			
		}
		
		if(this.debug) returnValue=true;

		
		return returnValue;
	},
	
	showCurrent:function()
	{
		this.show(this.currentItem);
	},
	
	
	hideCurrent:function()
	{
		this.hide(this.currentItem);
	},
	
	hide:function(itemNr)
	{
		itemObj=$(this.itemPrefix+itemNr);
		if(itemObj)
		{
			itemObj.style.display="none";
		}		
	},
	
	show:function(itemNr)
	{
		itemObj=$(this.itemPrefix+itemNr);
		if(itemObj)
		{		
			this.currentItem=itemNr;
			itemObj.style.display="block";
			this.showButtons();
		}
	},
	
	showButton:function(itemNr)
	{
		itemObj=$(this.buttonPrefix+itemNr);
		
		if(itemObj)
		{
			itemObj.style.display="";
			theText="vorige vraag";
						
			if(this.currentItem==(itemNr-1)) theText="volgende vraag";			
			itemObj.update(theText);			
		}
	},
	
	hideButton:function(itemNr)
	{
		itemObj=$(this.buttonPrefix+itemNr);
		if(itemObj)
		{
			itemObj.style.display="none";
		}		
	},
	
	hideButtons:function()
	{
		for(var i=0;i<this.numItems;i++)
		{
			var itemObj=$(this.buttonPrefix+(i+1));
			if(itemObj) itemObj.style.display="none";
			
		}
	},
	
	
	
	showButtons:function()
	{
		this.hideButtons();
		this.showButton(this.currentItem+1);
		this.showButton(this.currentItem-1);
		
		this.hideButton(this.currentItem);
	}
	
};



var ckaKlachtenformulier;
var ckaKlachtenformulier1;
function initKlachten()
{
	ckaKlachtenformulier=new CKA_Klachtenformulier({numItems:12,itemPrefix:"vraag_",buttonPrefix:"button_",buttonsWrapper:"buttonsWrapper",theForm:"frmKlachtenformulier"});
	ckaKlachtenformulier1=new CKA_Klachtenformulier1({numItems:13,itemPrefix:"vraag_",buttonPrefix:"button_",buttonsWrapper:"buttonsWrapper",theForm:"frmKlachtenformulier1"});
}



function getDefaults(options,default_args)
{
	for(var index in default_args) 
	{
		if(typeof options[index] == "undefined") options[index] = default_args[index];
	}	
	
	return options;
}