function doWidthChangeMem(elem,startWidth,endWidth,steps,intervals,powr) {
    //Width changer with Memory by www.hesido.com
    if (elem.widthChangeMemInt)
        window.clearInterval(elem.widthChangeMemInt);
    var actStep = 0;
    elem.widthChangeMemInt = window.setInterval(
        function() {
            elem.currentWidth = easeInOut(startWidth,endWidth,steps,actStep,powr);
            elem.style.width = elem.currentWidth + "px";
            actStep++;
            if (actStep > steps) window.clearInterval(elem.widthChangeMemInt);
        }
        ,intervals)
}

function widthChange(elm, from, to) {
if (!elm.currentWidth) elm.currentWidth = from;
//if no memory is set, set it first;
doWidthChangeMem(elm,elm.currentWidth,to,10,10,0.5);
}
function widthRestore(elm, to) {
    if (!elm.currentWidth) return;
    doWidthChangeMem(elm,elm.currentWidth,to,10,10,0.5);
}


function doHeightChangeMem(elem,startHeight,endHeight,steps,intervals,powr) {
    //Width changer with Memory by www.hesido.com
    if (elem.heightChangeMemInt)
        window.clearInterval(elem.heightChangeMemInt);
    var actStep = 0;
    elem.heightChangeMemInt = window.setInterval(
        function() {
            elem.currentHeight = easeInOut(startHeight,endHeight,steps,actStep,powr);
            elem.style.height = elem.currentHeight + "px";
            actStep++;
            if (actStep > steps) window.clearInterval(elem.heightChangeMemInt);
        }
        ,intervals)
}


function heightChange(elm, from, to) {
if (!elm.currentHeight) elm.currentHeight = from;
//if no memory is set, set it first;
doHeightChangeMem(elm,elm.currentHeight,to,10,10,0.5);
}
function heightRestore(elm, to) {
    if (!elm.currentHeight) return;
    doHeightChangeMem(elm,elm.currentHeight,to,10,10,0.5);
}

function easeInOut(minValue,maxValue,totalSteps,actualStep,powr) {
//Generic Animation Step Value Generator By www.hesido.com
var delta = maxValue - minValue;
var stepp = minValue+(Math.pow(((1 / totalSteps) * actualStep), powr) * delta);
return Math.ceil(stepp)
} 
