// Author: M Haris Munir
// Author Email: haris.multi@gmail.com
// Last Updated: Friday, August 30, 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 "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 "alert":
				if(field1==''){
					checkalert(farray[i]);
					alertLoc(form[fieldname].id);
					return false;
				}
				break;
			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 "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 "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){
		//alert(e);
	}
return true;
}

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

function checkalert(ary){
	var orignal_array = end(ary);
	if(orignal_array!=''){
		var exploadit = explode('=',orignal_array);
		if(exploadit[0] == 'alert'){
			if(exploadit[1]!=undefined){
				alert(exploadit[1]);
			}
		}
	}
}

// Explode Function Same Like PHP
// version: 1.0.0.0
// LastUpdate: 27-03-2009
function explode(f,value){
	var get = Array();
	var newval = value;
	var newf = f;
	for(var i=0; i<value.length; i++){
		var nv = newval.indexOf(newf);
		if(nv < 0){
			if(newval=='') return get;
			get[i] = newval;
			return get;
		}else{
			var nvv = nv + 1;
			var ne = newval.slice(0,nv);
			//alert(ne)
			newval = newval.slice(nvv);
			get[i] = ne;
		}
	}
}

// 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','')
	document.getElementById(obj).style.background = color[id];
	if(id==color.length){
		return false;
	}else{
		id = (id-0)+1;
	}
	setTimeout("showError('"+obj+"',"+id+")",60);
}


// shortcut of document.getElementById
function $(element){
	element = document.getElementById(element);
	return element;
}



