﻿/** event  body ready*/
//if(jDoc){
//    var __jDoc = jDoc;
//}
var jDoc={};
jDoc.prepare=function(fn){
	this.bindReady();
	if ( this.isReady )
		fn.call( document);
	else
		this.readyList.push( function() { return fn.call(document); } );	
	return this;
}
jDoc.isReady = false;
jDoc.readyList = [];
jDoc.ready = function(){
	if ( !jDoc.isReady ) {
		jDoc.isReady = true;
		if ( jDoc.readyList ) {			
			jDoc.each( jDoc.readyList, function(){
				this.apply( document );
			});
			jDoc.readyList = null;
		}
	}
};
jDoc.readyBound=false;
jDoc.bindReady = function(){
    if(this.readyBound) return;
    this.readyBound = true;
	if (document.addEventListener && !this.browser.isOpera){
		document.addEventListener( "DOMContentLoaded", this.ready, false );
		return;
    }
	if (this.browser.isMsie && window == top ) (function(){
		if (jDoc.isReady) return;
		try {
			document.documentElement.doScroll("left");
		} catch( error ) {
			setTimeout( arguments.callee, 0 );
			return;
		}
		jDoc.ready();
	})();

	if ( this.browser.isOpera )	
		document.addEventListener( "DOMContentLoaded", function () {
			if (this.isReady) return;
			for (var i = 0; i < document.styleSheets.length; i++)
				if (document.styleSheets[i].disabled) {
					setTimeout( arguments.callee, 0 );
					return;
				}
			jDoc.ready();
		}, false);

	if ( this.browser.isSafari ){
		var numStyles;
		(function(){
			if (jDoc.isReady) return;
			if ( document.readyState != "loaded" && document.readyState != "complete" ) {
				setTimeout( arguments.callee, 0 );
				return;
			}
//			if ( numStyles === undefined )
//				numStyles = jQuery("style, link[rel=stylesheet]").length;
//			if ( document.styleSheets.length != numStyles ) {
//				setTimeout( arguments.callee, 0 );
//				return;
//			}
			jDoc.ready();
		})();
	}
};
var userAgent = navigator.userAgent.toLowerCase();
var platform = navigator.platform.toLowerCase();
jDoc.browser = {
	version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
	isSafari: /webkit/.test( userAgent ),
	isOpera: /opera/.test( userAgent ),
	isMsie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
	isMozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ),
	isWin:/win32/.test(platform) || /windows/.test(platform)
};
/*var EventUtility = new Object;*/
jDoc.addEventHandler = function (oTarget, sEventType, fnHandler) {
    if (oTarget.addEventListener) {
        oTarget.addEventListener(sEventType, fnHandler, false);
    } else if (oTarget.attachEvent) {
        oTarget.attachEvent("on" + sEventType, fnHandler);
    } else {
        oTarget["on" + sEventType] = fnHandler;
    }
};
        
jDoc.removeEventHandler = function (oTarget, sEventType, fnHandler) {
    if (oTarget.removeEventListener) {
        oTarget.removeEventListener(sEventType, fnHandler, false);
    } else if (oTarget.detachEvent) {
        oTarget.detachEvent("on" + sEventType, fnHandler);
    } else { 
        oTarget["on" + sEventType] = null;
    }
};

jDoc.formatEvent = function (oEvent) {
    if (this.browser.isMsie && this.browser.isWin) {
        oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keyCode : 0;
        oEvent.eventPhase = 2;
        oEvent.isChar = (oEvent.charCode > 0);
        oEvent.pageX = oEvent.clientX + document.body.scrollLeft;
        oEvent.pageY = oEvent.clientY + document.body.scrollTop;
        oEvent.preventDefault = function () {
            this.returnValue = false;
        };

        if (oEvent.type == "mouseout") {
            oEvent.relatedTarget = oEvent.toElement;
        } else if (oEvent.type == "mouseover") {
            oEvent.relatedTarget = oEvent.fromElement;
        }

        oEvent.stopPropagation = function () {
            this.cancelBubble = true;
        };

        oEvent.target = oEvent.srcElement;
        oEvent.time = (new Date).getTime();
    }
    return oEvent;
};

jDoc.getEvent = function() {
    if (window.event) {
        return this.formatEvent(window.event);
    } else {
        return jDoc.getEvent.caller.arguments[0];
    }
};

jDoc.each = function( object, callback, args ){
	if(args){
		if(object.length == undefined){
			for(var name in object)
				if(callback.apply( object[ name ], args) === false)
					break;
		}else
			for (var i = 0,length = object.length; i < length; i++)
				if (callback.apply( object[ i ], args ) === false)
					break;
	}else{
		if(object.length == undefined) {
			for(var name in object)
				if ( callback.call( object[ name ], name, object[ name ] ) === false )
					break;
		}else
			for(var i = 0, length = object.length, value = object[0]; 
				i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
	}
	return object;
};
