var isIE = navigator.appName.indexOf("Microsoft") > -1 ? true : false;

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };

function trim(v)
{
	return v.replace(/^\s+|\s+$/g, "");
}

function clean_phone_number(number)
{
	return number.replace(/[^0-9]/g, '');
}

function validate_phone_number(value, empty_result)
{
	if (empty_result == null) empty_result = true;
	if (value == '') return empty_result;
	return !(isNaN(value) || value.length != 10);
}

function format_phone_number(value)
{
	var clean_value = clean_phone_number(value);
	if (validate_phone_number(clean_value, false))
	{
		return '(' + clean_value.substr(0, 3) + ') ' + clean_value.substr(3, 3) + '-' + clean_value.substr(6, 4);
	}
	else
	{
		return value;
	}
}

function validate_email(value, empty_result)
{
	if (empty_result == null) empty_result = false;
	if (value == '') return empty_result;
	return isValidEmail(value);
}

function validate_zip_code(value, empty_result)
{
	if (empty_result == null) empty_result = false;
	if (value == '') return empty_result;
	return !(isNaN(value) || value.length != 5);
}

function validate_integer(value, empty_result)
{
	if (empty_result == null) empty_result = false;
	if (value == '') return empty_result;
	var integer_regex = new RegExp(/^-?\d+$/);
	return integer_regex.test(value);
}

function validate_money(value, empty_result)
{
	if (empty_result == null) empty_result = true;
	if (value.empty()) return empty_result;
	var money_regex = new RegExp(/^\$?[0-9\,]+(\.\d{2})?$/);
	return money_regex.test(value);
}

function validate_date(value, empty_result)
{
	if (empty_result == null) empty_result = false;
	if (value == '') return empty_result;

	var dateObject = new Object();

	dateObject.year = 0;
	dateObject.month = 0;
	dateObject.day = 0;

	return isValidDate(value, dateObject);
}

function isLeapYear(aYear)
{
	return (((aYear % 4 == 0) && (aYear % 100 != 0)) || (aYear % 400 == 0)) ? true : false;
}

function isValidDate(dateString, dateObj)
{
	ajax = new Ajax.Request('../lib/utility.php', {
		asynchronous: false,
		method: 'get',
		eval: false,
		parameters: {
			action: 'isvaliddate',
			datestring: dateString
		}
	});
	
	if (ajax.transport.responseText == 'false')
	{
		return false;
	}

	var theDate = new Date(ajax.transport.responseText);
	dateObj.year = theDate.getFullYear();
	dateObj.month = theDate.getMonth() + 1;
	dateObj.day = theDate.getDate();
	
	if (dateObj.year == 0 || dateObj.month == 0 || dateObj.day == 0)
	{
		return false;
	}
	
	return true;
}

function isValidEmail(email)
{
	ajax = new Ajax.Request('../lib/utility.php', {
		asynchronous: false,
		method: 'get',
		eval: false,
		parameters: {
			action: 'isvalidemail',
			email: email
		}
	});
	
	return ajax.transport.responseText == 'true';
	
	/*
	var req = new Request();
	var request = "../lib/utility.php?action=isvalidemail&email=" + email;
	var result = req.squery(request);
	return result == 'true';
	*/
}

function setSelectedItem(list, item)
{
	for (i = 0; i < list.options.length; i++)
	{
		if (list.options[i].value == item)
		{
			list.options[i].selected = true;
			break;
		}
	}
}

function getSelectedItemText(list, item)
{
	var itemText = '';
	
	for (i = 0; i < list.options.length; i++)
	{
		if (list.options[i].value == item)
		{
			itemText = list.options[i].text;
			break;
		}
	}
	
	return itemText;
}

function hide(element)
{
	$(element).style.display = 'none';
}

function show(element, style)
{
	if (style == null)
	{
		style = 'block';
	}
	
	$(element).style.display = style;
}

function ajaxQuery(request, async)
{
	if (async == null)
	{
		async = true;
	}
	
	if (isDebug)
	{
		alert(request);
	}
	
	var ajax = new Request();
	if (async)
	{
		ajax.query(request, function(){processResults(ajax)});
	}
	else
	{
		eval(ajax.squery(request));
	}
}

function processResults(ajax)
{
	var response = ajax.response();
	
	if (isDebug)
	{
		alert(response);
	}
	
	eval(response);
}

function processZipSearch(ajax)
{
	var responseXML = ajax.responseXML();
	var response = responseXML.documentElement;
	var isNewZip = response.getElementsByTagName('NewZip')[0].firstChild.data == 'true';

	if (isNewZip)
	{
		$('NewZip').value = 'true';
		$('City').focus();
		$('City').select();
	}
	else
	{
		var city = response.getElementsByTagName('City')[0].firstChild.data;
		var state = response.getElementsByTagName('State')[0].firstChild.data;
		$('NewZip').value = 'false';
		$('City').value = city;
		setSelectedItem($('State'), state);
		setColor($('State'));
		$('Phone1').focus(); 
	}
}

function zipSearch()
{
	isZipError = false;
	isZipMessageDone = false;
	
	var zipcode = $('Zip').value;
	
	if (zipcode == '')
	{
		return false;
	}
	
	if (isNaN(zipcode))
	{
		isZipError = true;
		return false;
	}

	var zipcode = $('Zip').value;
	var request = 'zipCode.php?action=search&zipcode=' + zipcode;
	var ajax = new Request();
	ajax.query(request, function(){processZipSearch(ajax)});
}

function zipInsert()
{
	var zipcode = $('Zip').value;
	var city = $('City').value;
	var state = $('State').value;
	
	var request = 'zipCode.php?action=insert&zipcode=' + zipcode + '&city=' + city + '&state=' + state;
	ajaxQuery(request);
}

function change_height(element_name, increase, delta)
{
	delta = increase ? delta : delta * -1;
	var height = $(element_name).style.height;
	height = height.substring(0, height.length - 2);
	height = parseInt(height, 10) + delta;
	$(element_name).style.height = height + 'px';
}

function is_numeric(value)
{
	if (typeof value == 'string') value.trim();
	return (typeof value != "boolean") && (value !== null) && (value != '') && !isNaN(+ value);
}

function date_object(year, month, day)
{
	this.year = year;
	this.month = month;
	this.day = day;
}

function calc_age(date_of_birth, cut_off_date)
{
	var age = 0;
	
	if (date_of_birth == '' || cut_off_date == '') return age;
	
	var dob = new date_object(0, 0, 0);
	var cod = new date_object(0, 0, 0);
	
	if (isValidDate(date_of_birth, dob) && isValidDate(cut_off_date, cod))
	{
		var age = cod.year - dob.year;
		if (dob.month > cod.month || (dob.month == cod.month && dob.day > cod.day))
		{
			age--;
		}
	}
	
	return age;
}

function update_player_age()
{
	var date_of_birth = $('DateOfBirth').value.trim();
	var cut_off_date = $('CutOffDate').innerHTML;
	var age = calc_age(date_of_birth, cut_off_date);
	$('PlayerAge').innerHTML = age;
}

function set_season(season_id)
{
	new Ajax.Request('/lib/set_season.php', {
		method: 'post',
		parameters: {
			season_id: season_id
		}
	});
}