function validateformer_formikone() { 
var items = new Array();
items[0] = {name: "First Name",required_type: "", error_msg: "First Name", is_fckeditor: false, typecheck_depend_on: "" };
items[1] = {name: "Last Name",required_type: "", error_msg: "Last Name", is_fckeditor: false, typecheck_depend_on: "" };
items[2] = {name: "Email",required_type: "email", error_msg: "Email", is_fckeditor: false, typecheck_depend_on: "" };
items[3] = {name: "Phone",required_type: "telephone_number", error_msg: "Phone", is_fckeditor: false, typecheck_depend_on: "" };
items[4] = {name: "Address",required_type: "", error_msg: "Address", is_fckeditor: false, typecheck_depend_on: "" };
items[5] = {name: "Zipcode",required_type: "zipcode", error_msg: "Postcode", is_fckeditor: false, typecheck_depend_on: "Country" };
items[6] = {name: "Town",required_type: "", error_msg: "Town", is_fckeditor: false, typecheck_depend_on: "" };
items[7] = {name: "Country",required_type: "country", error_msg: "Country", is_fckeditor: false, typecheck_depend_on: "" };
items[8] = {name: "Course",required_type: "", error_msg: "Workshop /private sessions", is_fckeditor: false, typecheck_depend_on: "" };
items[9] = {name: "Terms",required_type: "", error_msg: "Terms and conditions", is_fckeditor: false, typecheck_depend_on: "" };
items[10] = {name: "Accept[]",required_type: "", error_msg: "I accept the terms and conditions", is_fckeditor: false, typecheck_depend_on: "" };
items[11] = {name: "ele_113",required_type: "", error_msg: "payment method", is_fckeditor: false, typecheck_depend_on: "" };
return formika.check("formikone", items, "Please enter ",'#FFFFFF');
};

function formika() {
};
formika.check = function(formname,items,errormsgheader, errorcolor) {
	this._firsterror = null;
	this._errorcolor = errorcolor;
	var myform = window.document[formname];
	if (typeof(myform) != 'object') {
		return false;
	}
	
	this.myform_missing_elements = new Array();
	if (typeof(items) != 'object') {
		return false;
	}
	for (var i=0; i<items.length; i++) {
	
		
		var item = items[i];
		var o = myform[item.name];
		if (typeof(o) != 'object') {
			if (typeof(myform[item.name+'[]']) == 'object') {
				var o = myform[item.name+'[]'];
			} else if (typeof(myform[item.name+'[0]']) == 'object') {
				var o = myform[item.name+'[0]'];
			} else {
				//this.addError(item.error_msg);
				continue;
			}
		}
		if (!o.nodeType && o[0] && o[0].nodeName=='INPUT' && (o[0].type=='radio' || o[0].type=='checkbox')  ) {
			var onechildchecked = false;
			// radio/checkbox handling
			for (var j=0; j<o.length ; j++) {
				if (o[j].checked) {
					onechildchecked = true;
				}
			}
			if (!onechildchecked) {
				this.addError(item.error_msg);
				this.highlightError(o[0].parentNode,item);
				continue;
			}
			this.unhighlightError(o[0].parentNode,item);
		} else if (!o.nodeType && o[0] && o[0].nodeName=='INPUT' && (o[0].type=='hidden' ) ) { 
			var onechildchecked = false;
			// hidden handling
			for (var j=0; j<o.length ; j++) {
				if (o[j].value) {
					onechildchecked = true;
				}
			}
			if (!onechildchecked) {
				this.addError(item.error_msg);
				this.highlightError(o[0].parentNode,item);
				continue;
			}
			this.unhighlightError(o[0].parentNode,item);
		} else if (!o.nodeType && o[0] && o[0].nodeName=='INPUT' && (o[0].type=='text')) {
			var onechildchecked = false;
			// hidden handling
			for (var j=0; j<o.length ; j++) {
				if (o[j].value) {
					onechildchecked = true;
				}
			}
			if (!onechildchecked) {
				this.addError(item.error_msg);
				this.highlightError(o[0],item);
				continue;
			}
			this.unhighlightError(o[0].parentNode,item);
		} else if (item.is_fckeditor) {
			// handle fck editor
			var oEditor = FCKeditorAPI.GetInstance(item.name) ;
			var editorcontent = oEditor.GetHTML();
			if (!editorcontent) {
				this.highlightError(o,item);
				this.addError(item.error_msg);
				continue;
			}
		} else {
			var value = o.value;
			if (item.required_type) {
				var typecheck_depend_on=item.typecheck_depend_on;
				var type_is_valid = this.checkType(item.required_type,value,typecheck_depend_on);
				if (!type_is_valid) {
					this.highlightError(o,item);
					this.addError(item.error_msg);
					continue;
				}
				this.unhighlightError(o,item);
			} else {
				if (!value) {
					this.highlightError(o,item);
					this.addError(item.error_msg);
					continue;
				}
				// special exception to handle single checkbox 
				if (o.nodeType && o.nodeName=='INPUT' && o.type == 'checkbox' && !o.checked) {
					this.highlightError(o.parentNode,item);
					this.addError(item.error_msg);
					continue;
				}
				this.unhighlightError(o,item);
			}
		}
	}
	if (this.myform_missing_elements.length>0) {
		var s = errormsgheader + "\n";
		s += this.myform_missing_elements.join("\n");
		alert(s);
		if (this._firsterror) {
			var fo = this._firsterror.obj;
			var fitem = this._firsterror.item;
			if (fo & fo.nodeName != 'INPUT' & fo.type != 'hidden' ) {
				if (fo.focus) {
					fo.focus();
				}
				if (fo.select) {
					fo.select();
				}
			}
		}
		return false;
	}
	return true;
}

formika.checkType = function( type, value, typecheck_depend_on ) {
	var result = true;
	switch(type) {
		case 'email':
			if (!value.match(/([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*))/)){
				result = false
			}
			break;
		case 'zipcode':
			
			var selCountry = document.getElementById(typecheck_depend_on);
			if (!selCountry) {
				return true;  // Teporary. Here select the country of the owner or the default_country from the preferences and check against that
				alert('EXCEPTION: Dependentfield (COUNTRY) not found. Cannot continue');
				return false;
			}
		
			break;
		case 'telephone_number':
			if (!value.match(/([\d \.\/\-+()]){5,}/)) {
				result = false;
			}
			break;
		case 'date':
			if (!value.match(/[0-9]+-[0-9]+-[0-9]+/)) {
				result = false;
			}
			break;
	}
	return result;
}
formika.highlightError = function(o,item) {
	if (!this._firsterror) {
		this._firsterror = {'obj':o,'item':item};
	}
	if (o) {
		if (item.required_type == 'date') {
			o.parentNode.style.backgroundColor=this._errorcolor;
		} else {
			if (o.style) {
				o.style.backgroundColor = this._errorcolor;
			}
		}
	}
}
formika.unhighlightError = function (o, item) {
	if (o) {
		if (item.required_type == 'date') {
			o.parentNode.style.backgroundColor = '';
		} else {
			if (o.style) {
				o.style.backgroundColor = '';
			}
		}
	}
}
formika.addError = function(error) {
	this.myform_missing_elements.push(" - "+error);
}

