﻿function GotoPage(pageQuery) 
{
	// navigation must not fail because events will be stopped. Use try/catch block in release.
	Abyss.Web.Client.UI.PageManager.singleton.gotoPage(pageQuery);
	return StopEventBubble();
}

function ShowElement(elementId)
{
	Abyss.Web.Client.Extensions.DOMElementEx.show(document.getElementById(elementId));
}

function HideElement(elementId)
{
	Abyss.Web.Client.Extensions.DOMElementEx.hide(document.getElementById(elementId));
}

function ToggleElement(elementId)
{
	Abyss.Web.Client.Extensions.DOMElementEx.toggle(document.getElementById(elementId));
}

function ToggleClass(elementId, cssClass)
{
	Abyss.Web.Client.Extensions.DOMElementEx.toggleClass(document.getElementById(elementId), cssClass);
}

function SetLanguage(language)
{
	Abyss.Web.Client.UI.Localizer.singleton.setCurrentLanguage(language);
}

function NoImage(img)
{
	img.src = Abyss.Web.Client.Extensions.DocumentEx.noImagePath;
}

function StopEventBubble() {
	if (event.StopPropagation) {
		event.StopPropagation();
	}
	event.cancelBubble = true;
	return false;
}


// Custom code - solve somewhat different -=AGi=-
function GetCursorPosition(e) {
	e = e || window.event;	
	var cursor = { x: 0, y: 0 };
	if (e.pageX || e.pageY) {
		cursor.x = e.pageX;
		cursor.y = e.pageY;
	}
	else {
		var de = document.documentElement;
		var b = document.body;
		cursor.x = e.clientX +
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
		cursor.y = e.clientY +
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
	}
	return cursor;
}


function GetElementTopLeft(e)
{	
	//w.__getLocation

	var loc = { x: 0, y: 0 };

	while (e) {
		loc.x += e.offsetLeft;
		loc.y += e.offsetTop;
		e = e.offsetParent;
	}

	return loc;
}

function CursorOverElement(id, event)
{
	var e = document.getElementById(id);
	var cursor = GetCursorPosition(event);
	var ePos = GetElementTopLeft(e);
	//alert(e);
	//alert('cursor ' + cursor.x + ' ' + cursor.y);
	//alert('pos ' + ePos.x + ' ' + ePos.y + ' ' + (ePos.x + e.offsetWidth) + ' ' + (ePos.y + e.offsetHeight));
	if ((ePos.x <= cursor.x) && (cursor.x <= ePos.x + e.offsetWidth) &&
		(ePos.y <= cursor.y) && (cursor.y <= ePos.y + e.offsetHeight)) return true;
	return false;
}



