﻿var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var MONTHS_SHORT = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"];
var DAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var DAYS_SHORT = ["Sun", "Mon", "Tues", "Weds", "Thurs", "Fri", "Sat"];

var now = new Date();
now.setTime(Date.parse("May 14, 2005 14:00:00"));
var dateNow = new Date();
var dateLocalTime = dateNow.getTime();
var dateLocalOffset = dateNow.getTimezoneOffset() * 60000;

function DateFormat(dt, format)
{
	if (!isDefined(format)) format = "Dddd, Mmmm d, yyyy";
	var r = format;
	// Day of week
	r = r.replace(/Dddd/g, DAYS[dt.getDay()]);
	r = r.replace(/DDDD/g, DAYS[dt.getDay()].toUpperCase());
	r = r.replace(/dddd/g, DAYS[dt.getDay()].toLowerCase());
	r = r.replace(/Ddd/g, DAYS_SHORT[dt.getDay()]);
	r = r.replace(/DDD/g, DAYS_SHORT[dt.getDay()].toUpperCase());
	r = r.replace(/ddd/g, DAYS_SHORT[dt.getDay()].toLowerCase());
	// Day of month
	r = r.replace(/dd/g, (dt.getDate() < 10) ? '0' + dt.getDate().toString() : dt.getDate().toString());
	r = r.replace(/DAY/g, '%AY').replace(/day/g, '%ay');
	r = r.replace(/WEDS/g, 'WE%S').replace(/Weds/g, 'We%s').replace(/weds/g, 'we%s');
	r = r.replace(/d/g, dt.getDate().toString());
	r = r.replace(/%AY/g, 'DAY').replace(/%ay/g, 'day');
	r = r.replace(/WE%S/g, 'WEDS').replace(/We%s/g, 'Weds').replace(/we%s/g, 'weds');
	// Month
	r = r.replace(/Mmmm/g, MONTHS[dt.getMonth()]);
	r = r.replace(/Mmmm/g, MONTHS[dt.getMonth()].toUpperCase());
	r = r.replace(/mmmm/g, MONTHS[dt.getMonth()].toLowerCase());
	r = r.replace(/Mmm/g, MONTHS_SHORT[dt.getMonth()]);
	r = r.replace(/MMM/g, MONTHS_SHORT[dt.getMonth()].toUpperCase());
	r = r.replace(/mmm/g, MONTHS_SHORT[dt.getMonth()].toLowerCase());
	r = r.replace(/mm/g, (dt.getMonth() + 1 < 10) ? '0' + (dt.getMonth() + 1).toString() : (dt.getMonth() + 1).toString());
	r = r.replace(/MON/g, '%ON').replace(/Mon/g, '%On').replace(/mon/g, '%on').replace(/mber/g, '%ber');
	r = r.replace(/m/g, (dt.getMonth() + 1).toString());
	r = r.replace(/%ON/g, 'MON').replace(/%On/g, 'Mon').replace(/%on/g, 'mon').replace(/%ber/g, 'mber');
	// Year
	r = r.replace(/yyyy/g, dt.getFullYear().toString());
	r = r.replace(/yy/g, dt.getFullYear().toString().substr(2));
	// return
	return r;
}

function TimeFormat(dt, format)
{
	if (!isDefined(format)) format = "HH:mm";
	var r = format;
	r = r.replace(/HH/g, (dt.getHours() < 10) ? '0' + dt.getHours().toString() : dt.getHours().toString());
	r = r.replace(/H/g, dt.getHours().toString());
	r = r.replace(/hh/g, ((dt.getHours() % 12) < 10 && (dt.getHours() % 12) > 0) ? '0' + (dt.getHours() % 12).toString() : (dt.getHours() % 12 == 0 ? 12 : dt.getHours() % 12).toString());
	r = r.replace(/h/g, (dt.getHours() % 12 == 0 ? 12 : dt.getHours() % 12).toString());
	r = r.replace(/mm/g, (dt.getMinutes() < 10) ? '0' + dt.getMinutes().toString() : dt.getMinutes().toString());
	r = r.replace(/m/g, dt.getMinutes().toString());
	r = r.replace(/ss/g, (dt.getSeconds() < 10) ? '0' + dt.getSeconds().toString() : dt.getSeconds().toString());
	r = r.replace(/s/g, dt.getSeconds().toString());
	r = r.replace(/Tt/g, (dt.getHours() < 12) ? 'Am' : 'Pm');
	r = r.replace(/tT/g, (dt.getHours() < 12) ? 'aM' : 'pM');
	r = r.replace(/TT/g, (dt.getHours() < 12) ? 'AM' : 'PM');
	r = r.replace(/T/g, (dt.getHours() < 12) ? 'A' : 'P');
	r = r.replace(/tt/g, (dt.getHours() < 12) ? 'am' : 'pm');
	r = r.replace(/t/g, (dt.getHours() < 12) ? 'a' : 'p');
	// return
	return r;
}

function getURL(s)
{
	document.location = s.toString();
}

function getRadioValue(o)
{
	if (typeof (o.length) == "undefined" && o.checked)
		return o.value;
	for (var i = 0; i < o.length; i++)
	{
		if (o[i].checked) return o[i].value;
	}
	return null;
}

function getCheckBoxValuesAsString(o)
{
	if (typeof (o.length) == "undefined" && o.checked)
		return o.value;
	var sValues = "";
	for (var i = 0; i < o.length; i++)
	{
		if (o[i].checked)
		{
			if (sValues.length) sValues += ",";
			sValues += o[i].value;
		}
	}
	return sValues;
}

function isDefined(o)
{
	return !(typeof (o) == "undefined");
}

function popUp(theURL, winname, width, height)
{
	if (typeof (winname) == "undefined" || winname.length == 0) winname = "_blank";
	if (typeof (width) == "undefined" || width == 0) width = 600;
	if (typeof (height) == "undefined" || height == 0) height = 500;
	var w = open(theURL, winname, "width=" + width.toString() + ",height=" + height.toString() + ",toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1");
	w.focus();
}

function popUpNoScroll(theURL, winname, width, height)
{
	if (typeof (winname) == "undefined" || winname.length == 0) winname = "_blank";
	if (typeof (width) == "undefined" || width == 0) width = 600;
	if (typeof (height) == "undefined" || height == 0) height = 500;
	var w = open(theURL, winname, "width=" + width.toString() + ",height=" + height.toString() + ",toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1");
	w.focus();
}

function popUpAgreement()
{
	popUp("/readme.aspx", "Agreement", 940, 500);
}

// USER FUNCTIONS
// WebsiteUserService

function AcceptTerms()
{
	WebsiteUserService.AcceptTerms(AcceptTermsCallback);
}

function AcceptTermsCallback(r)
{
	if (r.Message.length) alert(r.Message);
	if (r.Success)
	{
		document.location = "/";
	}
}

function Login(sEmail, sPassword, fCallback)
{
	if (!isDefined(fCallback)) fCallback = LoginCallback;
	WebsiteUserService.Login(sEmail, sPassword, LoginCallback);
}

function LoginCallback(r)
{
	if (r.Message.length) alert(r.Message);
	if (r.Success)
	{
		document.location = document.location.toString();
	}
}

function Logout()
{
	WebsiteUserService.Logout(LogoutCallback);
}

function LogoutCallback(r)
{
	if (r) document.location = document.location.toString();
}

function ForgotPassword(sEmail)
{
	if (!sEmail.length)
		alert("Please enter your e-mail address.");
	else
		WebsiteUserService.ForgotPassword(sEmail, ForgotPasswordCallback)
}

function ForgotPasswordCallback(r)
{
	if (r.Message.length) alert(r.Message);
	//if (r.Success)
	//	document.location = "/";
}

function setUserDefaultLocation(iLocationID)
{
	WebsiteUserService.setDefaultLocation(iLocationID, setUserDefaultLocationCallback);
}

function setUserDefaultLocationCallback(r)
{
	if (r.Message.length) alert(r.Message);
}

String.prototype.toHTML = function ()
{
	var html = this.ignoreHTML();
	html = html.replace(/\n/g, "<br>");
	return html;
};

String.prototype.ignoreHTML = function ()
{
	var html = this.replace(/\&/g, "&amp;");
	html = html.replace(/</g, "&lt;");
	html = html.replace(/>/g, "&gt;");
	html = html.replace(/\"/g, "&quot;");
	return html;
};

String.prototype.containsHTML = function ()
{
	var s = this.toLowerCase();
	if (
					s.indexOf("<b") > -1
			|| s.indexOf("<i") > -1
			|| s.indexOf("<a ") > -1
			|| s.indexOf("<strong") > -1
			|| s.indexOf("<em") > -1
			|| s.indexOf("</") > -1
			|| s.indexOf("/>") > -1
			|| s.indexOf("<br") > -1
			|| s.indexOf("<p") > -1
			|| s.indexOf("<div") > -1
			|| s.indexOf("<span") > -1
			|| s.indexOf("<font") > -1
			|| s.indexOf("<script") > -1
			|| s.indexOf("<table") > -1
			)
	{
		return true;
	}
	return false;
};

// onkeypress="keyPress(event, KEY_ENTER, function() { alert('hello'); });"
var KEY_ENTER = 13;
function keyPress(e, k, f)
{
	var key = (e.keyCode || e.which);
	if (key == k) f();
}

