function check_fields( str, btn ){
	if (str=='') return false;

		var ok=false;
	
		parts=str.split('|');
		for (var i=0; i<parts.length; i++){
			var el=document.getElementById(parts[i]);
			if (el)
				if (trimString(el.value)!='') ok=true;
		}
		
		if (ok==false) 	window.alert('Please enter one of the required fields.');

		return ok;
}
function clear_fields( str, btn ){
	if (str=='') return true;

		var ok=false;
	
		parts=str.split('|');
		for (var i=0; i<parts.length; i++){
			var el=document.getElementById(parts[i]);
			if (el)
				if (trimString(el.value)!='') ok=true;
		}

		if (ok==false){
			window.alert('Fields are already clear.');
			return false;
		}

		for (var i=0; i<parts.length; i++){
			var el=document.getElementById(parts[i]);
			if (el) {
				if (btn) {
					if (el.selectedIndex) el.selectedIndex=0;
					else if (el.value) el.value='';
				}
			}
		}

		//if (btn) {
			//btn.form.clear();
		//}
		return true;
}

function lock_onsubmit( submitit ){
		var wrt=document.getElementById('lock_me_onsubmit'); 
		if (wrt) {
			//wrt.disabled=true;
			var sform;
			var thisChild = wrt.firstChild;
			while ( thisChild != null )
			{
				if ( thisChild.nodeType == 1 )
				{
					if ((! sform)&& thisChild.form)
						sform=thisChild.form;
					thisChild.disabled=true;
				}
				thisChild = thisChild.nextSibling;
			} 
			if (submitit)
				if (sform) sform.submit();
			//wrt.style.display='none'; 
		}
		return true;
}

function docheck_submit( validation ){
	if (validate(validation)){
		lock_onsubmit(1);
		return true;
	} else {
		return false;
	}
}

function trimString( str ){
			str=str.replace(/^\s/g, '');
			str=str.replace(/\s$/g, '');
			return str;
}

function cleanTags( str ){
			str=str.replace(/<[^>]*>/g, '');
			str=str.replace(/&nbsp;/g, '');
			return str;
}

function validateEmail( str ){
	if (str.indexOf('@')<0) return false;
	if (str.indexOf('..')>=0) return false;
	if (str.indexOf('@.')>=0) return false;
	if (str.indexOf('.@')>=0) return false;

	parts=str.split('@');
	
	if (parts.length!==2) return false;
	if (parts[0].indexOf('.')==0) return false;
	if (parts[1].indexOf('.')<0) return false;
	
	str=str.toUpperCase();
	var isOk=0;
	for (var i=0; i<str.length; i++){
		isOk=0;
		var ch=str.charCodeAt(i);
		if ((ch >= 65)&&(ch <= 90)) isOk=1;
		if (isOk==0) {
			if ((ch >= 48)&&(ch <= 57)) isOk=1;					
		}
		if (isOk==0) {
			if ((ch == 45)||(ch == 46)||(ch == 64)||(ch == 95)) isOk=1;				
		}
		if (isOk==0) return false;
	}

	return true;	
}

function validateDate( str ){
	str=str.replace(/[^0-9\-]/g, '-');

	parts=str.split('-');
	
	if (parts.length!==3) return false;
	if (isNaN(parts[0])) return false;
	if (isNaN(parts[1])) return false;
	if ((parts[1]<1)||(parts[1]>12)) return false;
	if (isNaN(parts[2])) return false;
	if ((parts[2]<1)||(parts[2]>31)) return false;
	if (parts[0].length!==4) return false;

	return true;	
}
function validateDateMDY( str ){
	str=str.replace(/[^0-9\-]/g, '-');

	parts=str.split('-');
	
	if (parts.length!==3) return false;
	if (isNaN(parts[0])) return false;
	if ((parts[0]<1)||(parts[0]>12)) return false;
	if (isNaN(parts[1])) return false;
	if ((parts[1]<1)||(parts[1]>31)) return false;
	if (isNaN(parts[2])) return false;
	if (parts[2].length!==4) return false;

	return true;	
}
function validatePhone( str ){
	str=str.replace(/[^0-9\-]/g, '');
	parts=str.split('-');
	
	if (parts.length!==3) return false;
	if (isNaN(parts[0])) return false;
	if (isNaN(parts[1])) return false;
	if (isNaN(parts[2])) return false;
	if ((parts[0]<100)||(parts[0]>999)) return false;
	if (parts[1].length!==3) return false;
	if (parts[2].length!==4) return false;

	return true;	
}

function check_display( obj ){
		if (obj.style){
			if (obj.style.display){
				if (obj.style.display=='none') return 0;
			}
		}
	return 1;
}

function validate( validation ){
	if (validation=='') return true;
	var retval=true;
	fields = validation.split( '|' );
	for (var i=0; i < fields.length; i++) {      
		cfield=fields[i].split( '~' );
		//check out field value...
		obj=document.getElementById(cfield[0]);
		check_it=1;
		if (obj){
			if (obj.parentElement) {
				check_it=check_display(obj.parentElement);
				if (check_it && obj.parentElement.parentElement) check_it=check_display(obj.parentElement.parentElement);
			}
			var error='';
			if (check_it==0){
				//no check
			}else	if ((cfield[1]=='string')||(cfield[1]=='limitedstring')){
				obj.value=trimString(obj.value);
				if ((cfield[1]!='limitedstring')&&(obj.value=='')) error='Please insert a valid string value.';
				if (error==''){
					if (cfield[2]!=='') {
						if (obj.value.length>cfield[2]) error='Please insert a valid '+cfield[2]+' character(s) string value.';
					}
					if (cfield[3]!=='') {
						if (obj.value.length<cfield[3]) error='Please insert a valid string value with at least '+cfield[3]+' character(s).';
					}
				}
			} else if (cfield[1]=='fckeditor'){
				fck=getFCK(obj.name);
				if (fck) {
					obj.value=trimString(fck.GetHTML());
					value=cleanTags(obj.value);
				} else {
					obj.value=trimString(obj.value);
					value=obj.value;
				}
				if (obj.value=='') {
				}
				if (value=='') error='Please insert a valid string value.';
				if (error==''){
					if (cfield[2]!=='') {
						if (value.length>cfield[2]) error='Please insert a valid '+cfield[2]+' character(s) string value.';
					}
					if (cfield[3]!=='') {
						if (value.length<cfield[3]) error='Please insert a valid string value with at least '+cfield[3]+' character(s).';
					}
				}
			} else if (cfield[1]=='email'){
				obj.value=trimString(obj.value);
				if (validateEmail(obj.value)==false)
					error='Please insert a valid Email address.';
			} else if (cfield[1]=='phone'){
				obj.value=trimString(obj.value);
				if (validatePhone(obj.value)==false)
					error='Please insert a valid Phone Number (i.e. 952-835-6511).';
			} else if (cfield[1]=='security'){
				obj.value=trimString(obj.value);
				if (obj.value=='') error='Please insert the valid security value, as you can see in above box.';
				if (error=='') 
					if (obj.value.length<5) error='Please insert the valid security value, as you can see in above box.';
			} else if (cfield[1]=='number'){
				if (isNaN(obj.value)) error='Please insert a valid numeric value.';
				if (error==''){
					obj.value=Number(obj.value);
					var emax='';
					var emin='';
					if (cfield[2]!=='') emax=Number(cfield[2]);
					if (cfield[3]!=='') emin=Number(cfield[3]);
					if ( obj.value <= emax ) emax='';
					if ( obj.value >= emin ) emin='';
					if ((emax!=='')&&(emin!==''))
						error='Please insert a valid numeric value between '+emin+' and '+emax+'.';
					else if (emax!=='')
						error='Please insert a valid numeric value equal to '+emax+' or smaller.';
					else if (emin!=='')
						error='Please insert a valid numeric value equal to  '+emin+' or greater.';
				}
			} else if (cfield[1]=='date'){
				var subobj=document.getElementById(cfield[0]+'_el0');
				if (cfield[2]=='MDY') {
					if (subobj) obj.value=subobj.value+'-'+document.getElementById(cfield[0]+'_el1').value+'-'+document.getElementById(cfield[0]+'_el2').value;
					if (validateDateMDY(obj.value)==false) error='Please insert a valid Date value.';
				} else {
					if (subobj) obj.value=document.getElementById(cfield[0]+'_el0').value+'-'+subobj.value+'-'+document.getElementById(cfield[0]+'_el2').value;
					if (validateDate(obj.value)==false) error='Please insert a valid Date value.';
				}
			} else if (cfield[1]=='answer'){
				obj.value=trimString(obj.value);
				if (obj.value=='') error='Please choose a valid answer.';
				if (error==''){
					if (cfield[2]=='number') {
						if (isNaN(obj.value)) 
							error='Please choose a valid answer.';
						else if(cfield[3]!=='') {
							if (obj.value<Number(cfield[3])) error='Please choose a valid answer.';
						}
					}	
				}
			} 
			
		}
		if (error!=='') retval=false;
			
		obj_div=document.getElementById('iv_'+cfield[0]);
		if (obj_div){
			obj_msg=document.getElementById('msg_'+cfield[0]);
			if (obj_msg) obj_msg.innerHTML='<img src="images/qst9.gif" border="0" class="abs-middle" alt="" />'+error;

			if (error!==''){
				if (obj_div.className!=='error') obj_div.className='error';
				if (obj_msg) if (obj_msg.style.display!=='block') obj_msg.style.display='block';
			} else {
				if (obj_msg) if (obj_msg.style.display=='block') obj_msg.style.display='none';
				if (obj_div.className=='error') obj_div.className='';
			}
		} 

	}
	if (retval==false) window.alert('Please correct the incomplete field(s) and try again.');
	return retval;
}