// 
// 
///////////////////////////////////////////////////////

var Formcheck = new Class({
	
	// CONSTRUCTOR
	initialize: function(lang) {
		var mandatoryFields = $$('.mandatoryField');
		var hint			= $('formsMandatoryHint');
		var sendLink		= $('formSendLink');
		this.errorString	= "";
		this.closeString		= "";
		
		switch(lang) {
			case "de"	:	errorString = "Bitte f&uuml;llen Sie folgende Felder aus:";
							closeString	= "Schliessen";
							break;
			case "en"	:	errorString = "Please complete the following fields:";
							closeString = "Close";
							break;
		}
		
		if(mandatoryFields) {
			for(var i=0;i<mandatoryFields.length;i++) {
				var field = mandatoryFields[i];
				field.onfocus = function() {
					var _formcheck = new Formcheck('noinit');
					this.style.borderColor = '#9e0b03';
					_formcheck.showHint(this, hint);
				}
				field.onblur = function() {
					hint.style.visibility	= 'hidden';
					if(this.value.length > 0) this.style.borderColor = '#fff';
				}
			}
		}
		if(sendLink) {
			sendLink.addEvent("click", function() { 
				for(var i=0;i<mandatoryFields.length;i++) {
					var node = mandatoryFields[i];
					if(node.type.indexOf('checkbox') > -1) {
						if(node.checked == true)
							mandatoryFields[i].value = true;
						else
							mandatoryFields[i].value = "";
					}
				}
			
				this.validateInput(mandatoryFields);
			}.bind(this));
		}
	},
	
	// METHODS
	// show little hint to users that the focussed input field is mandatory
	showHint : function(inputField, hint) {
		var inputFieldPos		= inputField.getPosition();
		
		hint.style.top			= (inputFieldPos.bottom+2)+"px";
		if(document.all)
			hint.style.left		= (inputFieldPos.left+1)+"px";
		else
			hint.style.left		= inputFieldPos.left+"px";
		hint.style.visibility	= 'visible';
	},
	
	validateInput : function(fields) {
		var labels 			= $$('label');
		var data			= new Array(3);
		
		function printErrors(responseText) {
			var errors = eval("{"+responseText+"}");
			if(errors.length > 0) {
				var col				= $('layoutSecondColumn');
				var colPos			= col.getPosition();
				var errorBox		= document.createElement('DIV');
				var errorBackground	= document.createElement('DIV');
				var errorList;
				var errorField;
				
				errorBackground.id				= "errorBoxBackground";
				errorBackground.style.width		= colPos.width+"px";
				errorBackground.style.height 	= colPos.height+"px";
				errorBox.className	= "errorBoxStyle bgRed";
				errorBox.id			= 'printErrors';
				errorBox.innerHTML	= '<b>'+errorString+'</b><br /><div id="listErrors" style="padding: 5px;"></div>';
				errorBox.innerHTML += '<div class="contentLink154RedSingle" style="margin-left: 308px; margin-bottom: 0px; border-bottom-width: 2px;"><span class="descLink" onclick="closeBox(this);">'+closeString+'</span></div>';
				errorBox.style.top	= Window.getHeight()/2+Window.getScrollTop()+"px";
				
				col.appendChild(errorBox);
				col.appendChild(errorBackground);
				
				errorList	= $('listErrors');
				for(var i=0;i<errors.length;i++) {
					errorList.innerHTML	+= "&bull;&nbsp;"+errors[i].name+"<br />";
					errorField = $(errors[i].id);
					errorField.style.borderColor = '#9a441c';
				}
				errorBox.style.visibility = 'visible';
			} else {
				document.myForm.action	= '#sent';
				document.myForm.method	= 'post';
				document.myForm.submit();
			}
		}
		
		var jsonString = '[';
		for(var i=0;i<fields.length;i++) {
			jsonString += "{";
			var field = fields[i];
			jsonString += "\"id\" : \""+field.id+"\", ";
			jsonString += "\"field\" : \""+field.name+"\", ";
			jsonString += "\"string\" : \""+field.value+"\", ";
			for(var j=0;j<labels.length;j++) {
				var label = labels[j];
				if(label.id.indexOf(field.id) > -1) {
					jsonString += "\"name\" : \""+label.innerHTML+"\"";
				}
			}
			if(i<(fields.length-1) && fields.length>0) jsonString += "}, ";
			else jsonString += "}";
		}
		jsonString += "]";
		var jsonObj = eval("{"+jsonString+"}");
		var postString = "";
		
		for(var i=0;i<jsonObj.length;i++) {
			postString += 'json['+i+'][id]='+jsonObj[i]['id']+'&';
			postString += 'json['+i+'][name]='+jsonObj[i]['name']+'&';
			if(i<(jsonObj.length-1) && jsonObj.length > 1)
				postString += 'json['+i+'][string]='+jsonObj[i]['string']+'&';
			else
				postString += 'json['+i+'][string]='+jsonObj[i]['string'];
		}
		
		var validateField 	= new Ajax("/xhr/validate.php", {method: 'post', postBody: postString, onComplete: printErrors});
		validateField.request();
	}
	
});
