﻿window.onload = load;
window.onunload = unload;

function load()
{
	setStyles();
	setWysiwygs();
	setHelp();
}

function unload()
{
	closeModal();
}

function confirmDelete(message)
{
	return confirm(message);
}

function openWindow(url, name, width, height, resizable, scrollbars, statusbar, menubar, toolbar)
{
	var win = (window.name) ? eval(name) : null;
	var optionString = "";
	if (width) optionString += "width=" + width + ",";
	if (height) optionString += "height=" + height + ",";
	if (resizable) optionString += "resizable=1,";
	if (scrollbars) optionString += "scrollbars=1,";
	if (statusbar) optionString += "status=1,";
	if (menubar) optionString += "menubar=1,";
	if (toolbar) optionString += "toolbar=1,";
	win = window.open(url,name,optionString);
	win.focus();
}

var childModal = null;
var childModalOverlay = null;
var childModalTimer = null;
var modalReturnValue = null;
function openModalDialog(url, width, height, returnHandler)
{
	modalReturnValue = null;
	if (window.showModalDialog)
	{
		modalReturnValue = showModalDialog(url, null, "center=1;help=0;dialogWidth=" + width + "px;dialogHeight=" + height + "px;");
		if (returnHandler) eval(returnHandler + "()");
	}
	else
	{
		var w = document.getElementsByTagName("html")[0].scrollWidth;
		var h = document.getElementsByTagName("html")[0].scrollHeight;
		var x = (screen.availWidth / 2) - (width / 2);
		var y = (screen.availHeight / 2) - (height / 2);
		childModalOverlay = document.createElement("div");
		childModalOverlay.style.width = w+ "px";
		childModalOverlay.style.height = h + "px";
		childModalOverlay.style.position = "absolute";
		childModalOverlay.style.top = "0px";
		childModalOverlay.style.left = "0px";
		childModalOverlay.onmousedown = checkModal;
		document.body.appendChild(childModalOverlay);
		childModal = window.open(url + (url.indexOf("?") == -1 ? "?" : "&") + "returnHandler=" + returnHandler, "childModal", "modal=1, width=" + (width - 6) + ", height=" + (height - 52) + ", left=" + x + ", top=" + y + ", scrollbars=1");
		childModalTimer = setInterval("checkModal();", 10);
	}
}

function closeModal()
{
	if (!window.showModalDialog)
	{
		if (childModal != null && !childModal.closed)
		{
			childModal.close();
		}
	}
}

function checkModal()
{
	if (!window.showModalDialog)
	{
		if (childModal != null && !childModal.closed)
		{
			childModal.focus();
		}
		else
		{
			clearInterval(childModalTimer);
			document.body.removeChild(childModalOverlay);
		}
	}
}

function openImageSelector(returnHandler, pathToSelector)
{
	if (window.showModalDialog) returnHandler += "_imageSelected";
	openModalDialog((pathToSelector ? pathToSelector : "") + "ImageManager.aspx?Popup=1", 800,600, returnHandler);
}

function openFileSelector(returnHandler, pathToSelector)
{
	if (window.showModalDialog) returnHandler += "_fileSelected";
	openModalDialog((pathToSelector ? pathToSelector : "") + "FileManager.aspx?Popup=1", 800,600, returnHandler);
}

function showLargeImage()
{
	var imageWin = openWindow(this.largeImage, "imageWin", 600, 600, true, true, false, false, false);
}

if ((typeof HTMLElement != "undefined") && HTMLElement.prototype && HTMLElement.prototype.__defineGetter__ != "undefined" && document.createRange)
{
	HTMLElement.prototype.__defineGetter__(
		"innerText",
		function ()
		{
			var range = this.ownerDocument.createRange();
			range.selectNodeContents(this);
			return range.toString();
		}
	);
	HTMLElement.prototype.__defineSetter__(
		"innerText",
		function (text)
		{
			var range = this.ownerDocument.createRange();
			range.selectNodeContents(this);
			range.deleteContents();
			this.appendChild(document.createTextNode(text));
		}
	);
}

function getCookie(name)
{
	var cookies = document.cookie.split(";")
	for (var i=0; i<cookies.length; i++)
	{
		var nameVal = cookies[i].split("=");
		if (nameVal.length == 2 && trim(nameVal[0]) == trim(name))
		{
			return trim(nameVal[1]);
		}
	}
	return "";
}

function setCookie(name, value, expires)
{
	document.cookie = name + "=" + value + ";path=/;" + (expires ? " expires=" + expires.toGMTString() + ";" : "");
}

function removeCookie(name)
{
	setCookie(name, "", new Date("2 January 1970"));
}

function trim(theString)
{
	var newString = theString;
	while (newString.charAt(0) == " " || newString.charCodeAt(0) == 10 || newString.charCodeAt(0) == 13 || newString.charCodeAt(0) == 9) {
		newString = newString.substring(1,newString.length);
	}
	while (newString.charAt(newString.length - 1) == " " || newString.charCodeAt(newString.length - 1) == 10 || newString.charCodeAt(newString.length - 1) == 13 || newString.charCodeAt(newString.length - 1) == 9) {
		newString = newString.substring(0,newString.length - 1);
	}
	return newString;
}

function setStyles()
{
	if (document.all && navigator.userAgent.indexOf("MSIE 7") == -1)
	{
		var ipts = document.getElementsByTagName("input");
		for (var i=0; i<ipts.length; i++)
		{
			if (ipts[i].type == "radio")
			{
				ipts[i].className += " RadioButton";
			}
			else if (ipts[i].type == "checkbox")
			{
				ipts[i].className += " CheckBox";
			}
			else if (ipts[i].type == "button" || ipts[i].type == "submit" || ipts[i].type == "reset")
			{
				ipts[i].className += " Button";
			}
		}
	}
}

function moveItems(sourceSelect, targetSelect)
{
	for (var i=0; i<sourceSelect.length; i++)
	{
		if (sourceSelect.options[i].selected)
		{
			targetSelect.options[targetSelect.options.length] = new Option(sourceSelect.options[i].text, sourceSelect.options[i].value);
			targetSelect.options[targetSelect.options.length - 1].selected = false;
			sourceSelect.options[i] = null;
			i--;
		}
	}
}

function handleSubmit()
{
	if (window.handleWysiwyg) handleWysiwyg();
	var selects = document.getElementsByTagName("select");
	for (var i=0; i<selects.length; i++)
	{
		if (selects[i].className == "SelectOnSubmit")
		{
			for (var j=0; j<selects[i].options.length; j++)
			{
				selects[i].options[j].selected = true;
			}
		}
	}
}

function setWysiwygs()
{
	var divs = document.getElementsByTagName("div");
	for (var i=0; i<divs.length; i++)
	{
		if (divs[i].className == "Wysiwyg")
		{
			divs[i].style.display = "block";
		}
	}
}

function getObjectWidth(obj)
{
	var result = 0;
	if (obj.offsetWidth) result = obj.offsetWidth;
	else if (obj.clip && obj.clip.width) result = obj.clip.width;
	else if (obj.style && obj.style.pixelWidth) result = obj.style.pixelWidth;
	return parseInt(result);
}

function getObjectHeight(obj)
{
	var result = 0;
	if (obj.offsetHeight) result = obj.offsetHeight;
	else if (obj.clip && obj.clip.height) result = obj.clip.height;
	else if (obj.style && obj.style.pixelHeight) result = obj.style.pixelHeight;
	return parseInt(result);
}

function getX(obj)
{
	var curLeft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curLeft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) curLeft += obj.x;
	return curLeft;
}

function getY(obj)
{
	var curTop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curTop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y) curTop += obj.y;
	return curTop;
}

function getWindowHeight() 
{
	var windowHeight = 0;
	if (typeof(window.innerHeight) == "number") 
	{
		windowHeight = window.innerHeight;
	}
	else 
	{
		if (document.documentElement && document.documentElement.clientHeight) 
		{
			windowHeight = document.documentElement.clientHeight;
		}
		else 
		{
			if (document.body && document.body.clientHeight) 
			{
				windowHeight = document.body.clientHeight;
			}
		}
	}
	return windowHeight;
}

function getWindowWidth() 
{
	var windowWidth = 0;
	if (typeof(window.innerWidth) == "number") 
	{
		windowWidth = window.innerWidth;
	}
	else 
	{
		if (document.documentElement && document.documentElement.clientWidth) 
		{
			windowWidth = document.documentElement.clientWidth;
		}
		else 
		{
			if (document.body && document.body.clientWidth) 
			{
				windowWidth = document.body.clientWidth;
			}
		}
	}
	return windowWidth;
}

function setOtherTarget(sel)
{
	var textBox = null;
	var ipts = sel.parentNode.getElementsByTagName("input");
	for (var i=0; i<ipts.length; i++)
	{
		if (ipts[i].id.indexOf("TargetOther") != -1)
		{
			textBox = ipts[i];
			break;
		}
	}
	if (textBox != null)
	{
		textBox.style.display = (sel.value == "_other") ? "inline" : "none";
	}
}

function previewContent(type, url)
{
	window.open(url);
}

function clearForm(formHolder)
{
	var elements = new Array();
	for (var i=0; i<formHolder.getElementsByTagName("input").length; i++)
		elements[elements.length] = formHolder.getElementsByTagName("input")[i];
	for (var i=0; i<formHolder.getElementsByTagName("select").length; i++)
		elements[elements.length] = formHolder.getElementsByTagName("select")[i];
	for (var i=0; i<formHolder.getElementsByTagName("textarea").length; i++)
		elements[elements.length] = formHolder.getElementsByTagName("textarea")[i];

	for (i=0; i<elements.length; i++)
	{
		switch (elements[i].type)
		{
			case "text" :
				elements[i].value = "";
				break;
			case "textarea" :
				elements[i].value = "";
				break;
			case "select-one" :
				elements[i].selectedIndex = 0;
				break;
			case "select-multiple" :
				for (j=0; j<elements[i].options.length; j++)
					elements[i].options[j].selected = false;
				break; 
			case "checkbox" :
				elements[i].checked = false;
				break;
			case "radio" :
				elements[i].checked = false;
				break;
		}
	}
}

function addListener(object, eventType, handler)
{
	if (window.attachEvent)
	{
		object.attachEvent("on" + eventType, handler);
	}
	else if (window.addEventListener)
	{
		object.addEventListener(eventType, handler, false);
	}
}

var wysiwygInitCount = 0;
function wysiwygLoaded()
{
	wysiwygInitCount++;
	if (wysiwygInitCount == pageWysiwygCount)
	{
		// WYSIWYGs all loaded, enable the buttons
		enableWysiwygDisabled();
	}
}

function enableWysiwygDisabled()
{
	var ipts = document.getElementsByTagName("input");
	for (var i=0; i<ipts.length; i++)
	{
		var ipt = $(ipts[i]);
		if (ipt.hasClassName("WysiwygDisabled"))
		{
			ipt.removeClassName("WysiwygDisabled");
			ipt.disabled = false;
		}
	}
}

function setOptions(selectList, selected)
{
	selectList = $(selectList);
	for (var i=0; i<selectList.options.length; i++)
	{
		selectList.options[i].selected = selected;
	}
}

function setHelp()
{
	var labels = document.getElementsByTagName("span");
	for (var i=0; i<labels.length; i++)
	{
		if (labels[i].className == "Help")
		{
			labels[i].title = "Click here for more info about this item";
			labels[i].onclick = switchHelp;
		}
	}
}

function switchHelp()
{
	// Switches help text on or off
	var evt = (window.event ? window.event : arguments[0]);
	var src = (evt.srcElement ? evt.srcElement : evt.target);
	
	var div = src.parentNode.getElementsByTagName("div")[0];
	if (div)
	{
		div.style.display = (div.style.display == "none" || div.style.display == "") ? "block" : "none";
	}
}


