﻿// Author: M Haris Munir
// Author Email: haris.multi@gmail.com
// Last Updated: Monday, November 09, 2009

//Form Validation
function form_validation(form,farray){
	try{
	for(i=0; i<farray.length; i++){
		var fieldname = farray[i][1];
		var fieldname2 = farray[i][2];
		var fieldname3 = farray[i][3];
		var field1 = form[fieldname].value;
		switch(farray[i][0]){
			case "required":
				if(field1==''){
					if(form[fieldname].id == ''){
						form[fieldname].id = form.name + '_' + Math.ceil(Math.random()*10000);
					}
					checkalert(farray[i]);
					alertLoc(form[fieldname].id);
					showError(form[fieldname].id,0);
					form[fieldname].select();
					return false;
				}
				break;
				
			case "dropdown":
				if(field1==''){
					if(form[fieldname].id == ''){
						form[fieldname].id = form.name + '_' + Math.ceil(Math.random()*10000);
					}
					checkalert(farray[i]);
					alertLoc(form[fieldname].id);
					showError(form[fieldname].id,0);
					form[fieldname].focus();
					return false;
				}
				break;
			case "alert":
				if(field1==''){
					checkalert(farray[i]);
					alertLoc(form[fieldname].id);
					return false;
				}
				break;
			case "match":
				var field2 = form[fieldname2].value;
				if(field1!=field2){
					if(form[fieldname2].id == ''){
						form[fieldname2].id = form.name + '_' + Math.ceil(Math.random()*10000);
					}
					checkalert(farray[i]);
					alertLoc(form[fieldname].id)
					showError(form[fieldname2].id,0);
					form[fieldname2].select();
					return false;
				}
				break;
			case "radio":
			case "checkbox":
				var countx = 0;
				if(form[fieldname].id == ''){
					form[fieldname].id = form.name + '_' + Math.ceil(Math.random()*10000);
				}
				
				for (var x=0; x<form.elements.length; x++){
					if (form.elements[x].name == fieldname && form.elements[x].checked == 1){
						countx++;
					}
				}

				if (countx == 0){
					checkalert(farray[i]);
					alertLoc(form[fieldname].id)
					return false;
				}
				break;
			case "validation":
				if (field1 == 0){
					form[fieldname3].click();
				}
				if (field1 != 1){
					return false;
				}
				break;
			case "selectbarall":
					for (var ia=0; ia<form[fieldname].length; ia++){
					form[fieldname][ia].attributes('selected').value=true;}
					
					for (var ib=0; ib<form[fieldname2].length; ib++){
					form[fieldname2][ib].attributes('selected').value=true;}

				break;
			case "email":
				var checkemail = isEmail(field1);
				if(!checkemail){
					if(form[fieldname].id == ''){
						form[fieldname].id = form.name + '_' + Math.ceil(Math.random()*10000);
					}
					checkalert(farray[i]);
					alertLoc(form[fieldname].id);
					showError(form[fieldname].id,0);
					form[fieldname].select();
					return false;
				}
				break;
			case "length":
				if(field1.length < fieldname2 || field1.length > fieldname3){
					if(form[fieldname].id == ''){
						form[fieldname].id = form.name + '_' + Math.ceil(Math.random()*10000);
					}
					var alertmsg = "Field value length cannot match! \n\r\n";
						alertmsg += "minimum value "+fieldname2+" \n\r\n";
					if(fieldname3 != '')
						alertmsg += "maximum value "+fieldname3+" \n\r\n";
					alert(alertmsg);
					showError(form[fieldname].id,0);
					form[fieldname].select();
					return false;
				}				
				break;
			case "number":
				if(!isNum(field1)){
					if(form[fieldname].id == ''){
						form[fieldname].id = form.name + '_' + Math.ceil(Math.random()*10000);
					}
					checkalert(farray[i]);
					alertLoc(form[fieldname].id);
					showError(form[fieldname].id,0);
					try{
						form[fieldname].select();
					}catch(e){}
					return false;
				}
				break;
		}
	}
	}catch(e){
		return false;
	}
return true;
}

function alertLoc(url){
	return false;
	if(url=='undefined') return false;
	window.location = '#' + url;
}

function checkalert(ary){
	var orignal_array = end(ary);
	if(orignal_array!=''){
		var exploadit = hr.explode('=',orignal_array);
		var str = orignal_array.substr(exploadit[0].length+1)
		if(exploadit[0] == 'alert'){
			if(exploadit[1]!=undefined){
				alert(str);
			}
		}else if(exploadit[0] == 'exe'){
			if(exploadit[1]!=undefined){
				eval(str);
			}
		}
	}
}

// end function same like php
function end(ary){
	var cary = (ary.length-1);
	return ary[cary];
}

function ChangeRows(crvalue,crurl){
	if(crvalue=='0'){
		return false;
	}else{
		window.location='?'+crurl+crvalue;
	}
}

function isEmail(elem){
    var str = elem;
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!str.match(re)) {
        return false;
    } else {
        return true;
    }
}

function isEngChar(elem){
    var str = elem;
    var re = /[א-ת,<,>]/;
    if (str.match(re))
        return false;
	else
        return true;
}

function isNum(elem){
    var str = elem;
    var re = /[0-9]/;
    if (!str.match(re))
        return false;
	else
        return true;
}

function showError(obj,id){
	var color = new Array('#E02F2F','#E65353','#E96565','#EB7575','#ED8888','#F19C9C','#F5B4B4','#F9D1D1','#FDEBEB','#FFFFFF')
	document.getElementById(obj).style.background = (color[id]=='' || !color[id])?'#FFFFFF':color[id];
	if(id==color.length){
		return false;
	}else{
		id = (id-0)+1;
	}
	setTimeout("showError('"+obj+"',"+id+")",60);
}

function getRadioValue(form,fieldname){
	for (var x=0; x<form.elements.length; x++){
		if (form.elements[x].name == fieldname && form.elements[x].checked == 1){
			return form.elements[x].value;
		}
	}
	return false;
}

