﻿function buttonSubmit(btn, text, otherbtn)
{
	if (btn.disabled) return true;
	
	// now disable it...
	btn.value = text;	
	btn.disabled = true;	
	
	// if an alternate button is supplied, disable it
	if (otherbtn) otherbtn.disabled = true;
}

function fireDefaultLinkButton(e, id)
{
	if (!e) e = event;
	if (!e) e = window.event;
	if (e.keyCode != 13) return;
	
	// cancel the event
	e.returnValue = false;
	e.cancelBubble = false;
	
	window.location.href = $get(id).href;
}

//**********************************************************************
// Finish Box Functions
//**********************************************************************
function hideFinishBox(id, delay)
{
	var box = $get(id);
	if (!box) return;
	
	// if another action was scheduled, clear it
	if (box._timeout) window.clearTimeout(box._timeout);
	
	// send it off to be hidden after the delay
	box._timeout = window.setTimeout("hideFinishBoxEnd('" + id + "');", delay);
}

function hideFinishBoxEnd(id)
{
	var box = $get(id);
	if (!box) return;
	
	box._timeout = null;
	box.style.display='none';
}

function cancelEvent(e)
{
	if (!e) e = event;
	if (!e) e = window.event;

	// cancel the event
	e.returnValue = false;
	e.cancelBubble = false;
	
	try { e.preventDefault(); } catch(e) {}
	try { e.stopPropagation(); } catch (e) { }
	return false;
}

//**********************************************************************
// Rad Window Functions
//**********************************************************************
function openRadWindow(url, title, width, height, onCloseHandler)
{
	var win = GetRadWindowManager().open(url, null)
	if (title != null) win.SetTitle(title);
	win.setSize(width, height);
	win.set_modal(true);
	win.center();
	
	// attach close handler if any
	if (onCloseHandler != null) win.add_close(onCloseHandler);
	window.document.body.__radWindowResult = null;
}

function closeRadWindow(result)
{
	// must only be called from the page loaded 
	// in the radWindow, not the calling page.
	var win = getRadWindow();
	
	// store the dialog result to the host page can read it
	win.BrowserWindow.document.body.__radWindowResult = result;
	
	// close the window
	win.close();
}

function getRadWindow()
{
	// must only be called from the page loaded 
	// in the radWindow, not the calling page.
	var oWindow = null;
	if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog
	else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;//IE (and Moz az well)
	
	return oWindow;
}

function radWindowResult()
{
	return window.document.body.__radWindowResult;
}

function	updateAfterRadWindowClose()
{
	var panel = radWindowResult();
	if (!panel || panel == '') return;
	__doPostBack(panel,'')
}

function redirectFromRadWindow(url)
{
	// must only be called from the page loaded 
	// in the radWindow, not the calling page.
	var win = getRadWindow();

	// close the window first
	win.close()
		
	// now redirect to the target url
	win.BrowserWindow.location.href = url;
}

function reloadFromRadWindow()
{
	getRadWindow().BrowserWindow.location.reload();
}

//**********************************************************************
// RadEditor Functions
//**********************************************************************
function EditorClientCommand(editor, args)
{
	var name = args.get_name();
	var val = args.get_value();
	if (name == "Emoticons")
	{
		editor.pasteHtml("<img src='" + val + "' alt='' />");

		//Cancel the further execution of the command as such a 
		// command does not exist in the editor command list      
		args.set_cancel(true);
	}
}	
	
//**********************************************************************
// DOM Helper Functions
//**********************************************************************
function findDivsByClass(container, cssclass)
{
	var divs = container.getElementsByTagName('DIV');
	var matches = new Array();
	
	// make sure the class name is lowercase
	cssclass = cssclass.toLowerCase();
	
	// loop through the divs to find ones with the right class name
	for (var iLoop=0; iLoop < divs.length; iLoop++)
	{
		if (divs[iLoop].className != null && divs[iLoop].className.toLowerCase().indexOf(cssclass) > -1)
		{
			matches[matches.length] = divs[iLoop];
		}
	}
	
	return matches;
}

function findElementsByClass(container, element, cssclass)
{
	var found = container.getElementsByTagName(element.toUpperCase());
	var matches = new Array();
	
	// make sure the class name is lowercase
	cssclass = cssclass.toLowerCase();
	
	// loop through the divs to find ones with the right class name
	for (var iLoop=0; iLoop < found.length; iLoop++)
	{
		if (found[iLoop].className != null && found[iLoop].className.toLowerCase().indexOf(cssclass) > -1)
		{
			matches[matches.length] = found[iLoop];
		}
	}
	
	return matches;
}

//*********************************************************************
// Request.QueryString Functions                                      
//*********************************************************************
function RObj(ea){var LS="";var QS=new Object();var un="undefined";var x=null;var f="function";var n="number";var r="string";var e1="ERROR:Index out of range in\r\nRequest.QueryString";var e2="ERROR:Wrong number of arguments or invalid property assignment\r\nRequest.QueryString";var e3="ERROR:Object doesn't support this property or method\r\nRequest.QueryString.Key";var dU=window.decodeURIComponent?1:0;function Err(arg){if(ea){alert("Request Object:\r\n"+arg)}};function URID(t){var d="";if(t){for(var i=0;i<t.length;++i){var c=t.charAt(i);d+=(c=="+"?" ":c)}}return(dU?decodeURIComponent(d):unescape(d))};function OL(o){var l=0;for(var i in o){if(typeof o[i]!=f){l++}};return l};function AK(key){var auk=true;for(var u in QS){if(typeof QS[u]!=f&&u.toString().toLowerCase()==key.toLowerCase()){auk=false;return u}}if(auk){QS[key]=new Object();QS[key].toString=function(){return TS(QS[key])};QS[key].Count=function(){return OL(QS[key])};QS[key].Count.toString=function(){return OL(QS[key]).toString()};QS[key].Item=function(e){if(typeof e==un){return QS[key]}else {if(typeof e==n){var a=QS[key][Math.ceil(e)];if(typeof a==un){Err(e1+"(\""+key+"\").Item("+e+")")};return a}else {Err("ERROR:Expecting numeric input in\r\nRequest.QueryString(\""+key+"\").Item(\""+e+"\")")}}};QS[key].Item.toString=function(e){if(typeof e==un){return QS[key].toString()}else {var a=QS[key][e];if(typeof a==un){Err(e1+"(\""+key+"\").Item("+e+")")};return a.toString()}};QS[key].Key=function(e){var t=typeof e;if(t==r){var a=QS[key][e];return(typeof a!=un&&a&&a.toString()?e:"")}else {Err(e3+"("+(e?e:"")+")")}};QS[key].Key.toString=function(){return x}};return key};function AVTK(key,val){if(key!=""){var key=AK(key);var l=OL(QS[key]);QS[key][l+1]=val}};function TS(o){var s="";for(var i in o){var ty=typeof o[i];if(ty=="object"){s+=TS(o[i])}else if(ty!=f){s+=o[i]+", "}};var l=s.length;if(l>1){return(s.substring(0,l-2))}return(s==""?x:s)};function KM(k,o){var k=k.toLowerCase();for(var u in o){if(typeof o[u]!=f&&u.toString().toLowerCase()==k){return u}}}if(window.location&&window.location.search){LS=window.location.search;var l=LS.length;if(l>0){LS=LS.substring(1,l);var preAmpAt=0;var ampAt=-1;var eqAt=-1;var k=0;var skip=false;for(var i=0;i<l;++i){var c=LS.charAt(i);if(LS.charAt(preAmpAt)=="="||(preAmpAt==0&&i==0&&c=="=")){skip=true}if(c=="="&&eqAt==-1&&!skip){eqAt=i}if(c=="&"&&ampAt==-1){if(eqAt!=-1){ampAt=i}if(skip){preAmpAt=i+1};skip=false}if(ampAt>eqAt){AVTK(URID(LS.substring(preAmpAt,eqAt)),URID(LS.substring(eqAt+1,ampAt)));preAmpAt=ampAt+1;eqAt=ampAt=-1;++k}}if(LS.charAt(preAmpAt)!="="&&(preAmpAt!=0||i!=0||c!="=")){if(preAmpAt!=l){if(eqAt!=-1){AVTK(URID(LS.substring(preAmpAt,eqAt)),URID(LS.substring(eqAt+1,l)))}else if(preAmpAt!=l-1){AVTK(URID(LS.substring(preAmpAt,l)),"")}}if(l==1){AVTK(LS.substring(0,1),"")}}}};var TC=OL(QS);if(!TC){TC=0};QS.toString=function(){return LS.toString()};QS.Count=function(){return(TC?TC:0)};QS.Count.toString=function(){return(TC?TC.toString():"0")};QS.Item=function(e){if(typeof e==un){return LS}else {if(typeof e==n){var e=Math.ceil(e);var c=0;for(var i in QS){if(typeof QS[i]!=f&&++c==e){return QS[i]}};Err(e1+"().Item("+e+")")}else {return QS[KM(e,QS)]}};return x};QS.Item.toString=function(){return LS.toString()};QS.Key=function(e){var t=typeof e;if(t==n){var e=Math.ceil(e);var c=0;for(var i in QS){if(typeof QS[i]!=f&&++c==e){return i}}}else if(t==r){var e=KM(e,QS);var a=QS[e];return(typeof a!=un&&a&&a.toString()?e:"")}else {Err(e2+"().Key("+(e?e:"")+")")};Err(e1+"().Item("+e+")")};QS.Key.toString=function(){Err(e2+"().Key")};this.QueryString=function(k){if(typeof k==un){return QS}else {if(typeof k==n){return QS.Item(k)};var k=KM(k,QS);if(typeof QS[k]==un){t=new Object();t.Count=function(){return 0};t.Count.toString=function(){return "0"};t.toString=function(){return x};t.Item=function(e){return x};t.Item.toString=function(){return x};t.Key=function(e){Err(e3+"("+(e?e:"")+")")};t.Key.toString=function(){return x};return t}else {return QS[k]}}};this.QueryString.toString=function(){return LS.toString()};this.QueryString.Count=function(){return(TC?TC:0)};this.QueryString.Count.toString=function(){return(TC?TC.toString():"0")};this.QueryString.Item=function(e){if(typeof e==un){return LS.toString()}else {if(typeof e==n){var e=Math.ceil(e);var c=0;for(var i in QS){if(typeof QS[i]!=f&&++c==e){return QS[i]}};Err(e1+".Item("+e+")")}else {return QS[KM(e,QS)]}}if(typeof e==n){Err(e1+".Item("+e+")")};return x};this.QueryString.Item.toString=function(){return LS.toString()};this.QueryString.Key=function(e){var t=typeof e;if(t==n){var e=Math.ceil(e);var c=0;for(var i in QS){if(typeof QS[i]=="object"&&(++c==e)){return i}}}else if(t==r){var e=KM(e,QS);var a=QS[e];return(typeof a!=un&&a&&a.toString()?e:"")}else {Err(e2+".Key("+(e?e:"")+")")};Err(e1+".Item("+e+")")};this.QueryString.Key.toString=function(){Err(e2+".Key")};this.Version=1.4;this.Author="Andrew Urquhart (http://andrewu.co.uk)"};var Request=new RObj(false);

//*********************************************************************
// Page Request Manager Hook
//*********************************************************************
function setupPageManager()
{
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(handleBeginRequest);
}

function handleBeginRequest()
{
    // kill the scroll logic during async postbacks
    Sys.WebForms.PageRequestManager.getInstance()._scrollPosition = null;
}