var Q_drg_drp = {
/*
Browser: MSIE7, Firefox3, Safari3, Opera9
DTD: Quirks, Strict XHTML 1.0, Strict HTML 4.01
Created: 2008-08-17
Last Updated: 2008-09-19
Usage: 
    Q_drg_drp.add('i_objct_1');
    Q_drg_drp.add('i_objct_1','i_objct_2');
    Q_drg_drp.add('i_objct_1',window,'load');
    Q_drg_drp.add('i_objct_1','i_objct_2',window,'load');
//µå·¡±× ¾ÈµÇ´Â°ÍÀº <DIV> id¸¦ no_drag·Î ÇÏÀÚ
*/
     cntns : true
    ,cookie_date : function(year,day,hour,minute,second) {
        var today = new Date();
        var exprs = new Date();
        exprs.setTime( today.getTime()
                      +1000*60*60*24*365*year
                      +1000*60*60*24    *day
                      +1000*60*60       *hour
                      +1000*60          *minute
                      +1000             *second );
        return exprs;
    }
    ,cookie_get : function(name) {
        var srch = name + '=';
        if (document.cookie.length > 0) {
            offset = document.cookie.indexOf(srch);
            if (offset != -1) {
                offset += srch.length;
                end = document.cookie.indexOf(';', offset);
                if (end == -1) end = document.cookie.length;
                return unescape(document.cookie.substring(offset, end));
            } else return false;
        } else return false;
    }
    ,cookie_set : function(name,value,expires,path,domain,secure) {
        document.cookie =   name + '=' + escape(value)         + ';'
            + ((expires) ? ' expires=' + expires.toGMTString() + ';' : '')
            + ((path)    ? ' path='    + path                  + ';' : '')
            + ((domain)  ? ' domain='  + domain                + ';' : '')
            + ((secure)  ? ' secure'                           + ';' : '');
    }
    ,event_attach : function(objct,type,fnctn) {
        if(objct.addEventListener) { objct.addEventListener(type,fnctn,false); return true; } //Mozilla
        else if(objct.attachEvent) { var rtrn = objct.attachEvent('on'+type,fnctn); return rtrn; } //MSIE
        else objct.onclick = fnctn;
    }
    ,event_detach : function(objct,type,fnctn) {
        if(objct.removeEventListener) { objct.removeEventListener(type,fnctn,false); return true; } //Mozilla
        else if(objct.detachEvent)    { var rtrn = objct.detachEvent('on'+type,fnctn); return rtrn; } //MSIE
        else objct.onclick = null;
    }
    ,scrlld : function() {
        var arry = new Array(2);
        if(document.body.scrollLeft)                 arry[0] = document.body.scrollLeft;
        else if(document.documentElement.scrollLeft) arry[0] = document.documentElement.scrollLeft;
        if(document.body.scrollTop)                  arry[1] = document.body.scrollTop;
        else if(document.documentElement.scrollTop)  arry[1] = document.documentElement.scrollTop;
        return arry;
    }
    ,create : function(idntty_1,idntty_2) {
        var ghost     = this;
        this.idntty_1 = idntty_1;
        this.idntty_2 = idntty_2;
        this.objct_1  = null;
        this.objct_2  = null;
        this.clntX    = null;
        this.clntY    = null;
        this.lft      = null;
        this.top      = null;
		this.nodrag   = null;
	
				
        this.store = function() {
            var exprs = Q_drg_drp.cookie_date(0,1,0,0,0);
            var x = parseInt(ghost.objct_2.style.left);
            var y = parseInt(ghost.objct_2.style.top);
            var scrlld = Q_drg_drp.scrlld();
            if(typeof(scrlld[0])!='undefined') x -= scrlld[0];
            if(typeof(scrlld[1])!='undefined') y -= scrlld[1];
            Q_drg_drp.cookie_set('Q_'+ghost.idntty_2+'_x',x,exprs,'/',location.hostname);
            Q_drg_drp.cookie_set('Q_'+ghost.idntty_2+'_y',y,exprs,'/',location.hostname);
            Q_drg_drp.event_detach(document,'mouseup',ghost.store);
        };
        this.mousemove = function(e) {
            var delta_x = e.clientX-ghost.clntX;
            var delta_y = e.clientY-ghost.clntY;
            ghost.objct_2.style.left = ghost.lft+delta_x +'px';
            ghost.objct_2.style.top  = ghost.top+delta_y +'px';
        };
        this.mouseup = function() {
            Q_drg_drp.event_detach(document,'mousemove',ghost.mousemove);
            Q_drg_drp.event_detach(document,'mouseup'  ,ghost.mouseup);
           Q_drg_drp.event_detach(document,'mouseup'  ,ghost.mouseout);
        };
        this.mouseout = function() {
            Q_drg_drp.event_detach(document,'mousemove',ghost.mousemove);
            Q_drg_drp.event_detach(document,'mouseup'  ,ghost.mouseup);
            Q_drg_drp.event_detach(document,'mouseup'  ,ghost.mouseout);
        };
        this.mousedown = function(e) {
            ghost.clntX = e.clientX;
            ghost.clntY = e.clientY;
            ghost.lft   = parseInt(ghost.objct_2.style.left);
			
            ghost.top   = parseInt(ghost.objct_2.style.top);
            if(e.srcElement) {
				//MSIEÀÏ°æ¿ì¸¸... ½ºÅ©·Ñ¹Ù¿¡¼­ µå·¡±× ¾ÈµÇ°ÔÇÏÀÚ -- ¹ö±×ÀÓ
				
				if (e.srcElement.style.overflowY == "scroll" || e.srcElement.style.overflowY == "auto" || e.srcElement.style.overflowX == "scroll" || e.srcElement.style.overflowX == "auto" || e.srcElement.style.overflow == "scroll" || e.srcElement.style.overflow == "auto") {
					return false;
				} 
				
				Q_drg_drp.event_attach(e.srcElement,'dragstart',function(){return false;}); //MSIE
			}
            Q_drg_drp.event_attach(document,'mousemove',ghost.mousemove);
            Q_drg_drp.event_attach(document,'mouseup'  ,ghost.mouseup);
            //Q_drg_drp.event_attach(document,'mouseout' ,ghost.mouseout);
            Q_drg_drp.event_attach(document,'mouseup'  ,ghost.store);
			 
        };
        this.should = function() {
            var arry = new Array(2);
            arry[0] = parseInt(Q_drg_drp.cookie_get('Q_'+ghost.idntty_2+'_x'));
            arry[1] = parseInt(Q_drg_drp.cookie_get('Q_'+ghost.idntty_2+'_y'));
            if(!arry[0]) arry[0] = parseInt(ghost.objct_2.style.left);
            if(!arry[1]) arry[1] = parseInt(ghost.objct_2.style.top);
            var scrlld = Q_drg_drp.scrlld();
            if(typeof(scrlld[0])!='undefined') arry[0] += scrlld[0];
            if(typeof(scrlld[1])!='undefined') arry[1] += scrlld[1];
            return arry;
        };
        this.start = function() {
            ghost.objct_1 = document.getElementById(ghost.idntty_1);
            ghost.objct_1.style.cursor = 'move';
            ghost.objct_1.onmousedown = function() { return false; }; //Mozilla
            ghost.objct_2 = document.getElementById(ghost.idntty_2);
            if(Q_drg_drp.cntns) {
                var shld = ghost.should();
                ghost.objct_2.style.left = shld[0]+'px';
                ghost.objct_2.style.top  = shld[1]+'px';
            }
            Q_drg_drp.event_attach(ghost.objct_1,'mousedown',ghost.mousedown);
        };
    }
    ,add : function() {
        if(arguments.length==4) {
            var ghost = new Q_drg_drp.create(arguments[0],arguments[1]);
            Q_drg_drp.event_attach(arguments[2],arguments[3],ghost.start);
        } else if(arguments.length==3) {
            var ghost = new Q_drg_drp.create(arguments[0],arguments[0]);
            Q_drg_drp.event_attach(arguments[1],arguments[2],ghost.start);
        } else if(arguments.length==2) {
            var ghost = new Q_drg_drp.create(arguments[0],arguments[1]);
            ghost.start();
        } else if(arguments.length==1) {
            var ghost = new Q_drg_drp.create(arguments[0],arguments[0]);
            ghost.start();
        }
    }
};

