﻿/*
 * Library for Javascript 
 *
 * Created On:  15/11/07
 * Update On:   11:57PM  2/26/2009
 * Author:  Hoàng Việt Dũng
 * Email : dunghoang.it@gmail.com
 * Tel : 0123 232 5150
 */
//////////////////////////////////////////////////////////////////////////////////////////////////
//0.    iBrowserType        --> Loại trình duyệt
//1.	srcElement(event); 	--> trả về đối tượng mà chuột vừa tương tác
//2.	mouseX(event); 		--> trả về tọa độ X của chuột
//3.	mouseY(event);		--> trả về tọa độ Y của chuột
//4.	x_sovoi_vungchua(event)	--> trả về tọa độ x của chuột so với vùng thẻ mà chuột đang chỉ vào
//5.	y_sovoi_vungchua(event)	--> trả về tọa độ y của chuột so với vùng thẻ mà chuột đang chỉ vào
//6.	setPosition(obj,top,left)	 --> đặt tọa độ cho 1 tag, obj là dối tượng cần set tọa độ
//7.	getPosition(objElement) 	 --> lấy tọa độ đối tượng . Sử dụng var pos = getPosition(obj).x hoặc .y
//8. 	body() 	--> trả về đối tượng body, có thể dùng cho body().scrollTop hoặc body().scrollLeft
//9. 	winWd() --> Hàm trả về chiều Ngang vùng bên trong cửa sổ
//10. 	winHt() --> Hàm trả về chiều Cao vùng bên trong cửa sổ
//11.	keyCode(e) --> Trả về mã phím bấm
//12.   xEvent(evt) --> Sự kiện chung cho các trình duyệt
/*
                typestring - event type
                targetelement - target of event
                relatedTargetelement - 'from' or 'to' target on mouseover or mouseout
                pageXinteger - absolute X coordinate of mouse
                pageYinteger - absolute Y coordinate of mouse
                offsetXinteger - target-relative X coordinate of mouse
                offsetYinteger - target-relative Y coordinate of mouse
                keyCodeunsigned integer
                shiftKeyboolean
                ctrlKeyboolean
                altKeyboolean
                buttonunsigned integer - 0=left, 1=middle, 2=right, undefined=non-mouse event
*/
//13.   mywindow() w:myWidth, h:myHeight  --> Kích thước cửa sổ
///////////////////////////////////////////////////////////////////////////////////////////////////

var dom = (document.getElementById) ? true : false;
var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ns4 = (document.layers && !dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;


/* OS / Browser Detect. Written by Joe McCormack. www.virtualsecrets.com */
var iBrowserType = 0;
function GetBrowserType() {
    /*
    0 = Unknown Browser
    1 = Safari
    2 = Internet Explorer
    3 = Firefox
    4 = Netscape
    5 = Opera
    6 = Camino
    7 = Firebird
    8 = Google Chrome
    */
    var browser_detect = navigator.userAgent.toLowerCase();
   
    if ((browser_detect.indexOf("safari") + 1)) { iBrowserType = 1; }
    else if ((browser_detect.indexOf("msie") + 1)) { iBrowserType = 2; }
    else if ((browser_detect.indexOf("firefox") + 1)) { iBrowserType = 3; }
    else if ((browser_detect.indexOf("netscape") + 1)) { iBrowserType = 4; }
    else if ((browser_detect.indexOf("opera") + 1)) { iBrowserType = 5; }
    else if ((browser_detect.indexOf("camino") + 1)) { iBrowserType = 6; }
    else if ((browser_detect.indexOf("firebird") + 1)) { iBrowserType = 7; }
    
    if (browser_detect.indexOf("chrome") == 87) { iBrowserType = 8; }
}
//-->
GetBrowserType();

///////////////////////////////////////////////////////////////////////////////////////////////////
//	Hàm này trả lại đối tượng mà chuột click vào
///////////////////////////////////////////////////////////////////////////////////////////////////
function srcElement(e)
{
	if (!e)	e=window.event;
	// Internet Explorer
	if (e.srcElement)
	{
	element = e.srcElement;
	}
	// Netscape and Firefox
	else if (e.target)
	{
	element = e.target;		
	}  
	return element;
}


///////////////////////////////////////////////////////////////////////////////////////////////////
//	Hàm trả về tọa độ X của chuột
///////////////////////////////////////////////////////////////////////////////////////////////////
function mouseX(e) {
	if (!e)	e=window.event;		
	var mouseX = 0;
	if(e.pageX)	mouseX = e.pageX;
	if(e.clientX) mouseX = e.clientX;
	return mouseX+body().scrollLeft;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//	Hàm trả về tọa độ Y của chuột
///////////////////////////////////////////////////////////////////////////////////////////////////
function mouseY(e) {	
	if (!e)	e=window.event;	
	var mouseY = 0;
	if(e.pageY)	mouseY = e.pageY;
	if(e.clientY) mouseY = e.clientY;	
	return mouseY+body().scrollTop;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//	Hàm trả về chiều Ngang vùng bên trong cửa sổ
///////////////////////////////////////////////////////////////////////////////////////////////////
function winWd(){
	var winWd = 0;
	var winWd = (ns4||ns5)? window.innerWidth-20+window.pageXOffset: document.body.clientWidth+document.body.scrollLeft;
	return winWd;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//	Hàm trả về chiều cao vùng bên trong cửa sổ
///////////////////////////////////////////////////////////////////////////////////////////////////
function winHt(){
	var winHt= 0;
	var winHt = (ns4||ns5)? window.innerHeight-20+window.pageYOffset: document.body.clientHeight+document.body.scrollTop;
	return winHt;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//	Tọa độ x của chuột so với vùng chứa
///////////////////////////////////////////////////////////////////////////////////////////////////
function x_sovoi_vungchua(e){
	if(iBrowserType != 1 && iBrowserType != 8)
	{
	    if (!e)	e=window.event;	
	    // Internet Explorer
	    if (e.x)x = e.x;
	    // Netscape and Firefox
	    else if (e.layerX)	x = e.layerX;	
	    return x;
	}
	else
	{
	    if (!e)	e = xEvent(e);
	    return e.offsetX;	
	}    
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//	Tọa độ y của chuột so với vùng chứa
///////////////////////////////////////////////////////////////////////////////////////////////////
function y_sovoi_vungchua(e){	
    // IF NOT Safari, chrome
	if(iBrowserType != 1 && iBrowserType != 8)
	{
	    if (!e)	e=window.event;
	    // Internet Explorer
	    if (e.y)	y = e.y;
	    // Netscape and Firefox
	    else if (e.layerY)	y = e.layerY;
	    return y;
	}
	else // Safari, chrome
	{
	    if (!e)	e = xEvent(e);
	    return e.offsetY;
	}
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//	Đặt tọa độ cho 1 tag
///////////////////////////////////////////////////////////////////////////////////////////////////

function setPosition(obj,top,left){
	obj.style.left=left+'px';
	obj.style.top =top + 'px';
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//	Đọc tọa độ của 1 tag
///////////////////////////////////////////////////////////////////////////////////////////////////

function getPosition(objElement){
	var left = 0;
	var top  = 0;

	while (objElement.offsetParent){
		left += objElement.offsetLeft;
		top  += objElement.offsetTop;
		objElement     = objElement.offsetParent;
	}
	left += objElement.offsetLeft;
	top  += objElement.offsetTop;
	return {x:left, y:top};
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//	Trả về đối tượng body
///////////////////////////////////////////////////////////////////////////////////////////////////

function body(){
    // IF NOT Safari, chrome
    if(iBrowserType != 1 && iBrowserType != 8)
        return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
    else  
        return document.body;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//	Trả về mã phím bấm
///////////////////////////////////////////////////////////////////////////////////////////////////

function keyCode(e) { 
	var evt=(e)?e:(window.event)?window.event:null; 
	if(evt){
		var key=(evt.charCode)?evt.charCode: ((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0)); 
		return key;
	}
} 


///////////////////////////////////////////////////////////////////////////////////////////////////
//	thay cho window.event(e)
///////////////////////////////////////////////////////////////////////////////////////////////////

function xEvent(evt) // object prototype
{
    var e = evt || window.event;
    if (!e) return;
    this.type = e.type;
    this.target = e.target || e.srcElement;
    this.relatedTarget = e.relatedTarget;
    /*@cc_on if (e.type == 'mouseover') this.relatedTarget = e.fromElement;
    else if (e.type == 'mouseout') this.relatedTarget = e.toElement; @*/
    if (xDef(e.pageX)) { this.pageX = e.pageX; this.pageY = e.pageY; }
    else if (xDef(e.clientX)) { this.pageX = e.clientX + xScrollLeft(); this.pageY = e.clientY + xScrollTop(); }
    if (xDef(e.offsetX)) { this.offsetX = e.offsetX; this.offsetY = e.offsetY; }
    else if (xDef(e.layerX)) { this.offsetX = e.layerX; this.offsetY = e.layerY; }
    else { this.offsetX = this.pageX - xPageX(this.target); this.offsetY = this.pageY - xPageY(this.target); }
    this.keyCode = e.keyCode || e.which || 0;
    this.shiftKey = e.shiftKey; this.ctrlKey = e.ctrlKey; this.altKey = e.altKey;
    if (typeof e.type == 'string') {

    if (e.type.indexOf('click') != -1) {this.button = 0;}
    else if (e.type.indexOf('mouse') != -1) {
        this.button = e.button;
        /*@cc_on if (e.button & 1) this.button = 0;
        else if (e.button & 4) this.button = 1;
        else if (e.button & 2) this.button = 2; @*/
        }
    }
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//	kích thước cửa sổ
///////////////////////////////////////////////////////////////////////////////////////////////////

function mywindow() {
    var myWidth = 0, myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }

    return {w:myWidth, h:myHeight};
}