//scripts.js
//Generic scripts used across the site

//dom:loaded observer to execute scripts after the dom has loaded
$(document).ready(function() {
	//Round Corners
	$('.roundcorners, .roundcorners-thin').corner();
	$('.roundcorners-top').corner('top');
	$('.roundcorners-bottom').corner('bottom');
	$('.roundcorners-left').corner('tl bl');
	$('.roundcorners-right').corner('tr br');
	//End Round Corners

	//Lightbox
	$('.lightbox').lightbox();
	//End Lightbox

	//No Spam
	$('a.email').nospam({ replaceText: true });
	//End No Spam
});

//validateForm function
function validateForm(formElem) {
	var reqElems = $('[required="true"]');
	var validated = true;
	var msg = 'Please enter a value for the following fields:\n';

	jQuery.each(reqElems, function(elemIndex, elem){
		switch($(elem).attr('type')){
			case 'select-one':
				if(($(elem).val() == '' || $(elem).val() == 'Select') && ($(elem).find(':selected').text() != 'General School Account')) {
					validated = false;
					msg += $(elem).attr('title') + '\n';
				}
				break;
			case 'hidden':
			case 'text':
				if($(elem).val() == '') {
					validated = false;
					msg += $(elem).attr('title') + '\n';
				}
				break;
			case 'textarea':
				if($(elem).val() == '') {
					validated = false;
					msg += $(elem).attr('title') + '\n';
				}
				break;
			case 'radio':
				var tempValid = false;
				jQuery.each($('[name='+$(elem).attr('name')+']'), function(checkElemIndex, checkElem){
					if($(checkElem).attr('checked') == 'checked'){
						tempValid = true;
					}
				});
				if(tempValid == false){
					validated = false;
					msg += $(elem).attr('title') + '\n';
				}
				break;
			case 'checkbox':
				//Technically, we don't use required fields for checkboxes
				//However, we can support some requirement of grouped checkboxes, and the user must select one more more of the checkboxes within the group.
				var tempValid = false;
				jQuery.each($('[group='+$(elem).attr('group')+']'), function(checkElemIndex, checkElem){
					if($(checkElem).attr('checked') == 'checked'){
						tempValid = true;
					}
				});

				if(tempValid == false){
					validated = false;
					msg += $(elem).attr('title') + ' (Check one or more)\n';
				}
				break;
		}//End switch
	});//End each

	//Check Dates
	date1elem = typeof document.getElementsByName('date1')[0];
	date2elem = typeof document.getElementsByName('date2')[0];
	if(date1elem != 'undefined' && date2elem != 'undefined'){//If we have dates
		date1elem = document.getElementsByName('date1')[0].value;
		date2elem = document.getElementsByName('date2')[0].value;
		date1cmp = date1elem.substring(0, 4) + date1elem.substring(5, 7) + date1elem.substring(8, 10);
		date2cmp = date2elem.substring(0, 4) + date2elem.substring(5, 7) + date2elem.substring(8, 10);
		if(date1cmp > date2cmp){ //If the start date is after the end date
			validated = false;
			msg = 'Start date cannot be after end date.\n';
		}
	}

	if(validated == false) {
		alert(msg);
	}

	return validated;
}

