function Browser() {

var ua, s, i;

this.isIE = false;
this.isNS = false;
this.version = null;

ua = navigator.userAgent;

s = "MSIE";
if ((i = ua.indexOf(s)) >= 0) {
this.isIE = true;
this.version = parseFloat(ua.substr(i + s.length));
return;
}

s = "Netscape6/";
if ((i = ua.indexOf(s)) >= 0) {
this.isNS = true;
this.version = parseFloat(ua.substr(i + s.length));
return;
}

// Treat any other "Gecko" browser as NS 6.1.

s = "Gecko";
if ((i = ua.indexOf(s)) >= 0) {
this.isNS = true;
this.version = 6.1;
return;
}
}

var browser = new Browser();

// Global object to hold drag information.

var dragObj = new Object();
dragObj.zIndex = 0;

function iphoneMove(event, id, frogid) {
	
	
	if (event.touches) {

	    if (event.touches.length == 1) {

	        event.preventDefault();

	        var touch = event.touches[0];
	        dragObj.frogId = frogid;
	        var node = document.getElementById(id);

	    	//alert(touch.pageX + ", " + touch.pageY);

	        //node.style.position = "absolute";
	        node.style.left = touch.pageX + "px";
	        node.style.top = touch.pageY + "px";
	        
	    	
	    }
		
	}
	
}

function dragStart(event, id, frogid) {

    var el;
    var x, y;

    // If an element id was given, find it. Otherwise use the element being
    // clicked on.

    if (frogid) {
        dragObj.frogId = frogid;
    }

    if (id) {
    
        dragObj.elNode = document.getElementById(id);
        
    } else {
    
        if (browser.isIE) {
            dragObj.elNode = window.event.srcElement;
        }
        
        if (browser.isNS) {
            dragObj.elNode = event.target;
        }

        // If this is a text node, use its parent element.

        if (dragObj.elNode.nodeType == 3) {
            dragObj.elNode = dragObj.elNode.parentNode;
        }
        
    }

    // Get cursor position with respect to the page.

    if (browser.isIE) {
        x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    }
    
    if (browser.isNS) {
        x = event.clientX + window.scrollX;
        y = event.clientY + window.scrollY;
    }

    // Save starting positions of cursor and element.

    dragObj.widthStart = dragObj.elNode.style.width.replace(/px/gi, "");
    dragObj.heightStart = dragObj.elNode.style.height.replace(/px/gi, "");

    dragObj.cursorStartX = x;
    dragObj.cursorStartY = y;
    dragObj.elStartLeft = parseInt(dragObj.elNode.style.left, 10);
    dragObj.elStartTop = parseInt(dragObj.elNode.style.top, 10);

    if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
    if (isNaN(dragObj.elStartTop)) dragObj.elStartTop = 0;

    // Update element's z-index.

    dragObj.elNode.style.zIndex = ++dragObj.zIndex;

    // Capture mousemove and mouseup events on the page.

    if (browser.isIE) {
        document.attachEvent("onmousemove", dragGo);
        document.attachEvent("onmouseup", dragStop);
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
    
    if (browser.isNS) {
        document.addEventListener("mousemove", dragGo, true);
        document.addEventListener("mouseup", dragStop, true);
        event.preventDefault();
    }
    
}

function dragGo(event) {

    var x, y;

    // Get cursor position with respect to the page.

    if (browser.isIE) {
        x = window.event.clientX + document.documentElement.scrollLeft
            + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop
            + document.body.scrollTop;
    }

    if (browser.isNS) {
        x = event.clientX + window.scrollX;
        y = event.clientY + window.scrollY;
    }

    // Move drag element by the same amount the cursor has moved.

    var newLeft = (dragObj.elStartLeft + x - dragObj.cursorStartX);
    var newTop = (dragObj.elStartTop + y - dragObj.cursorStartY);
    
    if (newLeft < 5) {
        newLeft = 5;
    }
    
    if (newTop < 70) {
        newTop = 70;
    }

    dragObj.elNode.style.left = newLeft + "px";
    dragObj.elNode.style.top = newTop + "px";

    if (browser.isIE) {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }

    if (browser.isNS)
        event.preventDefault();

}

function dragStop(event) {

    var frog = frogsArray[dragObj.frogId];
    if (frog) {
    
        frog.updatePosition(dragObj.elNode.style.top, dragObj.elNode.style.left);
    
    }

    // Stop capturing mousemove and mouseup events.

    if (browser.isIE) {
        document.detachEvent("onmousemove", dragGo);
        document.detachEvent("onmouseup", dragStop);
    }
    
    if (browser.isNS) {
        document.removeEventListener("mousemove", dragGo, true);
        document.removeEventListener("mouseup", dragStop, true);
    }
    
}
