﻿var asfman = {};
asfman.getCurrentStyle = function(obj, prop) {
    if (obj!=null && obj.currentStyle) {
        return obj.currentStyle[prop];
    } else if (window.getComputedStyle) {
        prop = prop.replace(/([A-Z])/g, "-$1");
        return window.getComputedStyle(obj, null).getPropertyValue(prop);
    }
    return null;
};

asfman.getPosition = function(o) {
    o = typeof obj == "object" ? o : document.getElementById(o);
    var rObj = { left: 0, top: 0, width: o.offsetWidth, height: o.offsetHeight }, iBorderLeft, iBorderTop;
    while (o!=null && o != document.body) {

        iBorderLeft = parseInt(asfman.getCurrentStyle(o.offsetParent, "borderLeftWidth"), 10);
        iBorderTop = parseInt(asfman.getCurrentStyle(o.offsetParent, "borderTopWidth"), 10);
        iBorderLeft = iBorderLeft ? iBorderLeft : 0;
        iBorderTop = iBorderTop ? iBorderTop : 0;
        rObj.left += o.offsetLeft + iBorderLeft;
        rObj.top += o.offsetTop + iBorderTop;
        o = o.offsetParent;
    }
    return rObj;
};
asfman.flyTo = function(ops, ope, obj, speed, callback) {
    var sX = ops.left || 0, sY = ops.top || 0, eX = ope.left || 0, eY = ope.top || 0,
    sW = ops.width || 0, sH = ops.height || 0, eW = ope.width || 0, eH = ope.height || 0;
    sX = parseInt(sX, 10) || 0;
    sY = parseInt(sY, 10) || 0;
    eX = parseInt(eX, 10) || 0;
    eY = parseInt(eY, 10) || 0;
    sW = parseInt(sW, 10) || 0;
    sH = parseInt(sH, 10) || 0;
    eW = parseInt(eW, 10) || 0;
    eH = parseInt(eH, 10) || 0;
    speed = speed ? speed : 20;
    obj = typeof obj == "object" ? obj : document.getElementById(obj);
    var r = 1;
    function fly() {
        var iTimer = setInterval(function() {
            if (r > 10) {
                clearInterval(iTimer);
                callback && callback();
                return;
            }
            obj.style.width = (eW - sW) * r / 10 + sW + "px";
            obj.style.height = (eH - sH) * r / 10 + sH + "px";
            obj.style.left = (eX - sX) * r / 10 + sX + "px";
            obj.style.top = (eY - sY) * r / 10 + sY + "px";
            r++;
        }, speed);
    }
    fly();
};

