	var Dom = new Object;

	Dom.getLocation = function (el) {
		var c = { x : 0, y : 0 };
		while (el) {
			c.x += el.offsetLeft;
			c.y += el.offsetTop;
			el = el.offsetParent;
		}
		return c;
	};

	/**
      * Gets the current position of an element based on page coordinates.  
      @ return {Array} The XY position of the element(s)
    */
	
	Dom.getXY = function (el) {
		var ua = navigator.userAgent.toLowerCase();
		//(display:none or elements not appended return false)
		if(el.parentNode == null || el.style.display == 'none') {
			return false;
		}
		
		var parnet = null;
		var pos = [];
		var box;
		
		if(el.getBoundingClientRect) { // IE
        	box = el.getBoundingClientRect();
            var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
            var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
            pos = [box.x + scrollLeft, box.y + scrollTop];   
        
        return {x:pos[0], y:pos[1]};
        
        } else if (document.getBoxObjectFor) { // gecko
        	box = document.getBoxObjectFor(el);
            pos = [box.x, box.y];
        } else { // safari & opera
        	pos = [el.offsetLeft, el.offsetTop];
            parent = el.offsetParent;
            if (parent != el) {
            	while (parent) {
                	pos[0] += parent.offsetLeft;
                    pos[1] += parent.offsetTop;
                    parent = parent.offsetParent;
                }
			}
			
			
            if ( ua.indexOf('opera') != -1 || ( ua.indexOf('safari') != -1 && this.getStyle(el, 'position') == 'absolute' ) ) {
                  pos[0] -= document.body.offsetLeft;
                  pos[1] -= document.body.offsetTop;
            } 
        }
            
        if (el.parentNode) { parent = el.parentNode; }
        else { parent = null; }
      
        while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') 
        { // account for any scrolled ancestors
        	pos[0] -= parent.scrollLeft;
            pos[1] -= parent.scrollTop;
      
            if (parent.parentNode) { parent = parent.parentNode; } 
            else { parent = null; }
        }
      
        return {x:pos[0], y:pos[1]};
	};
	
	/**
	 * Normalizes currentStyle and ComputedStyle
	 * ÅÂ±×¿¡ Á÷Á¢ style ¼Ó¼ºÀ» ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ì¿¡´Â Æ¯Á¤ ¿ä¼Ò °´Ã¼ÀÇ style ÇÁ·ÎÆÛÆ¼¸¦ »ç¿ëÇØ¼­  °ªÀ» ¾ò¾î ¿Ã ¼ö ¾ø´Â °æ¿ì°¡ ÀÖ´Ù.
	 * IE¿¡¼­´Â currentStyle·Î ¾òÀ» ¼ö ÀÖ´Ù.
	 */
	
	Dom.getStyle = function(el, property) {
    	var value = null;
        var dv = document.defaultView;
            
        if (property == 'opacity' && el.filters) {// IE opacity
        	value = 1;
            try {
            	value = el.filters.item('DXImageTransform.Microsoft.Alpha').opacity / 100;
            } catch(e) {
				try {
                     value = el.filters.item('alpha').opacity / 100;
                } catch(e) {}
			}
        } else if (el.style[property]) { //style °ªÀ» ±¸ÇÒ ¼ö ÀÖ´Â °æ¿ì 
			value = el.style[property];
		} else if (el.currentStyle && el.currentStyle[property]) { //IE
        	value = el.currentStyle[property];
		} else if ( dv && dv.getComputedStyle ) {  // convert camelCase to hyphen-case
			var converted = '';
            /**
			javascript¿¡¼­ Æ¯Á¤ ÇÁ·ÎÆÛÆ¼ÀÇ ÀÌ¸§¿¡ ´ë½Ã(-)¸¦ »ç¿ëÇÒ ¼ö ¾ø±â ¶§¹®¿¡ , ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼­´Â CSS¿¡ ÁöÁ¤ÇÑ ½ºÅ¸ÀÏ ÀÌ¸§¿¡ 
			´ë½Ã(-)°¡ Æ÷ÇÔµÉ °æ¿ì, ´ë½Ã¸¦ »èÁ¦ÇÏ°í, ´ë½Ã ´ÙÀ½ÀÇ ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î º¯È¯ÇØ¼­ ½ºÅ¸ÀÏÀ» Ç¥½ÃÇÏµµ·Ï µÇ¾î ÀÖÀ½.
			*/
            for(var i = 0, len = property.length;i < len; ++i) {
            	if (property.charAt(i) == property.charAt(i).toUpperCase()) {
                	converted = converted + '-' + property.charAt(i).toLowerCase();
                } else {
                	converted = converted + property.charAt(i);
                }
			}
            
            if (dv.getComputedStyle(el, '') && dv.getComputedStyle(el, '').getPropertyValue(converted)) {
            	value = dv.getComputedStyle(el, '').getPropertyValue(converted);
            }
        }
      
        return value;
    };
    
    Dom.removeChildsAll = function(el) {
    	var i;
    	var iLength = el.childNodes.length;
    	var rList = [];
    	for (i = 0; i < iLength; i += 1) {
    		rList[i] = el.childNodes[i]
    	}
    	for (i = 0; i < iLength; i += 1) {
    		el.removeChild(rList[i]);
    	}
    };
		