/****************************************************************
Drag Classes - Copyright by Simon Käser
endlessx.com || admin@endlessx.com
this code could be used freely, as long as this message is
intact!

Modified by Sebastian Brink - cleaned the JavaScript
****************************************************************/

var check=( document &&
            document.getElementById  &&
            document.getElementsByTagName );

if(check)
{

        var drag_elm=false;
        var temp=document.onselectstart;

        document.getElementsByClassName=function(cls)
        {
                var arr=[];
                var n=document.getElementsByTagName('div').length;
                for(var x=0; x<n; x+=1)
                {
                        var ncls=document.getElementsByTagName('div')[x].className;
                        var nclsa=ncls.split(' ');
                        for(var y in nclsa)
                        {
                                ncls=nclsa[y];
                                if( ncls == cls ) {
                                   arr[ arr.length ]=document.getElementsByTagName( 'div' )[ x ];
                                }
                        }
                }
                return arr;
        };

        function checkover( elm, mx, my )
        {
                if( elm.parentNode.className == 'container' )
                {
                        mx-=elm.parentNode.offsetLeft;
                        my-=elm.parentNode.offsetTop;
                }
                if( mx > elm.offsetLeft  &&
                    mx < elm.offsetLeft + elm.offsetWidth &&
                    my > elm.offsetTop &&
                    my < elm.offsetTop + elm.offsetHeight ) {
                        return true;
                } else {
                        return false;
                }
        }

        document.onmousedown=function( e )
        {
			
	           drag_elm=false;
               var mx=window.event ? event.x : e.pageX;
               var my=window.event ? event.y : e.pageY;
               var drs=document.getElementsByClassName( 'draggable' );
               var n=drs.length;
               for(var x=(n-1); x>=0 ;x-=1)
               {
                       var elm=drs[ x ];
                       if( checkover( elm, mx, my ) )
                       {
                               document.onselectstart=function(){ return false; };
                               drag_elm=elm;
                               drag_elm.dx=mx - elm.offsetLeft;
                               drag_elm.dy=my - elm.offsetTop;
                               drag_elm.ex=false;
                               drag_elm.ey=false;
					
                               if( elm.parentNode.className == 'container' )
                               {
                                       drag_elm.ex=elm.parentNode.offsetWidth - elm.offsetWidth;
                                       drag_elm.ey=elm.parentNode.offsetHeight - elm.offsetHeight;
                               }
                               return drag_elm;
                       }
               }

        };

        document.onmouseup=function( e )
        {
                drag_elm=false;
                document.onselectstart=temp;
        };

        document.onmousemove=function( e )
        {
                var mx=window.event ? event.x : e.pageX;
                var my=window.event ? event.y : e.pageY;
                if( drag_elm )
                {
                        var x=mx - drag_elm.dx;
                        var y=my - drag_elm.dy;
                        if( drag_elm.ex )
                        {
                                if( mx - drag_elm.dx > drag_elm.ex ) {
                                        x=drag_elm.ex;
                                }
                                if( mx - drag_elm.dx < 0 ) {
                                        x=0;
                                }
                                if( my - drag_elm.dy > drag_elm.ey ) {
                                        y=drag_elm.ey;
                                }
                                if( my - drag_elm.dy < 0 ) {
                                        y=0;
                                }
                        }
                        drag_elm.style.left=x + "px";
                        drag_elm.style.top=y + "px";
                }
        };
}