/**
* Custom Properties for Joomla! 1.6.x
* @package Custom Properties
* @subpackage Module cp_search
* @version 2.0
* @revision $Revision: 1.2 $
* @author Andrea Forghieri
* @copyright (C) 2008-2011 Andrea Forghieri - http://www.solidsystem.it
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU/GPL version 2
*/

function cpOnSubmit(f, required, default_text, message){
	if(f.cp_text_search){
		if(f.cp_text_search.value == default_text) {
			f.cp_text_search.value = '';
		}
	}
	if(f.cp_dr_search_from && f.cp_dr_search_to){
		dateNow = Date.today();
		df = f.cp_dr_search_from;
		dt = f.cp_dr_search_to;
		if(df.value == df.defaultText){df.value = '';}
		if(dt.value == dt.defaultText){dt.value = '';}
		if( (df.value || dt.value) &&  df.bothDatesRequired){
			if(!df.value || !dt.value){
				if(df.bothDateMsg){
					alert(df.bothDateMsg);
				}
				else{
					alert('Both dates are required');
				}
				return false;
			}
		}
		if(df.value){
			dateFrom = Date.parseExact(df.value, 'yyyy-MM-dd');
			if(!dateFrom){
				if(df.invalidDateMsg){
					alert(df.invalidDateMsg);
				}
				else{
					alert('Start date is invalid');
				}
				return false;
			}
			if(dateFrom < dateNow){
				if(df.invalidStartMsg){
					alert(df.invalidStartMsg);
				}
				else{
					alert('Start date must be equal or greater than today');
				}
				return false;
			}
		}
		if(dt.value ){
			dateTo = Date.parseExact(dt.value, 'yyyy-MM-dd');
			if(!dateTo){
				if(df.invalidDateMsg){
					alert(df.invalidDateMsg);
				}
				else{
					alert('End date is invalid');
				}
				return false;
			}
			if(dateTo < dateNow){
				if(df.invalidEndMsg){
					alert(df.invalidEndMsg);
				}
				else{
					alert('End date must be equal or greater than today');
				}
				return false;
			}			
		}
		if(dt.value && df.value && dateFrom > dateTo){
			if(df.invalidRangeMsg){
				alert(df.invalidRangeMsg);
			}
			else{
				alert('Invalid date range. Start date must be lesser than end date');
			}
			return false;
		}

	}
	var notfilled = '';
	if(required){
		for(el in required){
			if(reqelem = f.elements[el]){
				if(reqelem.name){
					switch(reqelem.nodeName){
						case 'SELECT' :
							if(reqelem.selectedIndex == 0){
								notfilled += required[el] + ', ';
							}
							break;
						case 'INPUT' :
							if(reqelem.type == 'text'){
								if(reqelem.value == ''){
									notfilled += required[el] + ', ';
								}
							}
							break;
					}
				}
				else{
					isOk = false
					n = reqelem.length;
					for(i = 0; i < n; i++){
						if(reqelem[i].checked){
							isOk = true;
							break;
						}
					}
					if(! isOk){
						notfilled += required[el] + ', ';
					}
				}
			}
			else{
				continue;
			}
		}
	}
	if(notfilled){
		if(message.match(/%s/)){
			alert(message.replace('%s', notfilled.substr(0, notfilled.length -2)) );
		}
		else{
			alert(message + ': ' + notfilled.substr(0, notfilled.length -2));
		}

		return false;
	}
	f.submit();
}

function isIE(){
	return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
}

function cpCbToggler(el){
	if(el.id && el.id.indexOf('toggler_') == 0){
		var curState = el.checked; 
		var target_field = el.id.substr(8);
		var els = document.getElementsByName(target_field);
		n = els.length;
		for(i = 0; i < n; i++){
			els[i].checked = curState;
		}
	}
}
