/// <summary>
/// Browser detections
/// </summary>
function IsBrowserMsie() { return (navigator.userAgent.toLowerCase().indexOf('msie')!=-1); }
function IsBrowserMac() { return (navigator.userAgent.toLowerCase().indexOf('gecko') != -1 && navigator.userAgent.toLowerCase().indexOf('safari') == -1) }

/// <summary>
/// Returns an object from the current page
/// </summary>
function findObj(n, d) { 
	var p,i,x;  
	if(!d) 
		d=document;
	if(d.getElementById) 
		x=d.getElementById(n); 
	if(!x && !(x=d[n])&&d.all) 
		x=d.all[n]; 
	for (i=0;!x&&i<d.forms.length;i++) 
		x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) 
		x=findObj(n,d.layers[i].document);
	if(!x && d.getElementsByName && d.getElementsByName(n) && d.getElementsByName(n).Length>0)
		x=d.getElementsByName(n); 
	return x;
}

/// <summary>
/// Return the x-pos of 'obj'
/// </summary>
function findPosX(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;
};

/// <summary>
/// Return the y-pos of 'obj'
/// </summary>
function findPosY(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;
};

/// <summary>
/// Return top positon in scrolled browser window
/// </summary>
function getScrollPosTop(){
var pos="";
	if(typeof(self.pageYOffset)!="undefined"){	
		pos = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop) {
		pos = document.documentElement.scrollTop;
	}
	else if (document.body) {
		pos = document.body.scrollTop;
	}
return pos;	
};

/// <summary>
/// Return left positon in scrolled browser window
/// </summary>
function getScrollPosLeft(){
var pos="";
	if(typeof(self.pageXOffset)!="undefined"){	
		pos = self.pageXOffset;
	}
	else if (document.documentElement && document.documentElement.scrollLeft) {
		pos = document.documentElement.scrollLeft;
	}
	else if (document.body) {
		pos = document.body.scrollLeft;
	}
return pos;	
};

/// <summary>
/// Returns available height browser window
/// </summary>
function getScreenHeight(){
var pos="";
	if(typeof(self.innerHeight)!="undefined"){	
		pos = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight) {
		pos = document.documentElement.clientHeight;
	}
	else if (document.body) {
		pos = document.body.clientHeight;
	}
return pos;
};

/// <summary>
/// Returns available width browser window
/// </summary>
function getScreenWidth(){
var pos="";
	if(typeof(self.innerWidth)!="undefined"){	
		pos = self.innerWidth;
	}
	else if (document.documentElement && document.documentElement.clientWidth) {
		pos = document.documentElement.clientWidth;
	}
	else if (document.body) {
		pos = document.body.clientWidth;
	}
return pos;
};

function getElementWidth(elementId)
{
    var e = findObj(elementId);
    if (e!=null)
    {
		if (e.clientWidth)
			return e.clientWidth;
		else if (e.style.width!=null && e.style.width!="")
			return parseInt(e.style.width);
	}
	return 0;
}

function getElementHeight(elementId)
{
    var e = findObj(elementId);
    if (e!=null)
    {
		if (e.clientHeight)
			return e.clientHeight;
		else if (e.style.height!=null && e.style.height!="")
			return parseInt(e.style.height);
	}
	return 0;
}

function centerElement(elementId)
{
    var e = findObj(elementId);
    if (e!=null)
    {
		var elmWidth = getElementWidth(elementId);
        var elmHeight = getElementHeight(elementId);
		var bodyWidth = getScreenWidth();
        var bodyHeight = getScreenHeight();
	    var scrollTop = getScrollPosTop();
	    var scrollLeft = getScrollPosLeft();

	    e.style.top = Math.round((parseInt(bodyHeight)-parseInt(elmHeight))/2)+scrollTop-80;
	    e.style.left = Math.round((parseInt(bodyWidth)-parseInt(elmWidth))/2)+scrollLeft;
	}
}

/// <summary>
/// Apply the style-class 'className' to the element 'elementId'
/// </summary>
function applyStyle(elementId, className) {
	if(IsBrowserMsie()){
		findObj(elementId).setAttribute("className", className);
	} else {
		findObj(elementId).setAttribute("class", className);
	}
};

/// <summary>
/// Return the current style of the element
/// </summary>
function getStyle(elementId) {
	if(IsBrowserMsie()){
		return elementId.getAttribute("className");
	} else {
		return elementId.getAttribute("class");
	}
};

function addCmsEvent(obj, eventType, functionProc) 
{
	if (obj.addEventListener) 
	{
		obj.addEventListener(eventType, functionProc, true);
	} 
	else if (obj.attachEvent) 
	{
		obj.attachEvent('on'+eventType, functionProc);
	}
	else if (obj.addEventListener)
	{
		obj.addEventListener(eventType, functionProc, true);
	}
}
