function isValidImage(fileName, imageExtArray) {
    for (var k=0; k<imageExtArray.length; k++) {
    	if (fileName.toLowerCase().substring(fileName.length-3) == imageExtArray[k]) {
			return true;
		}
	}
	return false;
}

function isValidMedia(fileName, videoExtArray) {
    for (var k=0; k<videoExtArray.length; k++) {
    	if (fileName.toLowerCase().substring(fileName.length-3) == videoExtArray[k]) {
			return true;
		}
	}
	return false;
}

function foundForbiddenChar(value) {
    var rc = false;
    
    if(value.indexOf("<") > -1 ||
       value.indexOf(">") > -1 ||
       value.indexOf("\<") > -1 ||
       value.indexOf("\>") > -1 ||
       value.indexOf("\\") > -1 )
    {
        rc = true;
    }
    
    return rc;
}

function trim(str) { 
	return str.replace(/^\s+|\s+$/, ''); 
}


function validate(frm) {
    
    var reqFields = frm.required.value;
	var reqFldArray = reqFields.split(",");
	var attachFldArray = new Array();
	var allowTagsArray = new Array();
	var imageFldArray = new Array();
	var videoFldArray = new Array();
	var imageExtArray = new Array();
	var videoExtArray = new Array();
	var imageReqArray = new Array();
	var videoReqArray = new Array();

	if (frm.attachments) {
		attachFldArray = frm.attachments.value.split(",");
	}
	if (frm.allowTags) {
		allowTagsArray = frm.allowTags.value.split(",");
	}
	if (frm.images) {
		imageFldArray = frm.images.value.split(",");
	}
	if (frm.video) {
		videoFldArray = frm.video.value.split(",");
	}
	if (frm.imageExt) {
		imageExtArray = frm.imageExt.value.split(",");
	}
	if (frm.videoExt) {
		videoExtArray = frm.videoExt.value.split(",");
	}
	if (frm.imageRequired) {
		imageReqArray = frm.imageRequired.value.split(",");
	}
	if (frm.videoRequired) {
		videoReqArray = frm.videoRequired.value.split(",");
	}

	for (var i=0; i<frm.elements.length; i++) {
		
		var elementName = "";
		var nameArray = frm.elements[i].name.split("_");
		for (var k=0; k<nameArray.length; k++) {
			elementName = elementName + " " + nameArray[k].charAt(0).toUpperCase() + nameArray[k].substring(1);
		}
		elementName = elementName.substring(1);

		for (var j=0; j<reqFldArray.length; j++) {
			if (reqFldArray[j] == frm.elements[i].name && trim(frm.elements[i].value) == "") {
		    	alert("Please include " + elementName + " when contacting us.");
		    	frm.elements[i].focus();
		    	//frm.elements[i].select();
		    	return false;
			}
		}

	    if(foundForbiddenChar(frm.elements[i].value)) {
	    	$check = "true";
			for (var k=0; k<attachFldArray.length; k++) {
				if (attachFldArray[k] == frm.elements[i].name) {
					$check = "false";
				}
	    	}
			for (var k=0; k<allowTagsArray.length; k++) {
				if (allowTagsArray[k] == frm.elements[i].name) {
					$check = "false";
				}
	    	}
		    if ($check == "true") {
				alert("Please remove all of the following characters from " + elementName + ": <, >, \\");
		    	frm.elements[i].focus();
		    	//frm.elements[i].select();
				return false;
	    	}
	    }
	    
		if (trim(frm.elements[i].value) != "") {
			var fileCheck = "false";
		    for (var k=0; k<imageFldArray.length; k++) {
				if (imageFldArray[k] == frm.elements[i].name) {
					if (imageReqArray[k]) {
						imageReqArray1 = imageReqArray[k].split("|");
					
						for (var m=0; m<imageReqArray1.length; m++) {
							if (trim(frm[imageReqArray1[m]].value) == "") {
								var imageNameArray = imageReqArray1[m].split("_");
								var imageReqName = "";
								for (var l=0; l<imageNameArray.length; l++) {
									imageReqName = imageReqName + " " + imageNameArray[l].charAt(0).toUpperCase() + imageNameArray[l].substring(1);
								}
								imageReqName = imageReqName.substring(1);
								alert("Please include " + imageReqName + " when " + elementName + " is uploaded.");
								frm[imageReqArray1[m]].focus();
								//frm[imageReqArray1[m]].select();
								return false;
							}
						}
					}
					fileCheck = "true";
				}
	    	}
			
		    if (fileCheck == "true") {
		    	if (!isValidImage(frm.elements[i].value, imageExtArray)) {
					alert("Please upload a valid image file for " + elementName + ". \r\nImage files with the following extensions can only be uploaded: " + frm.imageExt.value);
			    	frm.elements[i].focus();
			    	//frm.elements[i].select();
			    	return false;
			    }
			}
		}
		
		if (trim(frm.elements[i].value) != "") {
			var fileCheck = "false"; 
		    for (var k=0; k<videoFldArray.length; k++) {
				if (videoFldArray[k] == frm.elements[i].name) {
					if (trim(frm[videoReqArray[k]].value) == "") {
						var videoNameArray = videoReqArray[k].split("_");
						var videoReqName = "";
						for (var l=0; l<videoNameArray.length; l++) {
							videoReqName = videoReqName + " " + videoNameArray[l].charAt(0).toUpperCase() + videoNameArray[l].substring(1);
						}
						videoReqName = videoReqName.substring(1);
				    	alert("Please include " + videoReqName + " when " + elementName + " is uploaded.");
				    	frm[videoReqArray[k]].focus();
				    	//frm[videoReqArray[k]].select();
				    	return false;
					}
					fileCheck = "true";
				}
	    	}
			
		    if (fileCheck == "true") {
		    	if (!isValidMedia(frm.elements[i].value, videoExtArray)) {
					alert("Please upload a valid file for " + elementName + ". \r\nFiles with the following extensions can only be uploaded: " + frm.videoExt.value);
			    	frm.elements[i].focus();
			    	//frm.elements[i].select();
			    	return false;
			    }
			}
			
		}
	}
	
}
