/*
	$Header: /xxx/cvc_checkForm.js,v 1.3 2009/03/18 20:54:45 tngsandiego Exp $

	CaViCcHi check Form: Copyright 2009

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.\

	=== New in 1.3 - 2009
	- Added minMaxFloat
	- Added background Change AFTER|BEFORE

	=== New in 1.2 - 2009/03/17:
	- Added the field CVC_mFields_customMsg['XXX'] value of which will be shown as ERROR message in case an action won't be valid [NOT valid for STRCMP], syntax: CVC_mFields_customMsg['FIELD_NAME(str)']

	=== New in 0.8.3 - 2009/02/17:
	- Added val function, check if the result is NOT 0
	- Added ext function, check the extensions in a file field and compare them to the array inside CVC_mFields_extForFiles and show the message CVC_mFields_msgForFiles

	=== New in 0.8.2 - 2008/12/10:
	- Added @ support, check if is evalued

	=== New in 0.8.1 - 2008/10/18:
	- Added support nested for radiobutton check

*/
function CVCmFieldsCheck(formname){var problems='';var mailExp=new RegExp("^[a-zA-Z0-9_.-]{1,}\@[a-zA-Z0-9-.]{2,}\\.[a-zA-Z.]{1,}$");var isNumeric=new RegExp("^[0-9]{1,}$");var isFloat=new RegExp("^[0-9.]{1,}$");var tmpBorder=Array();var tmpBackground=Array();if(eval(document.forms[formname].elements['CVC_mFields_border'])){tmpBorder=document.forms[formname].elements['CVC_mFields_border'].value.split("|");var enableBorder=true;var beforeBorder=Array();var afterBorder=Array();beforeBorder=tmpBorder[1].split(",");afterBorder=tmpBorder[0].split(",");}else if(eval(document.forms[formname].elements['CVC_mFields_background'])){tmpBackground=document.forms[formname].elements['CVC_mFields_background'].value.split("|");var enableBackground=true;var beforeBackground=Array();var afterBackground=Array();beforeBackground=tmpBackground[1];afterBackground=tmpBackground[0];}else{var enableBorder=false;}if(document.forms[formname].elements['CVC_mFields'].value.length>2){var fieldsType=Array();var functions=Array();var tmpStuff=Array();var tmpElements=Array();var tmpExtensions=Array();var tmpVals=Array();var skipThisIfNotEval=false;fieldsType=document.forms[formname].elements['CVC_mFields'].value.split("*");for(j=0;j<fieldsType.length;j++){tmpStuff=fieldsType[j].split("|",2);tmpElements=tmpStuff[1].split(",");if(tmpElements.length<1){problems="ERROR: Configuration for section "+tmpStuff[0];return false;}if(isNumeric.test(tmpStuff[0])){for(k=0;k<tmpElements.length;k++){if(tmpElements[k].substr(0,1)=="@"){tmpElements[k]=tmpElements[k].substr(1);skipThisIfNotEval=true;}var newString=tmpElements[k].replace("form_","");if(!eval(document.forms[formname].elements[tmpElements[k]])){alert("Error: Are you sure about this item: '"+tmpElements[k]+"'?\ncause I am really not sure it is part of the form...");return false;}if(document.forms[formname].elements[tmpElements[k]].value==undefined&&document.forms[formname].elements[tmpElements[k]].length!=undefined){var checkRadio=false;for(g=0;g<document.forms[formname].elements[tmpElements[k]].length;g++){if(document.forms[formname].elements[tmpElements[k]][g].checked){checkRadio=true;break;}}if(checkRadio==false){if(eval(document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"])){problems+="- "+document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"].value+'\n';}else{problems+='- Missing '+newString.replace("_"," ")+'\n';}}}else if(document.forms[formname].elements[tmpElements[k]].value.length<tmpStuff[0]&&(document.forms[formname].elements[tmpElements[k]].value.length!=0||!skipThisIfNotEval)){if(eval(document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"])){problems+="- "+document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"].value+'\n';}else{if(!eval(document.forms[formname].elements['CVC_mFields_giveInfoFields'])){problems+='- The '+newString.replace("_"," ")+' string should be at least '+tmpStuff[0]+' characters long\n';}else{problems+='- Incorrect '+newString.replace("_"," ")+'\n';}}if(enableBorder)giveFocus(document.forms[formname].elements[tmpElements[k]],beforeBorder,afterBorder);if(enableBackground)giveBg(document.forms[formname].elements[tmpElements[k]],beforeBackground,afterBackground);}skipThisIfNotEval=false;newString=null;}tmpElements=Array();}else{switch(tmpStuff[0]){case'email':for(k=0;k<tmpElements.length;k++){if(!mailExp.test(document.forms[formname].elements[tmpElements[k]].value)){if(eval(document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"])){problems+="- "+document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"].value+'\n';}else{problems+='- Invalid E-Mail format\n';}if(enableBorder)giveFocus(document.forms[formname].elements[tmpElements[k]],beforeBorder,afterBorder);if(enableBackground)giveBg(document.forms[formname].elements[tmpElements[k]],beforeBackground,afterBackground);}}break;case'strcmp':var newString=tmpElements[0].replace("form_","");var newString1=tmpElements[1].replace("form_","");if(document.forms[formname].elements[tmpElements[0]].value!=document.forms[formname].elements[tmpElements[1]].value){problems+='- The two fields '+newString.replace("_"," ")+' and '+newString1.replace("_"," ")+' don\'t match!\n';if(enableBorder)giveFocus(document.forms[formname].elements[tmpElements[0]],beforeBorder,afterBorder);if(enableBorder)giveFocus(document.forms[formname].elements[tmpElements[1]],beforeBorder,afterBorder);if(enableBackground)giveFocus(document.forms[formname].elements[tmpElements[0]],beforeBackground,afterBackground);if(enableBackground)giveFocus(document.forms[formname].elements[tmpElements[1]],beforeBackground,afterBackground);}break;case'val':for(k=0;k<tmpElements.length;k++){if(parseInt(document.forms[formname].elements[tmpElements[k]].value)==0){var newString=tmpElements[k].replace("form_","");if(eval(document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"])){problems+="- "+document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"].value+'\n';}else{problems+='- Missing '+newString.replace("_"," ")+'\n';}if(enableBorder)giveFocus(document.forms[formname].elements[tmpElements[k]],beforeBorder,afterBorder);if(enableBackground)giveBg(document.forms[formname].elements[tmpElements[k]],beforeBackground,afterBackground);}}break;case'ext':tmpExtensions=document.forms[formname].elements['CVC_mFields_extForFiles'].value.split(",");var errorSentence=document.forms[formname].elements['CVC_mFields_msgForFiles'].value+'\n';for(k=0;k<tmpElements.length;k++){extension_found:do{for(l=0;l<tmpExtensions.length;l++){if(document.forms[formname].elements[tmpElements[k]].value.substring(parseInt(document.forms[formname].elements[tmpElements[k]].value.length-tmpExtensions[l].length))==tmpExtensions[l])break extension_found;}var newString=tmpElements[k].replace("form_","");problems+='- Error uploading '+newString.replace("_"," ")+', '+errorSentence+' \n';if(enableBorder)giveFocus(document.forms[formname].elements[tmpElements[k]],beforeBorder,afterBorder);if(enableBackground)giveBg(document.forms[formname].elements[tmpElements[k]],beforeBackground,afterBackground);}while(0);}break;case'minMaxFloat':for(k=0;k<tmpElements.length;k++){do{var newString=tmpElements[k].replace("form_","");tmpVals=document.forms[formname].elements["CVC_mFields_minMaxFloat['"+tmpElements[k]+"']"].value.split("|");if(parseFloat(document.forms[formname].elements[tmpElements[k]].value)>=parseFloat(tmpVals[0])){if(isFloat.test(tmpVals[1])){if(!(parseFloat(document.forms[formname].elements[tmpElements[k]].value)<=parseFloat(tmpVals[1]))){if(eval(document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"])){problems+="- "+document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"].value+'\n';}else{problems+='- Error value '+newString.replace("_"," ")+'\n';}if(enableBorder)giveFocus(document.forms[formname].elements[tmpElements[k]],beforeBorder,afterBorder);if(enableBackground)giveBg(document.forms[formname].elements[tmpElements[k]],beforeBackground,afterBackground);}}}else{if(eval(document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"])){problems+="- "+document.forms[formname].elements["CVC_mFields_customMsg['"+tmpElements[k]+"']"].value+'\n';}else{problems+='- Error value '+newString.replace("_"," ")+'\n';}if(enableBorder)giveFocus(document.forms[formname].elements[tmpElements[k]],beforeBorder,afterBorder);if(enableBackground)giveBg(document.forms[formname].elements[tmpElements[k]],beforeBackground,afterBackground);}tmpVals=Array();}while(0);}break;default:problems+="WARNING: What is "+tmpStuff[0]+"??\n";break;}}}}if(problems.length>0){alert(problems);return false;}return true;}function deFocus(obj,beforeBorder){var tmpVal=beforeBorder[1]+"px solid #"+beforeBorder[2];if(beforeBorder[0]=='all'){var border="border";}else{var border="border"+_ucfirst(beforeBorder[0]);}eval("obj.style."+border+"='"+tmpVal+"'");obj.onfocus=function(){};}function giveFocus(obj,beforeBorder,afterBorder){var tmpVal=afterBorder[1]+"px solid #"+afterBorder[2];if(afterBorder[0]=='all'){var border="border";}else{var border="border"+_ucfirst(afterBorder[0]);}eval("obj.style."+border+"='"+tmpVal+"'");obj.onfocus=function(){deFocus(obj,beforeBorder)};}function giveBg(obj,beforeBackground,afterBackground){var tmpVal="#"+afterBackground;eval("obj.style.backgroundColor='"+tmpVal+"'");obj.onfocus=function(){deBg(obj,beforeBackground)};}function deBg(obj,beforeBackground){var tmpVal="#"+beforeBackground;eval("obj.style.backgroundColor='"+tmpVal+"'");obj.onfocus=function(){};}function _ucfirst(str){var f=str.charAt(0).toUpperCase();return f+str.substr(1,str.length-1);}