﻿/*
	Comsite Ajax Library - http://www.ComSite.org
 	by Jay Kappel, founder of ComSite.

	Permission is freely granted to copy, modify, merge, publish, distribute,
	sublicense, and/or sell copies of this Software.

	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. IN NO EVENT SHALL 
	THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
	CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
	DEALINGS IN THE SOFTWARE.
*/

// Dependencies for csAjaxEvent.js:

/// <reference path="csAjax.js" />

    csAjax.event = {};
    csAjax.event.loaded=true;
    
    
    csAjax.event.instanciate = function() {
        if (csAjax.eventTracker) if (!csAjax.eventTracker('event','afterInstanciate',this)) return;
        return true;
    }
    
       
    csAjax.event.add = function(obj, evt, func, capture) {
        /// <summary>Support for adding events to objects cross browser.</summary>
        
        // ensure we dont register the same event multiple times
        csAjax.event.remove(obj,evt,func,capture);
        
        if(obj.attachEvent) {
            obj.attachEvent('on' + evt, func);
            if (csAjax.debug) window.status = 'csAjax.event.add: on' + evt;
        } else {
            obj.addEventListener (evt, func, capture);
            if (csAjax.debug) window.status = 'csAjax.event.add: ' + evt;
        }
    }
    
    
    csAjax.event.remove = function(obj, evt, func, capture) {
        /// <summary>Support for removing events from objects cross browser.</summary>
        try {
            if(obj.detachEvent) {
                obj.detachEvent('on' + evt, func);
            } else {
                obj.removeEventListener (evt, func, capture);
            }
        } catch (e) {}
    }
    
    
    csAjax.event.getHandler = function(evnt) {
		evnt = evnt || {};
		/// <summary> Returns an event object which is compatible cross browser.</summary>
		
		if (window.event) {
		    evnt = window.event;
            
            evnt.target = evnt.srcElement || evnt.element;
		    evnt.which = evnt.button;
		    
		    evnt.pageX = evnt.clientX + document.body.scrollLeft
			    + document.documentElement.scrollLeft;
		    evnt.pageY = evnt.clientY + document.body.scrollTop
			    + document.documentElement.scrollTop;
		
		    evnt.layerX = evnt.offsetX;
		    evnt.layerY = evnt.offsetY;

		} else if (evnt.element) {
		    evnt.target = evnt.element;
		}
		
		return evnt;        
    }
