﻿// NW Utilities
// Author(s): Nehal Shah, Paul Waldschmidt, Michael Trythall, David Johnson
// Version: 1.0
// Created: 9/11/2007
// Updated: 10/9/2007

function getRealTopByObj(thisObj){
	yPos = 0;
	if(thisObj){
		yPos = thisObj.offsetTop;
		tempEl = thisObj.offsetParent;
		while(tempEl !== null){
			yPos += tempEl.offsetTop;
			tempEl = tempEl.offsetParent;
		}
	}
	return yPos;
}

function getRealTop(div){
	thisObj = div;
	yPos = getRealTopByObj(div);
	return yPos;
}

function getRealLeftByObj(thisObj){
	xPos = 0;
	if(thisObj){
		xPos = thisObj.offsetLeft;
		tempEl = thisObj.offsetParent;
		while(tempEl !== null){
			xPos += tempEl.offsetLeft;
			tempEl = tempEl.offsetParent;
		}
	}
	return xPos;
}

function getRealLeft(div){
	thisObj = div;
	xPos = getRealLeftByObj(div);
	return xPos;
}

function getMouseY(e){
    if(e === null){e = event;}
	return e.clientY + document.documentElement.scrollTop; // true yPos mouse event, exclusive to ie
}

function getMouseX(e){
    if(e === null){e = event;}
    
	return e.clientX + document.documentElement.scrollLeft; // true xPos mouse event, exclusive to ie
}

function getPointerX(e){  
	return ((e !== null) ? e.pageX : getMouseX(window.event));
}

function getPointerY(e){  
	return ((e !== null) ? e.pageY : getMouseY(window.event));
}

function GetObjPos(obj){
	var xPos = 0, yPos = 0;
	var tempEl = null;
	if(obj){
	
		xPos = obj.offsetLeft;
		yPos = obj.offsetTop;	
		tempEl = obj.offsetParent;
		
		while(tempEl !== null){
			xPos += tempEl.offsetLeft;
			yPos += tempEl.offsetTop;
			tempEl = tempEl.offsetParent;			
		}
	}
	return [xPos, yPos];
}

function getScrollTop() {
	if (document.documentElement && document.documentElement.scrollTop){
		return document.documentElement.scrollTop;
	} else if (document.body) {
		return document.body.scrollTop;
	} else if (window.pageYOffset) {
		return window.pageYOffset;
	}
	return 0;
}

$.fn.center = function(f) {
    return this.each(function(){
        if ( !f && this.nodeName == 'DIV' &&
                 !this.offsetWidth && !this.offsetHeight ) {
            var self = this;
            setTimeout(function(){
                $(self).center(true);
            }, 13);
        } else {
            var s = this.style;
            var p = this.parentNode;
            if ( $.css(p,"position") == 'static' ) {
                p.style.position = 'relative';
            }
            s.position = 'absolute';
            s.left = (($.css(p,"width") - $.css(this,"width"))/2) + "px";
            var scroll = getScrollTop();
            s.top = (scroll + 180) + "px";
            //s.top = ((200 - $.css(this,"height"))/2) + "px";
        }
    });
};

// Adds an event handler to the source
function AddHandler(eventSource, eventName, handlerName, eventParent) {
    var eventHandler = function(e) {eventSource[handlerName](e, eventParent);};

    if (eventSource.addEventListener){
        eventSource.addEventListener(eventName, eventHandler, false);
    } else if (eventSource.attachEvent) { 
        eventSource.attachEvent("on" + eventName, eventHandler);
    } else {
        var originalHandler = eventSource["on" + eventName];

        if (originalHandler){
            eventHandler = function(e) {originalHandler(e); eventSource[handlerName](e, eventParent);};
        }
        eventSource["on" + eventName] = eventHandler;
    }
}

function GetEventXY(e){
    if (e === null) {e = window.event;}
    return [e.clientX + document.documentElement.scrollLeft, e.clientY + document.documentElement.scrollTop];
}

//Returns the true offset position of an element
function GetPos(Obj) {
	var curleft = 0;
	var curtop = 0;

	if (Obj.offsetParent){
		curleft = Obj.offsetLeft;
		curtop = Obj.offsetTop;

		while (Obj == Obj.offsetParent){
			curleft += Obj.offsetLeft;
			curtop += Obj.offsetTop;
		}
	}
	return [curleft, curtop];
}

function evalScripts(html){
	var re = /<script.*?>([\s\S]*?)<\//igm;
	var match;
	while (match = re.exec(html)) {
		eval(match[1]);
	}
}

/* cache background images [IE Fix] */
try {
    document.execCommand("BackgroundImageCache", false, true);
} 
catch(err) {}

function toggleWindowObjects(show) {
    if (show) {
        $("select").css('visibility', 'visible');
        $("object").each(function() {
			var html = $(this).html().toLowerCase();
			if (html.indexOf('name="wmode" value="transparent"') == -1 && html.indexOf('name="wmode" value="opaque"') == -1) {
				$(this).css('visibility', 'visible');
			}
		});
        $("embed[@wmode != 'transparent']").css('visibility', 'visible');
        $("embed[@wmode != 'opaque']").css('visibility', 'visible');
    } else {
        $("select").css('visibility', 'hidden');
        $("object").each(function() {
			var html = $(this).html().toLowerCase();
			if (html.indexOf('name="wmode" value="transparent"') == -1 && html.indexOf('name="wmode" value="opaque"') == -1) {
				$(this).css('visibility', 'hidden');
			}
		});
        $("embed[@wmode != 'transparent']").css('visibility', 'hidden');
        $("embed[@wmode != 'opaque']").css('visibility', 'hidden');
    }
}

var arrNodeClass = ['peekOff', 'peekSelected', 'ctrl', 'thpButton', 'quickGuide', 'next', 'prev'];

function disableContextMenu(ctrlClass){   
    document.oncontextmenu = function(e){
        if(!e) {e = window.event;}
        var evtTarget = (e.target) ? e.target : e.srcElement;
        for(var i=0;i<ctrlClass.length;i++){   
            if(evtTarget.className.indexOf(ctrlClass[i]) != -1 || evtTarget.parentNode.className.indexOf(ctrlClass[i]) != -1){
				evtTarget = null;
                return false;
            }        
        }
    };
}

disableContextMenu(arrNodeClass);