  function SwitchFrame(elemNameIn, elemNameOut) {
          var elemOut = document.getElementById(elemNameOut);
          var elemIn = document.getElementById(elemNameIn);
          doFrameAnimation(elemOut, elemIn, "out", 0, 0+(parseInt(elemOut.style.height)-50), 30, 10, 0.8);
  }

  function _setOpacity(testObj,value) {
           value = parseInt(value);
           testObj.style.filter = 'alpha(opacity=' + value*10 + ')';
           testObj.style.opacity = value/10;
  }

  function doFrameAnimation(elem, elemIn, direction, startPos, endPos, steps, intervals, power) {
           if (elem.myInterval) { window.clearInterval(elem.myInterval); }
           var actStep = 0;
           if (direction == "in") { setOpacity(elem,0); }
           elem.style.display = 'block';
           elem.setAttribute('AnimationDirection','fw');
           if (direction == "in") { elem.style.top = startPos; }

           elem.myInterval = window.setInterval(
                           function() {
                                      var animation = elem.getAttribute('AnimationDirection');
                                      if (direction == "in") {
                                         elem.style.top = easeInOut(startPos, endPos, steps, actStep, power);
                                         setOpacity(elem, easeInOut(-3, 10, steps, actStep, power));
                                      }else{
                                         if (animation == "fw") {
                                               elem.style.top = easeInOut(startPos, parseInt(startPos)+100, steps, actStep, 0.3);
                                         }else{
                                               elem.style.top = easeInOut(startPos, -parseInt(elem.style.height), steps, actStep, power);
                                               setOpacity(elem,easeInOut(10, -3, steps, actStep, power));
                                         }
                                      }
                                      actStep++;
                                      if (actStep > steps) {
                                         if (direction == "out") {
                                           if (animation == "fw") {
                                              actStep = 0;
                                              elem.setAttribute('AnimationDirection','bk');
                                           }else{
                                                 window.clearInterval(elem.myInterval);
                                                 elem.style.display = 'none';
                                                 elem.style.top = 0;
                                                 doFrameAnimation(elemIn, null, "in", 0+(parseInt(elemIn.style.height)-50), 0, 50, 10, 0.8);
                                           }
                                         }else{
                                           window.clearInterval(elem.myInterval);
                                         }
                                      }
                           },intervals);
  }

  function easeInOut(minValue, maxValue, totalSteps, actualStep, power) {
           var delta = maxValue - minValue;
           var stepp = minValue+(Math.pow(((1 / totalSteps) * actualStep), power) * delta);
           return Math.ceil(stepp)
  }


  function easeMoving(elem, amount, maxmove) {
           if (elem.myInterval) { window.clearInterval(elem.myInterval); }
           var actStep = 0;
           startPos = parseInt(elem.style.left);
           endPos = parseInt(elem.style.left)+parseInt(amount);
           steps = 100;
           intervals = 10;
           power = 0.5;
           elem.myInterval = window.setInterval(
                           function() {
                                      if (endPos < parseInt(-maxmove)) {
                                         endPos = parseInt(-maxmove);
                                      }
                                      if (endPos > 0) {
                                         endPos = 0;
                                      }
                                      newleft = easeInOut(startPos, endPos, steps, actStep, power);
                                      elem.style.left = newleft;
                                      actStep++;
                                      if (actStep > steps) {
                                           window.clearInterval(elem.myInterval);
                                      }
                           },intervals);
  }
