﻿/*
PWSCommon is the namespace container for all PredictWallStreet common javascript functions
*/

var PWSCommon = {

       hidePopup : function PWSCommon$hidePopup(e, popUpDivId)
        {          	        
            ///<summary>
            ///Hides a popup div in such a way that it does not hide if the click event came from the popup itself
            ///</summary>       
                          
            //get the source DOM element for the event
            var target = (e && e.target) || (event && event.srcElement);  
            var hideDiv = true;        
             
            //determine whether the source of the click event is the popup itself
            if(target.id == popUpDivId)
            {
                hideDiv = false;
            }
            if(target.parentNode != null && target.parentNode.id == popUpDivId)
            {
                hideDiv = false;
            }        
            //hide the popup as appropriate
            if(hideDiv)
            {
              PWSCommon.setDOMElementVisibility(false,popUpDivId);  
            }
        },
        
        setDOMElementVisibility : function PWSCommon$setDOMElementVisibility(isVisible, elementName)            
        {
            ///<summary>Shows or hides a DOM element, such as a pop up div</summary> 
            
            var display = (isVisible ? "block" : "none");
            var domElement = document.getElementById(elementName);
            if(domElement)
            {
                domElement.style.display = display;
            }
        },

        attachEvent : function PWSCommon$attachEvent(pwsConstantEventType, eventHandler, srcElement)            
        {        
            ///<summary>
            ///Provides an implementation of attachEvent that can handle IE and all other browsers
            ///Other browsers use addEventListener and IE uses attachEvent.            
            ///</summary> 
            var eventAsString = "";
            var isIE = navigator.appName == "Microsoft Internet Explorer";            
            switch(pwsConstantEventType)
            {
                case (PWSConstants.Events.CLICK):
                {
                    eventAsString = (isIE ? "onclick": "click");
                }     
            }
            if(eventAsString == "")
            {
                return; //no event in our list was sent
            }
            if(isIE)
            {
                srcElement.attachEvent("onclick",eventHandler);  
            }
            else
            {    
                srcElement.addEventListener("click",eventHandler,false);
            }
        },
        
	    //change the src attribute of an element
	    /*
        e.g.
        PWSCommon.changeSrc('imgHeader', '/testimage.jpg');
        */	    
		changeSrc : function(objectID, value) {
            document.getElementById(objectID).setAttribute('src', value);    
		}
 
}


//// Constants ///////////////
var PWSConstants = {};
PWSConstants.Events = { 
    CLICK   : 1
};


////// haxor popup functions ///////
function pw() { return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth };
function mouseX(evt) { return evt.clientX ? evt.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) : evt.pageX; }
function mouseY(evt) { return evt.clientY ? evt.clientY + (document.documentElement.scrollTop || document.body.scrollTop) : evt.pageY }
function popUp(evt, oi) { if (document.getElementById) { var wp = pw(); dm = document.getElementById(oi); ds = dm.style; st = ds.visibility; if (dm.offsetWidth) ew = dm.offsetWidth; else if (dm.clip.width) ew = dm.clip.width; if (st == "visible" || st == "show") { ds.visibility = "hidden"; } else { tv = mouseY(evt) + 20; lv = mouseX(evt) - (ew / 4); if (lv < 2) lv = 2; else if (lv + ew > wp) lv -= ew / 2; lv += 'px'; tv += 'px'; ds.left = lv; ds.top = tv; ds.visibility = "visible"; } } }          
