var mousePressed = false;
var posX,posY;
var pageX,pageY;

var offsetMoveX;
var offsetMoveY;

var isIeb = util_isIeP();
var isMac = util_isMacP();
var isSafari = util_isSafari();


function util_isSafari() { 
   return navigator.userAgent.toUpperCase().indexOf("SAFARI")>-1; 
}

function util_isIeP() {
   return (navigator.appName.indexOf("Explorer") >= 0) ? true :false
}

function util_isMacP() {
   if ( (navigator.userAgent.indexOf("Win") >= 0) ||
        (navigator.appVersion.indexOf("Win") >= 0) ) {
      return(false);
   } else {
      return(true);
   }
}

function panGraphics(evt) {
   //alert("pangraphics");
   if (mousePressed) {
      if (isIeb) {   
         curX = event.clientX; 
         curY = event.clientY; 
      } else {
         curX = evt.pageX; 
         curY = evt.pageY;          
         if (!isSafari) {
            if(parent.page && parent.page.myscroll) { parent.page.myscroll(curX,curY,0); }
         }   
      }
      window.scrollBy(posX-curX,posY-curY);
      if (isIeb) {      
         posX = curX; 
         posY = curY; 
      }
   }
   //window.status=posX+', '+curX+', '+posY+', '+curY;
   return false;
}

function scroll_getFrameW(f) {
   if (f.document.body) {
      return(f.document.body.clientWidth);
   } else {
      return(f.innerWidth);
   }
}

function scroll_getFrameH(f) {
   if (f.document.body) {
      return(f.document.body.clientHeight);
   } else {
      return(f.innerHeigth);
   }
}

function startPan(evt) {   
   //alert("startpan");
   if (isIeb) {
      posX = event.clientX; 
      posY = event.clientY; 
      relativePosX = posX; 
      relativePosY = posY; 
   } else {
      posX = evt.pageX;
      posY = evt.pageY
      relativePosX = posX - self.pageXOffset; 
      relativePosY = posY - self.pageYOffset; 
   }
   if (relativePosX < scroll_getFrameW(self) && relativePosY < scroll_getFrameH(self)) {
      mousePressed=true;
   }
   return false;
}

function endPan() {
   //alert("endpan");
   //window.status = "end pan";
   mousePressed=false;
   
   // ...used for GRID
   //offsetMoveX = Math.floor(relativePosX-posX);
   //offsetMoveY = Math.floor(relativePosY-posY);
   //if(parent.page && parent.page.calculateGridPos) { parent.page.calculateGridPos(offsetMoveX,offsetMoveY,1); }
   
   return false;
}

function outPan() {
   //window.status = "out pan";
   mousePressed=false;
   return false;
}

function doScroll(evt) {
   //alert("scroll");
   if (isIeb) {   
      offsetMoveX = document.body.scrollLeft;
      offsetMoveY = document.body.scrollTop;
   } else {
      if (isSafari) {
         offsetMoveX = self.pageXOffset;
         offsetMoveY = self.pageYOffset;
      } else {   
         if (evt) {
            offsetMoveX = evt.pageX;
            offsetMoveY = evt.pageY;
         } else {   
            offsetMoveX = self.pageXOffset;
            offsetMoveY = self.pageYOffset;
         }   
      }
       //  offsetMoveX = evt.pageX;
       //  offsetMoveY = evt.pageY;
   }       

   if(parent.page && parent.page.myscroll) { parent.page.myscroll(offsetMoveX,offsetMoveY,0); }
   //window.status="scroll:" + offsetMoveX;
   return false;
}   