function vetext(obj, typ) {
    var fname = obj.value;
    if (fname == "")
	return true;
    var fext = "," + fname.substr(fname.lastIndexOf('.') + 1).toLowerCase()	+ ",";
    if (typ == 1) {
	var exts = ",jpg,jpe,jpeg,gif,png,bmp,wbmp,wbm,rle,dib,";
	if (exts.search(fext) < 0) {
	    alert('You can only Upload pictures of type {jpg, jpe, jpeg, gif, png, bmp}!');
	    obj.focus();
	    return false;
	}
    } else if (typ == 2) {
	var exts = ",gif,3g2,3gp,RoQ,aac,ac3,adts,aiff,alaw,amr,asf,ass,au,avi,avm2,daud,dirac,dnxhd,dts,dv,dvd,eac3,f32be,f32le,f64be,f64le,ffm,flac,flv,gxf,h261,h263,h264,image2,image2pipe,ipod,m4v,matroska,mjpeg,mmf,mov,mp4,m4a,3g2,mj2,mp2,mp3,mp4,mpeg,mpg,mpeg1video,mpeg2video,mpegts,mpegvideo,mulaw,mxf,nut,ogg,psp,raw,rm,s16be,s16le,s24be,s24le,s32be,s32le,s8,svcd,swf,u16be,u16le,u24be,u24le,u32be,u32le,u8,vcd,vob,voc,wav,yuv4mpegpipe,wma,wmv,";
	if (exts.search(fext) < 0) {
	    alert('The file "' + fname + '" is not a supported video or audio format!');
	    obj.focus();
	    return false;
	}
    }
    return true;
}

function vetform(px, vid, cnt) {
    ret = true;
    holo = 0;
    for ( var k = 1; k <= px; k++) {
	e = document.getElementById('picture' + k);
	holo++;
	if (!(vetext(e, 1))) {
	    ret = false;
	    break;
	}
    }
    if (ret) {
	for ( var k = 1; k <= vid; k++) {
	    v = document.getElementById('video' + k);
	    holo++;
	    if (!(vetext(v, 2))) {
		ret = false;
	    }
	}
    }
    if (cnt > holo) {
	ret = false;
	alert('You must select at least ' + cnt + ' media to upload');
    }
    return ret;
}

function vetcontact() {
    var coy = v = document.getElementById('coyinfo');
    /*
	 * switch(parseInt(coy)) { case 1: contactname cntaddress cntphone cntemail
	 * cntstate cntcountry cntcity }
	 */
    if (splitted == null)
	return false;
    if (splitted[1] != null) {
	var regexp_user = /^\"?[\w-_\.]*\"?$/;
	if (splitted[1].match(regexp_user) == null)
	    return false;
    }
    if (splitted[2] != null) {
	var regexp_domain = /^[\w-\.]*\.[A-Za-z]{2,4}$/;
	if (splitted[2].match(regexp_domain) == null) {
	    var regexp_ip = /^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if (splitted[2].match(regexp_ip) == null)
		return false;
	}// if
	return true;
    }
    return false;
}

/*
// ---------------------------------EMail Check
	// ------------------------------------

 * checks the validity of an email address entered returns true or false
 *
 */

function validateEmail(email) {
    // a very simple email validation checking.
    // you can add more complex email checking if it helps
    var splitted = email.match("^(.+)@(.+)$");
    if (splitted == null)
	return false;
    if (splitted[1] != null) {
	var regexp_user = /^\"?[\w-_\.]*\"?$/;
	if (splitted[1].match(regexp_user) == null)
	    return false;
    }
    if (splitted[2] != null) {
	var regexp_domain = /^[\w-\.]*\.[A-Za-z]{2,4}$/;
	if (splitted[2].match(regexp_domain) == null) {
	    var regexp_ip = /^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if (splitted[2].match(regexp_ip) == null)
		return false;
	}// if
	return true;
    }
    return false;
}

/*
 * function validateData Checks each field in a form Called from
 * validateForm function
 */

function validateData(strValidateStr, objValue, strError) {
    var epos = strValidateStr.search("=");
    var command = "";
    var cmdvalue = "";
    if (epos >= 0) {
	command = strValidateStr.substring(0, epos);
	cmdvalue = strValidateStr.substr(epos + 1);
    } else {
	command = strValidateStr;
    }
    switch (command) {
	case "req":
	case "required": {
	    if (eval(objValue.value.length) == 0) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + " : Required Field";
		}// if
		alert(strError);
		return false;
	    }// if
	    break;
	}// case required
	case "maxlength":
	case "maxlen": {
	    if (eval(objValue.value.length) > eval(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + " : " + cmdvalue
		    + " characters maximum ";
		}// if
		alert(strError + "\n[Current length = " + objValue.value.length
		    + " ]");
		return false;
	    }// if
	    break;
	}// case maxlen
	case "minlength":
	case "minlen": {
	    if (eval(objValue.value.length) < eval(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + " : " + cmdvalue
		    + " characters minimum  ";
		}// if
		alert(strError + "\n[Current length = " + objValue.value.length
		    + " ]");
		return false;
	    }// if
	    break;
	}// case minlen
	case "alnum":
	case "alphanumeric": {
	    var charpos = objValue.value.search("[^A-Za-z0-9]");
	    if (objValue.value.length > 0 && charpos >= 0) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name
		    + ": Only alpha-numeric characters allowed ";
		}// if
		alert(strError + "\n [Error character position "
		    + eval(charpos + 1) + "]");
		return false;
	    }// if
	    break;
	}// case alphanumeric
	case "num":
	case "numeric": {
	    var charpos = objValue.value.search("[^0-9]");
	    if (objValue.value.length > 0 && charpos >= 0) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + ": Only digits allowed ";
		}// if
		alert(strError + "\n [Error character position "
		    + eval(charpos + 1) + "]");
		return false;
	    }// if
	    break;
	}// numeric
	case "alphabetic":
	case "alpha": {
	    var charpos = objValue.value.search("[^A-Za-z]");
	    if (objValue.value.length > 0 && charpos >= 0) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name
		    + ": Only alphabetic characters allowed ";
		}// if
		alert(strError + "\n [Error character position "
		    + eval(charpos + 1) + "]");
		return false;
	    }// if
	    break;
	}// alpha
	case "alnumhyphen": {
	    var charpos = objValue.value.search("[^A-Za-z0-9\-_]");
	    if (objValue.value.length > 0 && charpos >= 0) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name
		    + ": characters allowed are A-Z,a-z,0-9,- and _";
		}// if
		alert(strError + "\n [Error character position "
		    + eval(charpos + 1) + "]");
		return false;
	    }// if
	    break;
	}
	case "email": {
	    if (!validateEmail(objValue.value)) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + ": Enter a valid Email address ";
		}// if
		alert(strError);
		return false;
	    }// if
	    break;
	}// case email
	case "lt":
	case "lessthan": {
	    if (isNaN(objValue.value)) {
		alert(objValue.name + ": Should be a number ");
		return false;
	    }// if
	    if (eval(objValue.value) >= eval(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + " : value should be less than "
		    + cmdvalue;
		}// if
		alert(strError);
		return false;
	    }// if
	    break;
	}// case lessthan
	case "gt":
	case "greaterthan": {
	    if (isNaN(objValue.value)) {
		alert(objValue.name + ": Should be a number ");
		return false;
	    }// if
	    if (eval(objValue.value) <= eval(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + " : value should be greater than "
		    + cmdvalue;
		}// if
		alert(strError);
		return false;
	    }// if
	    break;
	}// case greaterthan
	case "regexp": {
	    if (!objValue.value.match(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + ": Invalid characters found ";
		}// if
		alert(strError);
		return false;
	    }// if
	    break;
	}// case regexp
	case "dontselect": {
	    if (objValue.selectedIndex == null) {
		alert("BUG: dontselect command for non-select Item");
		return false;
	    }
	    if (objValue.selectedIndex == eval(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + ": Please Select one option ";
		}// if
		alert(strError);
		return false;
	    }
	    break;
	}// case dontselect
    }// switch
    return true;
}

/*
 * function validateForm the function that can be used to validate any form
 * returns false if the validation fails; true if success arguments : objFrm :
 * the form object arrObjDesc : an array of objects describing the validations
 * to conduct on each input item. The array should consist of one object per
 * input item in the order the input elements are present in the form. Each
 * object consist of zero or more validation objects. Each of these validation
 * object is a pair consisting of the validation descriptor string and an
 * optional Error message.
 */

function validateForm(objFrm, arrObjDesc) {
    $('#xfind').attr('name', "xfind");
    for ( var itrobj = 0; itrobj < arrObjDesc.length; itrobj++) {
	if (objFrm.elements.length <= itrobj) {
	    alert("BUG: Obj descriptor for a non existent form element");
	    $('#xfind').attr('name', xfindsv[1]);
	    return false;
	}
	for ( var itrdesc = 0; itrdesc < arrObjDesc[itrobj].length; itrdesc++) {
	    if (validateData(arrObjDesc[itrobj][itrdesc][0], objFrm[itrobj],
		arrObjDesc[itrobj][itrdesc][1]) == false) {
		objFrm[itrobj].focus();
		$('#xfind').attr('name', xfindsv[1]);
		return false;
	    }
	}
    }
    $('#xfind').attr('name', xfindsv[1]);
    return true;
}

function showpop(msg) {
    awmShowGroup('fieldmsg-gr0',4,6,0,0);
    document.getElementById('frmmsg').innerHTML = showLines(28, msg, '<br>');
}

var holdname = "";
function popmsg(xitem, msg) {
    olditem = document.getElementById('awmAnchor-fieldmsg-gr0');
    if (olditem) {
	olditem.id = holdname;
    }
    holdname = xitem.id;
    if ((xitem.type.toLowerCase()!="hidden") && (xitem.style.display.toLowerCase()!="none")) {
	xitem.focus();
	xitem.id = "awmAnchor-fieldmsg-gr0";
	setTimeout("showpop('"+msg+"')", 100);
    } else {
	awmHideMenu('fieldmsg');
	alert(msg);
    }
}

function validateDataPop(strValidateStr, objValue, strError) {
    var epos = strValidateStr.search("=");
    var command = "";
    var cmdvalue = "";
    if (epos >= 0) {
	command = strValidateStr.substring(0, epos);
	cmdvalue = strValidateStr.substr(epos + 1);
    } else {
	command = strValidateStr;
    }
    switch (command) {
	case "req":
	case "required": {
	    if (eval(objValue.value.length) == 0) {
		if (!strError || strError.length == 0) {
		    strError = "Required Field";
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// case required
	case "vet": {
	    if (objValue.value != document.getElementsByName(cmdvalue)[0].value) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + " and " + cmdvalue + " do not match";
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// case vet
	case "if": {
	    var parts = cmdvalue.split('|');
	    if (eval(parts[0])) {
		return validateDataPop(parts[1], objValue, strError);
	    }
	    break;
	}// case vet
	case "maxlength":
	case "maxlen": {
	    if (eval(objValue.value.length) > eval(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + " : " + cmdvalue + " characters maximum " + "\n[Current length = " + objValue.value.length + " ]";
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// case maxlen
	case "minlength":
	case "minlen": {
	    if (eval(objValue.value.length) < eval(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = objValue.name + " : " + cmdvalue + " characters minimum  " + "\n[Current length = " + objValue.value.length + " ]";
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// case minlen
	case "alnum":
	case "alphanumeric": {
	    var charpos = objValue.value.search("[^A-Za-z0-9]");
	    if (objValue.value.length > 0 && charpos >= 0) {
		if (!strError || strError.length == 0) {
		    strError = "Only alpha-numeric characters allowed " + "\n [Error character position " + eval(charpos + 1) + "]";
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// case alphanumeric
	case "num":
	case "numeric": {
	    var charpos = objValue.value.search("[^0-9]");
	    if (objValue.value.length > 0 && charpos >= 0) {
		if (!strError || strError.length == 0) {
		    strError = "Only digits allowed " + "\n [Error character position " + eval(charpos + 1) + "]";
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// numeric
	case "alphabetic":
	case "alpha": {
	    var charpos = objValue.value.search("[^A-Za-z]");
	    if (objValue.value.length > 0 && charpos >= 0) {
		if (!strError || strError.length == 0) {
		    strError = "Only alphabetic characters allowed " + "\n [Error character position " + eval(charpos + 1) + "]";
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// alpha
	case "alnumhyphen": {
	    var charpos = objValue.value.search("[^A-Za-z0-9\-_]");
	    if (objValue.value.length > 0 && charpos >= 0) {
		if (!strError || strError.length == 0) {
		    strError = "characters allowed are A-Z,a-z,0-9,- and _" + "\n [Error character position " + eval(charpos + 1) + "]";
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}
	case "email": {
	    if (!validateEmail(objValue.value)) {
		if (!strError || strError.length == 0) {
		    strError = "Enter a valid Email address ";
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// case email
	case "lt":
	case "lessthan": {
	    if (isNaN(objValue.value)) {
		popmsg(objValue, "Should be a number ");
		return false;
	    }// if
	    if (eval(objValue.value) >= eval(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = "Value should be less than " + cmdvalue;
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// case lessthan
	case "gt":
	case "greaterthan": {
	    if (isNaN(objValue.value)) {
		popmsg(objValue, "Should be a number ");
		return false;
	    }// if
	    if (eval(objValue.value) <= eval(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = "Value should be greater than " + cmdvalue;
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// case greaterthan
	case "gteq":
	case "greaterthanequal": {
	    if (isNaN(objValue.value)) {
		popmsg(objValue, "Should be a number ");
		return false;
	    }// if
	    if (eval(objValue.value) < eval(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = "Value should be greater than or equal to" + cmdvalue;
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// case greaterthan
	case "chk": {
	    if (!strError || strError.length == 0) {
		strError = "Please wait while we verify your data :" + cmdvalue;
	    }
	    if (eval(objValue.value) == 0) {
		firechange(document.getElementsByName(cmdvalue)[0]);
		popmsg(objValue, strError);
		return false;
	    } else if (eval(objValue.value) == -1) {
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// case greaterthan
	case "regexp": {
	    if (!objValue.value.match(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = "Invalid characters found ";
		}// if
		popmsg(objValue, strError);
		return false;
	    }// if
	    break;
	}// case regexp
	case "dontselect": {
	    if (objValue.selectedIndex == null) {
		popmsg(objValue, "BUG: dontselect command for non-select Item");
		return false;
	    }
	    if (objValue.selectedIndex == eval(cmdvalue)) {
		if (!strError || strError.length == 0) {
		    strError = "Please Select one option ";
		}// if
		popmsg(objValue, strError);
		return false;
	    }
	    break;
	}// case dontselect
    }// switch
    return true;
}

function validateFormPop(objFrm, arrObjDesc) {
    var TxtFind = $('#xfind');
    var tname = TxtFind.length == 1 ? xfindsv[1] : "";

    $('#xfind').attr('name', "xfind");
    for ( var itrobj = 0; itrobj < arrObjDesc.length; itrobj++) {
	for ( var itrdesc = 0; itrdesc < arrObjDesc[itrobj].length; itrdesc++) {
	    fldobj = document.getElementsByName(arrObjDesc[itrobj][itrdesc][0])[0];
	    fldobj.value = trimme(fldobj.value);
	    if (validateDataPop(arrObjDesc[itrobj][itrdesc][1], fldobj,	arrObjDesc[itrobj][itrdesc][2]) == false) {
		fldobj.focus();
		if (TxtFind.length == 1)
		    TxtFind.attr('name', tname);
		return false;
	    }
	}
    }
    if (TxtFind.length == 1)
	TxtFind.attr('name', tname);
    return true;
}

function validateitem(fobj, arrObjDesc) {
    fobj.value = trimme(fobj.value);
    for (var i=0; i<arrObjDesc.length; i++) {
	if (!validateDataPop(arrObjDesc[i][1], fobj, arrObjDesc[i][2])) {
	    return false;
	}
    }
    return true;
}

function checkup(fobj, url) {
    var nm = fobj.name;
    document.getElementById(nm+'win').src = url;
    document.getElementById(nm+'progress').innerHTML = '<img src="/images/working.gif" width="16" height="16" />';
    document.getElementById('vet'+nm).value = -1;
}

function replycheck(fobj, response, show, msg) {
    var nm = fobj.name;
    if (response==true) {
	document.getElementById(nm+'progress').innerHTML = '<img src="/images/check.png" width="16" height="16" />';
	document.getElementById('vet'+nm).value = 1;
	awmHideMenu('fieldmsg');
    } else {
	document.getElementById(nm+'progress').innerHTML = '<img src="/images/cancel.png" width="16" height="16" />';
	document.getElementById('vet'+nm).value = 0;
	if (show) popmsg(fobj, msg);
    }
}
