﻿/// <reference name="MicrosoftAjax.js"/>

// Update panel error handler
Sys.Application.add_load(startupHandlers);

function startupHandlers() {
	var prm = Sys.WebForms.PageRequestManager.getInstance();
	prm.add_beginRequest(beginRequest);
	prm.add_endRequest(endRequest);
}

function beginRequest(source, e) {
	if(Sys.Debug.isDebug) {
		window.status = "Start loading";
	}
	set_visibleProgress(true);
}

function endRequest(source, e) {
	if(Sys.Debug.isDebug) {
		if(!e.get_errorHandled()) {
			var ex = e.get_error();
			e.set_errorHandled(true);
			if(ex) {
				alert(ex.message);
			}
		}
		window.status = "Finish loading";
	}
	set_visibleProgress(false);
}

// init key press box
function initKeyBox(boxId, buttonId) {
	// init postback function
	var keyBox = $get(boxId);
	var button = $get(buttonId);
	if(keyBox && button) {
		var onKeyDown = function(e) {
		if(e.keyCode==13) {
			invokeClick(button);
			stopEvent(e);
			}
		}
		// add on key down handler
		$addHandler(keyBox, 'keydown', onKeyDown);	
	}
}

// stop event (IE, FF, Safari, Opera)
function stopEvent(e) {
	if(e.cancelBubble) e.cancelBubble = true;
	else e.stopPropagation();
	e.preventDefault();
}

// invoke click (IE, FF, Safari, Opera)
function invokeClick(element) {
	if(document.createEvent) {
		var e = document.createEvent('MouseEvents');
		e.initMouseEvent('click',true,true,window,1,0,0,0,0,false,false,false,false,0,null);
		element.dispatchEvent(e);
		eval(element.href);
	}
	else { element.click(); }
}

var frameProgress = null;
function set_visibleProgress(isVisible) {
	var delay = 300;
	var frame = frameProgress;
	
	if(!frame) {
		var frame = document.createElement("div");
		document.body.appendChild(frame);
		frame.style.display = "none";
		frame.style.width = "100%";
		frame.style.height = "100%";
		frame.style.position = "absolute";
		frame.style.top = "0px";
		frame.style.left = "0px";
		frameProgress = frame;
	}
	
	if(isVisible) {
		clearTimeout(frame.timer);
		frame.timer = setTimeout(function() {
			frame.style.display = "block";
			if(!frame.box) {
				var box = document.createElement("div");
				frame.appendChild(box);
				frame.box = box;
				
				var imgBox = document.createElement("div");
				imgBox.className = "loadingImg";
				frame.box.appendChild(imgBox);
			}
			var frameBounds = Sys.UI.DomElement.getBounds(frame);
			var scrollY = window.pageYOffset;
			if(!scrollY) scrollY = document.documentElement.scrollTop;
			frame.box.style.top = frameBounds.height / 2 - 65 + scrollY + "px";
			frame.box.style.left = frameBounds.width / 2 - 125 + "px";
			frame.box.style.position = "absolute";
			frame.box.style.width = "250px";
			frame.box.style.height = "130px";
			frame.box.className = "loadingBG";
		} , delay);
	}
	else {
		clearTimeout(frame.timer);
		frame.style.display = "none";
	}
}
