﻿//safari complains about this line
//var emptyGUID = "00000000-0000-0000-0000-000000000000";
var emptyGUID = '00000000-0000-0000-0000-000000000000';

DockToObject = function(dockingObject, objectToDockTo, align, vAlign, direction, pad_x, pad_y, ignoreFrameElement) {

	var offsetPointer = objectToDockTo;
	var objectToDockTo_x = parseInt((!pad_x ? 0 : pad_x));
	var objectToDockTo_y = parseInt((!pad_y ? 0 : pad_y));

	while (offsetPointer) {
		objectToDockTo_x += offsetPointer.offsetLeft;
		objectToDockTo_y += offsetPointer.offsetTop;


		if (offsetPointer.offsetParent == null) {
			if (ignoreFrameElement)
				offsetPointer = null;
			else
				offsetPointer = window.frameElement;
		}
		else
			offsetPointer = offsetPointer.offsetParent;
	}
	dockingObject_x = 0;
	dockingObject_y = 0;

	switch (align) {
		case "left":
			dockingObject_x = objectToDockTo_x;
			break
		case "right":
			dockingObject_x = (objectToDockTo_x + objectToDockTo.offsetWidth);
			break
		case "center":
			dockingObject_x = (objectToDockTo_x + parseInt(objectToDockTo.offsetWidth / 2));
			break
	}

	switch (vAlign) {
		case "top":
			dockingObject_y = objectToDockTo_y;
			break;
		case "bottom":
			dockingObject_y = (objectToDockTo_y + objectToDockTo.offsetHeight);
			break;
		case "middle":
			dockingObject_y = (objectToDockTo_y + parseInt(objectToDockTo.offsetHeight / 2));
			break;
	}

	switch (direction) {
		case "n":
			dockingObject_x = dockingObject_x - parseInt(dockingObject.offsetWidth / 2);
			dockingObject_y = dockingObject_y - dockingObject.offsetHeight;
			break;
		case "s":
			dockingObject_x = dockingObject_x - parseInt(dockingObject.offsetWidth / 2);
			break;
		case "e":
			dockingObject_y = dockingObject_y - parseInt(dockingObject.offsetHeight / 2);
			break;
		case "w":
			dockingObject_x = dockingObject_x - dockingObject.offsetWidth;
			dockingObject_y = dockingObject_y - parseInt(dockingObject.offsetHeight / 2);
			break;
		case "ne":
			dockingObject_y = dockingObject_y - dockingObject.offsetHeight;
			break;
		case "nw":
			dockingObject_x = dockingObject_x - dockingObject.offsetWidth;
			dockingObject_y = dockingObject_y - dockingObject.offsetHeight;
			break;
		case "se":
			break;
		case "sw":
			dockingObject_x = dockingObject_x - dockingObject.offsetWidth;
			break;
		case "center":
			dockingObject_x = dockingObject_x - parseInt(dockingObject.offsetWidth / 2);
			dockingObject_y = dockingObject_y - parseInt(dockingObject.offsetHeight / 2);
			break;
	}

	dockingObject.style.left = dockingObject_x + "px";
	dockingObject.style.top = dockingObject_y + "px";

}

destroyObject = function(object) {
	if (object) {
		switch (DetermineBrowser()) {
			case Browsers.IE:
				object.removeNode(true)
				break;
			default:
				if (object.parentNode)
					object.parentNode.removeChild(object);
				break;
		}
	}
}

destroyElementById = function(id) {
	var doomed = document.getElementById(id);

	if (doomed)
		destroyObject(doomed);

}

addTableRows = function(table, rows) {
	switch (DetermineBrowser()) {
		case Browsers.IE:
			var tbody = document.createElement("tbody");
			for (var i = 0; i < rows.length; i++) {
				tbody.appendChild(rows[i]);
			}
			table.appendChild(tbody);
			break;
		default:
			for (var i = 0; i < rows.length; i++) {
				table.appendChild(rows[i]);
			}
			break;
	}
}

var Browsers = { IE: 0, FireFox: 1, Other: 2, Chrome: 3 }

DetermineBrowser = function() {
	if (/msie/i.test(navigator.userAgent)) return Browsers.IE;
	if (/firefox/i.test(navigator.userAgent)) return Browsers.FireFox;
	if (/chrome/i.test(navigator.userAgent)) return Browsers.Chrome;
	return Browsers.Other;
}

getXMLHTTP = function() {
	var xmlHttpRequest = null;
	try {
		xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP")
	}
	catch (e1) {
		try {
			xmlHttpRequest = new XMLHttpRequest();
		}
		catch (e2) {
			try {
				xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP")
			}
			catch (e3) {
				xmlHttpRequest = null
			}
		}
	}
	return xmlHttpRequest
}

image_onmouseover = function(e) {
	var arrFileName;

	if (e.src) {
		arrFileName = e.src.split(".");
	}
	else if (e.style.backgroundImage) {
		arrFileName = e.style.backgroundImage.split(".");
	}


	var ext = arrFileName[arrFileName.length - 1];

	if (e.src)
		e.src = e.src.replace("." + ext, "-mouseover." + ext);
	else
		e.style.backgroundImage = e.style.backgroundImage.replace("." + ext, "-mouseover." + ext);

	e.style.cursor = "pointer";

	e.onmouseout = function() {
		if (e.src)
			e.src = e.src.replace(/\-mouseover/, "");
		else
			e.style.backgroundImage = e.style.backgroundImage.replace(/\-mouseover/, "");
	}
}

defaultText_onfocus = function(control) {

	if (!control.defaultText) {
		if (control.attributes["defaulttext"]) 
			control.defaultText = control.attributes["defaulttext"].value;
		 else if (control.attributes["defaultText"])
			 control.defaultText = control.attributes["defaultText"].value;
	}

	if (control.value == control.defaultText)
		control.value = "";

	control.onblur = function(e) {
		if (control) {
			if (control.value.length == 0)
				control.value = control.defaultText;
		} else {
			var poppop = "fizzfizz";
		}
	}

	control.onfocus = function(e) {

		if (control) {
			if (control.value == control.defaultText)
				control.value = "";
		} else {
			var poppop = "fizzfizz";
		}
	}
}

function defaultTextPassword_onfocus(e) {
	var base = e.id.replace(/\_Password/, "").replace(/\_Text/, "");

	var password = document.getElementById(base + "_Password");
	var text = document.getElementById(base + "_Text");

	password.style.display = "";
	text.style.display = "none";
	password.focus();
}

function defaultTextPassword_onblur(e) {
	var base = e.id.replace(/\_Password/, "").replace(/\_Text/, "");

	var password = document.getElementById(base + "_Password");
	var text = document.getElementById(base + "_Text");

	if (password.value.length == 0) {
		password.style.display = "none";
		text.style.display = "";        
	}
}

QueryStringValue = function(Url, Query) {
	var QueryRegEx = eval("/" + Query + "/g");

	if (QueryRegEx.test(Url)) {
		var QueryStrings = Url.split("?");
		var IndividualQueries = QueryStrings[1].split("&");

		for (var index = 0; index <= IndividualQueries.length - 1; index++) {
			var QueryPair = IndividualQueries[index].split("=");
			if (QueryPair[0] == Query) return QueryPair[1];
		}

		return "";
	}
	else {
		return "";
	}
}

clientTime = function() {
	var d = new Date();
	var s = d.toString();
	d = null;
	return s;
}

function createAnchor(text, href) {
	var a = document.createElement("a");

	if (text) {
		if (typeof (text) == "object")
			a.appendChild(text);
		else
			a.innerHTML = text;
	}
	a.style.cursor = "pointer";

	if (!href)
		a.href = "javascript: void(0)";
	else
		a.href = href;

	return a;
}

createTable = function(width, height) {
	var table = document.createElement("table");
	table.border = "0";
	table.cellSpacing = "0";
	table.cellPadding = "0";

	if (width) {
		if (/%/.test(width))
			table.style.width = width;
		else if (width > -1)
			table.style.width = width + "px";
	}

	if (height) {
		if (/%/.test(height))
			table.style.height = height;
		else if (height > -1)
			table.style.height = height + "px";
	}

	table.rowArray = [];
	table.rowArray.pop();

	table.addRow = function(row) {
		if (table.firstChild) {
			if (table.firstChild.tagName.toLowerCase() == "tbody")
				table.firstChild.appendChild(row);
			else
				table.appendChild(row);
		}
		else {
			switch (DetermineBrowser()) {
				case Browsers.IE:
					var tbody = document.createElement("tbody");
					tbody.appendChild(row);
					table.appendChild(tbody);

					break;
				default:
					table.appendChild(row);
			}
		}

		table.rowArray[table.rowArray.length] = row;
	}


	table.addRows = function(rows) {
		for (var i = 0; i < rows.length; i++) {
			table.addRow(rows[i]);
		}
	}

	table.rowCount = function() {
		if (table.firstChild) {
			var container;

			if (table.firstChild.tagName.toLowerCase() == "tbody")
				container = table.firstChild
			else
				container = table;

			return container.childNodes.count;
		}
		else
			return 0;
	}

	function createRow() {
		var tr = document.createElement("tr");

		tr.cellArray = tr.childNodes;

		tr.createCell = function() {
			var td = document.createElement("td");
			tr.appendChild(td);

			td.parent = tr;

			td.destroy = function() {
				destroyObject(td);
			}
			return td;
		}

		tr.parent = table;

		return tr;
	}

	table.createRow = function(cell) {

		var row = createRow();
		table.addRow(row);

		if (cell) {
			for (var x = 0; x < cell; x++) {
				row.createCell();
			}
		}

		return row;
	}

	table.createRows = function(rows, cell) {
		for (var i = 0; i < rows; i++) {
			table.createRow(cell);
		}
	}


	return table;
}

createOption = function(id, text, value) {
	var opt = document.createElement("option");
	opt.id = id;

	if (text) {
		if (text != "") {
			opt.text = text;
		}
	}

	if (value) {
		if (value != "") {
			opt.value = value;
		}
	}

	return opt;
}


stripHTML = function(text) {
	text = text.replace(/(<([^>]+)>)/ig, "");

	return text;
}

login_onkeypress = function(e, evt, action) {
	if ((evt.keyCode ? evt.keyCode : evt.which) == 13) {
		eval(action);
		return false;
	}
}

action_onkeypress = function(e, action, codes) {
	var characterCode;

	if (e && e.which) {
		characterCode = e.which
	}
	else {
		e = event;
		characterCode = e.keyCode
	}

	if (characterCode == 13) {
		eval(action);
		return false;
	}
	else if (codes != undefined) {
		for (var i = 0; i < codes.length; i++) {
			if (characterCode == codes[i][0]) {
				eval(action)
				return codes[i][1];
			}
		}
	}
	else {
		return true
	}
}

createLayer = function(width, height, background) {
	var table = createTable(width, height);

	var row = document.createElement("tr");
	var cell = document.createElement("td");
	if (background)
		cell.style.background = background;
	row.appendChild(cell);

	addTableRows(table, [row]);

	table.cell = cell;

	table.addLayer = function(layer) {
		cell.appendChild(layer);
	}

	return table;
}




addEventTrigger = function(object, eventName, func, capture, arguments) {
	var ffEventName;
	var ieEventName;

	if (/on/.test(eventName.toLowerCase())) {
		ieEventName = eventName.toLowerCase();
		ffEventName = ieEventName.replace("on", "");
	}
	else {
		ffEventName = eventName.toLowerCase();
		ieEventName = "on" + ffEventName;
	}


	switch (DetermineBrowser()) {
		case Browsers.IE:
			if (arguments)
				object.attachEvent(ieEventName, func(arguments));
			else
				object.attachEvent(ieEventName, func);
			break;
		default: //FireFox and Safari
			if (arguments)
				object.addEventListener(ffEventName, func(arguments), capture);
			else
				object.addEventListener(ffEventName, func, capture);
			break;
	}
}


removeEventTrigger = function(object, eventName, func, capture) {
	var ffEventName;
	var ieEventName;

	if (/on/.test(eventName.toLowerCase())) {
		ieEventName = eventName.toLowerCase();
		ffEventName = ieEventName.replace("on", "");
	}
	else {
		ffEventName = eventName.toLowerCase();
		ieEventName = "on" + ffEventName;
	}


	switch (DetermineBrowser()) {
		case Browsers.IE:
			object.detachEvent(ieEventName, func);
			break;
		default:  //FireFox and Safari
			object.removeEventListener(ffEventName, func, capture);
	}
}

function fireEvent(object, eventName, bubble, cancelable) {
	var ffEventName;
	var ieEventName;

	if (/on/.test(eventName.toLowerCase())) {
		ieEventName = eventName.toLowerCase();
		ffEventName = ieEventName.replace("on", "");
	}
	else {
		ffEventName = eventName.toLowerCase();
		ieEventName = "on" + ffEventName;
	}


	if (document.createEventObject) {
		try {
			var evt = document.createEventObject();
			return object.fireEvent(ieEventName, evt);
		} catch (e) {
			try {
				eval("object." + ffEventName + "();");
			} catch (ie) {
			}
		}
	} else {
		if (!bubble)
			bubble = false;
		if (!cancelable)
			cancelable = false;

		var evt = document.createEvent("HTMLEvents");
		evt.initEvent(ffEventName, bubble, cancelable);
		return !object.dispatchEvent(evt);
	}
}

function Link_onmouseover(e) {
	if (!/\-mouseover/.test(e.className) && !/\-active/.test(e.className)) {
		e.className += "-mouseover";
	}
}

function Link_onmouseout(e) {
	if (/\-mouseover/.test(e.className) && !/\-active/.test(e.className)) {
		e.className = e.className.replace(/\-mouseover/g, "");
	}
}

Linked_mouseover = function(e) {
	if (Linked_mouseover.arguments.length > 1) {
		for (var i = 1; i <= Linked_mouseover.arguments.length - 1; i++) {
			var objID = Linked_mouseover.arguments[i];

			if (document.getElementById(objID)) {
				var obj = document.getElementById(objID);

				if (obj.tagName) {
					switch (obj.tagName.toLowerCase()) {
						case "img":
							if (!/\-mouseover/.test(obj.src) && !/\-active/.test(obj.src))
								obj.src = obj.src.replace(/\.png/g, "-mouseover.png");
							break;
						case "span":
							if (!/\-mouseover/.test(obj.className) && !/\-active/.test(obj.className))
								obj.className = obj.className + "-mouseover";
							break;
						case "td":
						case "table":
							if (!/\-mouseover/.test(obj.style.backgroundImage) && !/\-active/.test(obj.style.backgroundImage))
								obj.style.backgroundImage = obj.style.backgroundImage.replace(/\.png/g, "-mouseover.png");

							if (obj.className && obj.className != "") {
								if (!/\-mouseover/.test(obj.className) && !/\-active/.test(obj.className))
									obj.className = obj.className + "-mouseover";
							}

							break;
					}
				}
			}
		}
	}
}

Linked_mouseout = function(e) {
	if (Linked_mouseout.arguments.length > 1) {
		for (var i = 1; i <= Linked_mouseout.arguments.length - 1; i++) {
			var objID = Linked_mouseout.arguments[i];

			if (document.getElementById(objID)) {
				var obj = document.getElementById(objID);

				if (obj.tagName) {
					switch (obj.tagName.toLowerCase()) {
						case "img":
							if (/\-mouseover/.test(obj.src) && !/\-active/.test(obj.src))
								obj.src = obj.src.replace(/\-mouseover/g, "");
							break;
						case "span":
							if (/\-mouseover/.test(obj.className) && !/\-active/.test(obj.className))
								obj.className = obj.className.replace(/\-mouseover/g, "");
							break;
						case "td":
						case "table":
							if (/\-mouseover/.test(obj.style.backgroundImage) && !/\-active/.test(obj.style.backgroundImage))
								obj.style.backgroundImage = obj.style.backgroundImage.replace(/\-mouseover/g, "");

							if (obj.className && obj.className != "") {
								if (/\-mouseover/.test(obj.className) && !/\-active/.test(obj.className))
									obj.className = obj.className.replace(/\-mouseover/g, "");
							}

							break;
					}
				}
			}
		}
	}
}

function getEventTarget(event) {
	if (!event) event = window.event;
	switch (DetermineBrowser()) {
		case Browsers.IE:
			return event.srcElement;
			break;
		default:
			return event.target;
			break;
	}
}

ConvertSeconds = function(totalSeconds) {
	totalSeconds = parseInt(totalSeconds);

	var Hours;
	var Seconds;
	var Minutes;

	Hours = parseInt(totalSeconds / 3600);
	Minutes = parseInt((totalSeconds - (Hours * 3600)) / 60);
	Seconds = totalSeconds - (Minutes * 60) - (Hours * 3600);

	if (Hours > 0) {
		if (Minutes < 10) Minutes = "0" + Minutes;
		if (Seconds < 10) Seconds = "0" + Seconds;

		return (Hours + ":" + Minutes + ":" + Seconds);
	}
	else {
		if (Seconds < 10) Seconds = "0" + Seconds;

		return (Minutes + ":" + Seconds);
	}
}

var RatingStarState_Enum =
{
	Empty: 1,
	Half: 2,
	Full: 3
}

BuildRatingStar = function(RatingStarState) {
	var StarTable = document.createElement("table");
	StarTable.border = "0";
	StarTable.cellSpacing = "0";
	StarTable.cellPadding = "0";
	StarTable.style.width = "10px";
	StarTable.style.height = "9px";
	StarTable.style.display = top.GetDisplayInlineStyle();
	StarTable.style.margin = "0px 1px";
	StarTable.style.backgroundRepeat = "no-repeat";

	switch (RatingStarState) {
		case RatingStarState_Enum.Full:
			top.SI.src("ProfilePage_IconRatingFull.png", StarTable, top.SiteImagesType.BaseSiteTheme);
			break;
		case RatingStarState_Enum.Half:
			top.SI.src("ProfilePage_IconRatingHalf.png", StarTable, top.SiteImagesType.BaseSiteTheme);
			break;
		default:
			top.SI.src("ProfilePage_IconRatingEmpty.png", StarTable, top.SiteImagesType.BaseSiteTheme);
			break;
	}

	var StarTR = document.createElement("tr");

	var HalfTD = document.createElement("td");
	HalfTD.style.width = "50%";
	HalfTD.style.fontSize = "1px";

	HalfTD.innerHTML = "&nbsp;";

	var FullTD = document.createElement("td");
	FullTD.style.width = "50%";
	FullTD.style.fontSize = "1px";

	FullTD.innerHTML = "&nbsp;";

	StarTR.appendChild(HalfTD);
	StarTR.appendChild(FullTD);

	addTableRows(StarTable, [StarTR]);

	StarTable.half = HalfTD;
	StarTable.full = FullTD;

	return StarTable;
}

GetDisplayInlineStyle = function() {
	switch (DetermineBrowser()) {
		case Browsers.Other:
			return "inline-table";
		case Browsers.FireFox:
			return "inline-block";
		default:
			return "inline";
	}
}


function escapeHTMLCharacters(string) {
	string = string.replace(/\&/g, "&#38;");      //ampersand
	string = string.replace(/\-/g, "&#45;");      //hyphen
	string = string.replace(/\|/g, "&#124;");     //vertical bar
	string = string.replace(/\~/g, "&#126;");     //tilde
	string = string.replace(/\>/g, "&#62;");      //greater-than sign
	string = string.replace(/\</g, "&#60;");      //less-than sign

	return string;
}





function UTCDate() {

	var d = new Date();

	d.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
	d.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());

	return d;
}


function DayOfTheWeek(index) {
	switch (index) {
		case 0:
			return "Sunday";
			break;
		case 1:
			return "Monday";
			break;
		case 2:
			return "Tuesday";
			break;
		case 3:
			return "Wednesday";
			break;
		case 4:
			return "Thursday";
			break;
		case 5:
			return "Friday";
			break;
		case 6:
			return "Saturday";
			break;
	}
}

function GetMonthText(index) {
	switch (index) {
		case 0:
			return "January";
			break;
		case 1:
			return "Febuary";
			break;
		case 2:
			return "March";
			break;
		case 3:
			return "April";
			break;
		case 4:
			return "May";
			break;
		case 5:
			return "June";
			break;
		case 6:
			return "July";
			break;
		case 7:
			return "August";
			break;
		case 8:
			return "September";
			break;
		case 9:
			return "October";
			break;
		case 10:
			return "November";
			break;
		case 11:
			return "December";
			break;
	}
}

function makeUnselectable(element) {
	switch (DetermineBrowser()) {
		case Browsers.FireFox:
			element.style.setProperty("-moz-user-select", "none",null);
			break;
		default:
			function selectstart(evt) {
				//return false;
				if (evt.preventDefault)
					evt.preventDefault();

				evt.returnValue = false;
			}

			addEventTrigger(element, "selectstart", selectstart);
			addEventTrigger(element, "select", selectstart);
	}
}


function onLengthFocusNext(e, length, control) {
	if (!e) e = window.event;

	var target = e.srcElement ? e.srcElement : e.target

	var keyCode = e.keyCode ? e.keyCode : e.which;

	if (keyCode == 8 || keyCode == 46 || keyCode == 63272)
		return true;

	if (target.value.length == length) {
		control.focus();
		control.value = control.value;

		if (e.preventDefault)
			e.preventDefault();

		e.returnValue = false;

		return false;
	}
}

function onZeroLengthBackSpace(e, control) {
	if (!e) e = window.event;

	var target = e.srcElement ? e.srcElement : e.target

	var keyCode = e.keyCode ? e.keyCode : e.which;

	if (keyCode == 8 || keyCode == 46 || keyCode == 63272) {
		if (target.value.length == 0) {
			control.focus();
			control.value = control.value;

			if (e.preventDefault)
				e.preventDefault();

			e.returnValue = false;

			return false;
		}
	}

	return true;
}


function numericPressOnly(event) {
	if (keyPressRegexMatch("[0-9]", event)) {
		return true;
	}
	else {
		if (event.preventDefault)
			event.preventDefault();

		event.returnValue = false;

		return false;
	}
}

function keyPressRegexMatch(pattern, event) {
	var regex = eval("/" + pattern + "/");

	var keyNum;
	var keyChar;

	if (window.event) {
		keyNum = event.keyCode;
	}
	else if (event.which) {
		keyNum = event.which;
	}

	keyChar = String.fromCharCode(keyNum);

	if (!regex.test(keyChar)) {
		if (event.preventDefault)
			event.preventDefault();

		event.returnValue = false;
	}

	return regex.test(keyChar);
}

function isHttps() {
	return (/https/.test(document.location.href));
}

function hideClientIFrameScrollbar() {
	var cs = top.document.getElementById("CIFScrollbarCell");

	if (cs) {
		if (cs.customScrollbar) {
			cs.customScrollbar.Deactivate();
		}
	}
}

function DaysInMonth(month, year) {
	var testDate = new Date(year, month, 32);
	var days = 32 - testDate.getDate();
	testDate = null;

	return days;
}


function textToRegex(text, global) {

	var regex = "";

	for (var i = 0; i < text.length; i++) {
		var c = text.charAt(i);

		if (c == "*") {                     //Multi Wildcard
			regex += "\.+";
		} else if (c == "?") {              //Single Wildcard
			regex += "\.";
		} else if (/[0-9]/.test(c)) {       //Numerical
			regex += c;
		} else if (/[a-zA-Z]/.test(c)) {    //Text
			regex += "[" + c.toLowerCase() + c.toUpperCase() + "]";
		} else {
			regex += "\\" + c;
		}

	}
	var compiled;

	if (global)
		compiled = eval("/" + regex + "/g");
	else
		compiled = eval("/" + regex + "/");

	return compiled;
}

function GetClipboardContents() {
	if (window.clipboardData) {
		return window.clipboardData.getData("Text");
	}
	else {
		try {
			return document.execCommand("paste", false, null);
		} catch (e) {
			try {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
				return document.execCommand("paste", false, null);
			} catch (e) {

			}
		}
	}
}

function CreateElementForExecCommand(textToClipboard) {
	var forExecElement = document.createElement("div");

	forExecElement.style.position = "absolute";
	forExecElement.style.left = "-10000px";
	forExecElement.style.top = "-10000px";

	forExecElement.textContent = textToClipboard;
	document.body.appendChild(forExecElement);

	forExecElement.contentEditable = true;

	return forExecElement;
}

function SelectContent(element) {
	var rangeToSelect = document.createRange();
	rangeToSelect.selectNodeContents(element);

	var selection = window.getSelection();
	selection.removeAllRanges();
	selection.addRange(rangeToSelect);
}

function InputNumberValidCheck(e, nonNegative) {
	if (isNaN(e.value)) {
		e.value = "0";
	}

	if (nonNegative) {
		if (parseInt(e.value) < 0) {
			e.value = "0";
		}
	}
}

function createSwfElement(id, swf, width, height, flashVars, params) {
	if (!params) {
		params = [];
		params.pop();
	}

//    params.push(["movie", swf]);
//    params.push(["src", swf]);
//    params.push(["quality", "high"]);

	params.unshift(["quality", "high"]);
	params.unshift(["movie", swf]);        

	if (DetermineBrowser() == Browsers.IE) {
		obj = document.createElement('<object id="' + id + '" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + width + '" height="' + height + '">');
		//obj = document.createElement("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"" + parseInt(width) + "\" height=\"" + parseInt(height) + "\" />");
	}
	else {
		obj = document.createElement("object");
		//obj.setAttribute("classid", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000");
		obj.setAttribute("type", "application/x-shockwave-flash");
		obj.setAttribute("data", swf);        
		obj.setAttribute("width", width);
		obj.setAttribute("height", height);
		obj.id = id;
	}

	for (var p = 0; p < params.length; p++) {

		var param;

		if (DetermineBrowser() == Browsers.IE)
			param = document.createElement('<param name="' + params[p][0] + '" value="' + params[p][1] + '"/>');
		else {
			param = document.createElement("param");
			param.setAttribute("value", params[p][1]);
			param.setAttribute("name", params[p][0]);

		}

		obj.appendChild(param)
	}

	var fvString = "";

	for (var f = 0; f < flashVars.length; f++) {
		if (fvString.length > 0) fvString += "&";
		fvString += flashVars[f][0] + "=" + flashVars[f][1];
	}

	var fv;
	if (DetermineBrowser() == Browsers.IE)
		fv = document.createElement('<param name="flashvars" value="' + fvString + '">');
	else {
		fv = document.createElement("param");
		fv.setAttribute("value", fvString);
		fv.setAttribute("name", "flashvars");
	}

	obj.appendChild(fv);

	
	return obj;
}

function createFileUploader(id, uploadPath, allowMultiple, completeCommand, additionalVariables) {
	//var accountId = top.document.getElementById("profileID").value; //commented out for sponsored billing
	var flashVars = [
		["accountId", "00000000-0000-0000-0000-000000000000"],
		["websiteURL", top.document.getElementById("websiteURL").value],
		["at", top.document.getElementById("at").value],
		["ThemeColor", top.MainColor],
		["shade", top.MainShade],
		["theme", top.MainTheme]
		];

	flashVars.push(["PathToUploadScript", uploadPath]);

	if (allowMultiple)
		flashVars.push(["AllowMultiple", allowMultiple]);
	else
		flashVars.push(["AllowMultiple", "false"]);

	if (completeCommand)
		flashVars.push(["CompleteCommand", completeCommand]);

	if (additionalVariables)
		flashVars = flashVars.concat(additionalVariables);


	var params = [
		["wmode", "transparent"],
		["allowFullScreen", "true"],
		["allowScriptAccess", "always"]
		];

	var uploader = createSwfElement(id, top.document.getElementById("websiteURL").value + "/flash/src/FileUploader.swf?ver=" + Math.random(), 237, 36, flashVars, params);

	return uploader;
}


var Base64 = {

	// private property
	_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

	// public method for encoding
	encode: function(input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;

		input = Base64._utf8_encode(input);

		while (i < input.length) {

			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);

			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;

			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}

			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

		}

		return output;
	},

	// public method for decoding
	decode: function(input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;

		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

		while (i < input.length) {

			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));

			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;

			output = output + String.fromCharCode(chr1);

			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}

		}

		output = Base64._utf8_decode(output);

		return output;

	},

	// private method for UTF-8 encoding
	_utf8_encode: function(string) {
		string = string.replace(/\r\n/g, "\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if ((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode: function(utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while (i < utftext.length) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if ((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i + 1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i + 1);
				c3 = utftext.charCodeAt(i + 2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}

String.prototype.Trim = function() {
	var s = this;

	s = s.replace(/^\s+/, "");
	s = s.replace(/$\s+/, "");

	return s;
}

String.prototype.IsNullOrEmpty = function() {
	var s = this;

	if (!s) return true;
	if (s.replace(/\s/g, "") == "") return true;

	return false;
}

function IsNullOrEmpty(s) {
	if (!s) return true;
	if (s.replace(/\s/g, "") == "") return true;

	return false;
}

function remainingText(oElement, iMaxCnt, sTargetElement) {
	try {
		var oTargetElement = document.getElementById(sTargetElement);
		var iCharCnt = iMaxCnt - oElement.value.length;

		if (iCharCnt > -1) {
			oTargetElement.innerHTML = "(" + iCharCnt + " characters remaining)";
			oTargetElement.style.color = "gray";
			if (iCharCnt == 0) {
				oTargetElement.style.color = "red";
			}
		} else {
			oElement.value = oElement.value.substr(0, iMaxCnt);
			oTargetElement.style.color = "red";
		}

	} catch (e) {
		alert("remainingText::" + e.Description);
	}
}

function textLimit(oElement, iMaxCnt) {
	try {
		var iCharCnt = iMaxCnt - oElement.value.length;

		if (iCharCnt < 0)
			oElement.value = oElement.value.substr(0, iMaxCnt);

	} catch (e) {
		alert("remainingText::" + e.Description);
	}
}

function getFrameDocument(frameId) {

	if (frameId == null || frameId == "")
		return null;

	var frame = document.getElementById(frameId);
	if (frame && frame.contentWindow && frame.contentWindow.document) {
		return frame.contentWindow.document;
	}
	if (frame && frame.contentDocument) {
		return frame.contentDocument;
	}
	if (!frame) {
		frame = window.frames[frameId];
	}
	if (frame && frame.document) {
		return frame.document;
	}
	return frame;
}

function CBool(value) {
	var bValue;

	switch (value.toString().toLowerCase()) {
		case "1": case 1: case "true":
			bValue = true;
			break;
		default:
			bValue = false
			break;
	}
	return bValue
}

createVerticalDottedBorder_MS = function () {
	if (top.DetermineBrowser() == top.Browsers.Other) {
		var table = document.createElement("table");
		table.style.width = "3px";
		table.style.height = "-1px";
	}
	else {
		var table = createTable(10, -1);
	}

	table.cellSpacing = "0";
	table.cellPadding = "0";

	var row1 = document.createElement("tr");
	var row2 = document.createElement("tr");
	var row3 = document.createElement("tr");

	var cell1 = document.createElement("td");
	cell1.style.height = "5px";
	var cell2 = document.createElement("td");
	cell2.style.height = "70px";
	var cell3 = cell1.cloneNode(true);

	cell2.innerHTML = "&nbsp;";
	cell2.style.borderRight = "dashed 1px #6A5F6D";

	row1.appendChild(cell1);
	row2.appendChild(cell2);
	row3.appendChild(cell3);

	addTableRows(table, [row1, row2, row3]);

	return table;
}

function isArray(obj) {
	if (!obj) return false;
	if (obj.constructor.toString().indexOf("Array") == -1)
		return false;
	else
		return true;
}

var Events = {
	add: function (obj, type, fn) {
		if (obj.attachEvent) {
			var key = type + fn.toString();
			obj[key] = function () { fn(window.event); }
			obj.attachEvent('on' + type, fn);
		} else
			obj.addEventListener(type, fn, false);
	},
	remove: function (obj, type, fn) {
		if (obj.detachEvent) {
			var key = type + fn.toString();
			if (obj[key]) obj.detachEvent('on' + type, obj[key]);
			obj[key] = null;
		} else
			obj.removeEventListener(type, fn, false);
	}
}

var CssClasses = {
	add: function (element, className) {
		this.remove(element, className);
		element.className = (element.className + " " + className).Trim();
	},
	remove: function (element, className) {
		element.className = element.className.replace(className, "").Trim();
	}
}

function createScrollableDiv(id, height, isdisplay) {
	if (!isdisplay)
		isdisplay = false;

	var main = createTable();
	//main.className = "DropDownList_MainTable";
	main.style.cursor = "default";
	main.id = id;

	var main_tr = document.createElement("tr");
	var main_td1 = document.createElement("td");
	var main_td2 = document.createElement("td");

	main.addRow(main_tr);
	main_tr.appendChild(main_td1);
	main_tr.appendChild(main_td2);
	main_td2.id = id + "_scrollBarCell";
	main_td2.style.width = "15px";
	main_td2.style.textAlign = "center";
	main_td1.style.verticalAlign = "top";

	var container = document.createElement("div");
	container.id = id + "_container";
	container.style.overflowY = "hidden";

	main.customScrollbar = new CustomScrollbar();
	main.customScrollbar.IsDisplay(isdisplay);

	document.body.appendChild(container);

	main_td2.appendChild(main.customScrollbar.CreateScrollbarDiv(id + "_scrollBar", container.id, parseInt(height) - 12));

	main_td1.appendChild(container);

	main.container = container;

	main.scrollBarCell = main_td2;

	main.setHeight = function (newHeight) {
		//alert("New Height :: " + newHeight);
		container.style.height = parseInt(newHeight) + "px";


		var track = main.customScrollbar.getTrack();


		if (newHeight - 24 > 0)
			track.style.height = (newHeight - 24) + "px";

		main.customScrollbar.SliderCheck();
	}
	main.setHeight(height);


	return main;
}

