Drag = {
    _move: null,
    _down: null,
    
    start: function(e) {
        e.stop();
        Drag._target = e.target();
        Drag._offset = Drag._diff(e.mouse().page, getElementPosition(Drag._target));
        Drag._move = connect(document, 'onmousemove', Drag._drag);
        Drag._down = connect(document, 'onmouseup', Drag._stop);
    },

    _offset: null,
    _target: null,
    
    _diff: function(lhs, rhs) {
        return new MochiKit.Style.Coordinates(lhs.x - rhs.x, lhs.y - rhs.y);
    },
	
    _drag: function(e) {
        e.stop();
        setElementPosition(
            Drag._target,
            Drag._diff(e.mouse().page, Drag._offset));
    },
    
    _stop: function(e) {
        disconnect(Drag._move);
        disconnect(Drag._down);
    }
};

mydrag = {
    _move: null,
    _down: null,
    
    start: function(e) {
        e.stop();
        mydrag._target = getFirstParentByTagAndClassName(e.target(), "DIV", 'float_menu');
        mydrag._offset = mydrag._diff(
            e.mouse().page,
            getElementPosition(mydrag._target));
        
        mydrag._move = connect(document, 'onmousemove', mydrag._drag);
        mydrag._down = connect(document, 'onmouseup', mydrag._stop);
    },

    _offset: null,
    _target: null,
    
    _diff: function(lhs, rhs) {
        return new MochiKit.Style.Coordinates(lhs.x - rhs.x, lhs.y - rhs.y);
    },
        
    _drag: function(e) {
        e.stop();
        setElementPosition(
            mydrag._target,
            mydrag._diff(e.mouse().page, mydrag._offset));
    },
    
    _stop: function(e) {
		var pos = getElementPosition(mydrag._target)
		var d = MochiKit.Async.doXHR('/service/position/'+pos.x+'/'+pos.y+'/');

		var l = new DeferredList([d], false, false, true);
		var console = document.createElement("div");
		document.body.appendChild(console);
		l.addCallback(function (resultList) {
		    MochiKit.Base.map(function (result) {
		        if (result[0]) {
		            //console.innerHTML = result[1].responseText;
		        } else {
		            //console.innerHTML = result[1];
		        }
		    }, resultList);
		});
		
        disconnect(mydrag._move);
        disconnect(mydrag._down);
    }
};

connect(window, 'onload',   
    function() {
		var sh = getElementsByTagAndClassName('A', 'map_hs');
		forEach(sh,
            function(elem) {
				connect(elem, 'onmouseover', 
					function (elem) {
						if (getStyle('map', 'display')=="none") {
							showElement('map');
							showElement('tel');							
						} else {
							hideElement('map');
							hideElement('tel');
						}

						});
			});
        var float_menus = getElementsByTagAndClassName('DIV', 'float_menu');
        forEach(float_menus,
            function(elem) {
				setElementPosition(elem, coord);
            });
			
		var admin_consols = getElementsByTagAndClassName('DIV', 'Admin_Console');
        forEach(admin_consols,
            function(elem) {
                connect(elem, 'onmousedown', Drag.start);
            });
			
		var float_menu_heads = getElementsByTagAndClassName('DIV', 'float_menu_head');
        forEach(float_menu_heads,
            function(elem) {
                connect(elem, 'onmousedown', mydrag.start);
            });
			
		var float_menu_hides = getElementsByTagAndClassName('DIV', 'float_menu_hide');
		forEach(float_menu_hides,
            function(elem) {
				if (hideMenu == 1) {
					hideElement(elem);
				}
				
				connect(elem, 'onclick', function (elem) 
				{
//					parents = getFirstParentByTagAndClassName(elem, 'DIV', 'float_menu');
					slideUp('float_menu_elem');
					hideElement('float_menu_hide');
					showElement('float_menu_view');
					
					var d = MochiKit.Async.doXHR('/service/hide/1/');
		
					var l = new DeferredList([d], false, false, true);
					var console = document.createElement("div");
					document.body.appendChild(console);
					l.addCallback(function (resultList) {
				    	MochiKit.Base.map(function (result) {
					        if (result[0]) {
//					            //console.innerHTML = result[1].responseText;
				    	    } else {
			        	    	//console.innerHTML = result[1];
				       		}
				    	}, resultList);
					});
				});
            });
		
		var float_menu_views = getElementsByTagAndClassName('DIV', 'float_menu_view');
		forEach(float_menu_views,
            function(elem) {
				if (!hideMenu == 1) {
					hideElement(elem);
				}
				
		        connect(elem, 'onclick', function (elem) 
				{
//					parents = getFirstParentByTagAndClassName(elem, 'DIV', 'float_menu');
					slideDown('float_menu_elem');
					hideElement('float_menu_view');
					showElement('float_menu_hide');
					
					var d = MochiKit.Async.doXHR('/service/hide/0/');
		
					var l = new DeferredList([d], false, false, true);
					var console = document.createElement("div");
					document.body.appendChild(console);
					l.addCallback(function (resultList) {
				    	MochiKit.Base.map(function (result) {
					        if (result[0]) {
//					            //console.innerHTML = result[1].responseText;
				    	    } else {
			        	    	//console.innerHTML = result[1];
				       		}
				    	}, resultList);
					});
				});
			});
		if (getElement("float_menu"))	{
		if (hideMenu == 1) {
			var float_menu_elems = getElementsByTagAndClassName('DIV', 'float_menu_elem');
			forEach(float_menu_elems,
    	        function(elem) {
					hideElement('float_menu_elem');
				});
		}}
    });
