var speedLeft = 230;
var speedLevel = 45;
var pageLeft = 10;
var pageLevel = 236;
var reversalTimer;
var traversalTimer;

var speedValue = 3;
var pageValue = 0;

var originalPage;
var isPause = false;

var playMode = 0; //normal = 0, rewind = 1

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_dragLayer(objName,x,hL,hT,hW,hH,toFront,dropBack,cU,cD,cL,cR,targL,targT,tol,dropJS,et,dragJS) { //v3.0
  //Copyright 1998 Macromedia, Inc. All rights reserved.
  var i,j,aLayer,retVal,curDrag=null,NS=(navigator.appName=='Netscape'), curLeft, curTop;
  if (!document.all && !document.layers) return false;
  retVal = true; if(!NS && event) event.returnValue = true;
  if (MM_dragLayer.arguments.length > 1) {
    curDrag = MM_findObj(objName); 
    if (!curDrag) return false;
    if (!document.allLayers) { document.allLayers = new Array();
      with (document) if (NS) { for (i=0; i<layers.length; i++) allLayers[i]=layers[i];
        for (i=0; i<allLayers.length; i++) if (allLayers[i].document && allLayers[i].document.layers)
          with (allLayers[i].document) for (j=0; j<layers.length; j++) allLayers[allLayers.length]=layers[j];
      } else for (i=0;i<all.length;i++) if (all[i].style&&all[i].style.position) allLayers[allLayers.length]=all[i];}
    curDrag.MM_dragOk=true; curDrag.MM_targL=targL; curDrag.MM_targT=targT;
    curDrag.MM_tol=Math.pow(tol,2); curDrag.MM_hLeft=hL; curDrag.MM_hTop=hT;
    curDrag.MM_hWidth=hW; curDrag.MM_hHeight=hH; curDrag.MM_toFront=toFront;
    curDrag.MM_dropBack=dropBack; curDrag.MM_dropJS=dropJS;
    curDrag.MM_everyTime=et; curDrag.MM_dragJS=dragJS;
    curDrag.MM_oldZ = (NS)?curDrag.zIndex:curDrag.style.zIndex;
    curLeft= (NS)?curDrag.left:curDrag.style.pixelLeft; curDrag.MM_startL = curLeft;
    curTop = (NS)?curDrag.top:curDrag.style.pixelTop; curDrag.MM_startT = curTop;
    curDrag.MM_bL=(cL<0)?null:curLeft-cL; curDrag.MM_bT=(cU<0)?null:curTop -cU;
    curDrag.MM_bR=(cR<0)?null:curLeft+cR; curDrag.MM_bB=(cD<0)?null:curTop +cD;
    curDrag.MM_LEFTRIGHT=0; curDrag.MM_UPDOWN=0; curDrag.MM_SNAPPED=false; //use in your JS!
    document.onmousedown = MM_dragLayer; document.onmouseup = MM_dragLayer;
    if (NS) document.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
  } else {
    var theEvent = ((NS)?objName.type:event.type);
    if (theEvent == 'mousedown') {
      var mouseX = (NS)?objName.pageX : event.clientX + document.body.scrollLeft;
      var mouseY = (NS)?objName.pageY : event.clientY + document.body.scrollTop;
      var maxDragZ=null; document.MM_maxZ = 0;
      for (i=0; i<document.allLayers.length; i++) { aLayer = document.allLayers[i];
        var aLayerZ = (NS)?aLayer.zIndex:aLayer.style.zIndex;
        if (aLayerZ > document.MM_maxZ) document.MM_maxZ = aLayerZ;
        var isVisible = (((NS)?aLayer.visibility:aLayer.style.visibility).indexOf('hid') == -1);
        if (aLayer.MM_dragOk != null && isVisible) with (aLayer) {
          var parentL=0; var parentT=0;
          if (!NS) { parentLayer = aLayer.parentElement;
            while (parentLayer != null && parentLayer.style.position) {
              parentL += parentLayer.offsetLeft; parentT += parentLayer.offsetTop;
              parentLayer = parentLayer.parentElement; } }
          var tmpX=mouseX-(((NS)?pageX:style.pixelLeft+parentL)+MM_hLeft);
          var tmpY=mouseY-(((NS)?pageY:style.pixelTop +parentT)+MM_hTop);
          var tmpW = MM_hWidth;  if (tmpW <= 0) tmpW += ((NS)?clip.width :offsetWidth);
          var tmpH = MM_hHeight; if (tmpH <= 0) tmpH += ((NS)?clip.height:offsetHeight);
          if ((0 <= tmpX && tmpX < tmpW && 0 <= tmpY && tmpY < tmpH) && (maxDragZ == null
              || maxDragZ <= aLayerZ)) { curDrag = aLayer; maxDragZ = aLayerZ; } } }
      if (curDrag) {
        document.onmousemove = MM_dragLayer; if (NS) document.captureEvents(Event.MOUSEMOVE);
        curLeft = (NS)?curDrag.left:curDrag.style.pixelLeft;
        curTop = (NS)?curDrag.top:curDrag.style.pixelTop;
        MM_oldX = mouseX - curLeft; MM_oldY = mouseY - curTop;
        document.MM_curDrag = curDrag;  curDrag.MM_SNAPPED=false;
        if(curDrag.MM_toFront) {
          eval('curDrag.'+((NS)?'':'style.')+'zIndex=document.MM_maxZ+1');
          if (!curDrag.MM_dropBack) document.MM_maxZ++; }
        retVal = false; if(!NS) event.returnValue = false;
    } } else if (theEvent == 'mousemove') {
      if (document.MM_curDrag) with (document.MM_curDrag) {
        var mouseX = (NS)?objName.pageX : event.clientX + document.body.scrollLeft;
        var mouseY = (NS)?objName.pageY : event.clientY + document.body.scrollTop;
        newLeft = mouseX-MM_oldX; newTop  = mouseY-MM_oldY;
        if (MM_bL!=null) newLeft = Math.max(newLeft,MM_bL);
        if (MM_bR!=null) newLeft = Math.min(newLeft,MM_bR);
        if (MM_bT!=null) newTop  = Math.max(newTop ,MM_bT);
        if (MM_bB!=null) newTop  = Math.min(newTop ,MM_bB);
        MM_LEFTRIGHT = newLeft-MM_startL; MM_UPDOWN = newTop-MM_startT;
        if (NS) {left = newLeft; top = newTop;}
        else {style.pixelLeft = newLeft; style.pixelTop = newTop;}
        if (MM_dragJS) eval(MM_dragJS);
        retVal = false; if(!NS) event.returnValue = false;
    } } else if (theEvent == 'mouseup') {
      document.onmousemove = null;
      if (NS) document.releaseEvents(Event.MOUSEMOVE);
      if (NS) document.captureEvents(Event.MOUSEDOWN); //for mac NS
      if (document.MM_curDrag) with (document.MM_curDrag) {
        if (typeof MM_targL =='number' && typeof MM_targT == 'number' &&
            (Math.pow(MM_targL-((NS)?left:style.pixelLeft),2)+
             Math.pow(MM_targT-((NS)?top:style.pixelTop),2))<=MM_tol) {
          if (NS) {left = MM_targL; top = MM_targT;}
          else {style.pixelLeft = MM_targL; style.pixelTop = MM_targT;}
          MM_SNAPPED = true; MM_LEFTRIGHT = MM_startL-MM_targL; MM_UPDOWN = MM_startT-MM_targT; }
        if (MM_everyTime || MM_SNAPPED) eval(MM_dropJS);
        if(MM_dropBack) {if (NS) zIndex = MM_oldZ; else style.zIndex = MM_oldZ;}
        retVal = false; if(!NS) event.returnValue = false; }
      document.MM_curDrag = null;
    }
    if (NS) document.routeEvent(objName);
  } return retVal;
}

	function slideHandleClick(){
		if(slideFrameLayer.style.visibility == "hidden"){
			slideVisible();
		}else{
			slideHidden();
		}
	}

	function slideClose(){
		slideLayer.style.visibility="hidden";
		slideLayer.style.width = 0;
	}


	function slideVisible(){
		var left = SLIDER_LAYER.style.left;
		left = left.substring(0,left.length-2);
		var width = SLIDER_LAYER.style.width;
		width = width.substring(0,width.length-2);

		if(width<SLIDE_MAXIMUM_WIDTH-30){			
//			SLIDER_LAYER.style.visibility = "visible";
			_obj_layer_slide_maximal_handle.style.visibility = "hidden";
			_obj_layer_slide_minimal_handle.style.visibility = "visible";
			setTimeout("slideVisible()",100);
			SLIDER_LAYER.style.left = eval(eval(left) -30);
			SLIDER_LAYER.style.width = eval(eval(width) + 30);
		}else{
			SLIDER_LAYER.style.width = SLIDE_MAXIMUM_WIDTH;
			clearTimeout("slideVisible()");
		}
	}

	function slideHidden(){
		var left = SLIDER_LAYER.style.left;
		left = left.substring(0,left.length-2);
		var width = SLIDER_LAYER.style.width;
		width = width.substring(0,width.length-2);

		if(width>SLIDE_MINIMAL_WIDTH+30){
			setTimeout("slideHidden()",100);
			SLIDER_LAYER.style.left = eval(eval(left) +30);
			SLIDER_LAYER.style.width = eval(eval(width) - 30);
		}else{
			SLIDER_LAYER.style.width = SLIDE_MINIMAL_WIDTH;
			clearTimeout("slideHidden()");
			_obj_layer_slide_maximal_handle.style.visibility = "visible";
			_obj_layer_slide_minimal_handle.style.visibility = "hidden";
//			SLIDER_LAYER.style.visibility = "hidden";
		}
	}
	
	
function speedChanged(){	
	var left = speedLayer.style.left;
	left = left.substring(0,left.length-2);
	if(left>speedLeft+speedLevel) left = speedLeft+speedLevel;
	if(left<speedLeft) left = speedLeft;
	
	speedValue = eval(Math.floor((left - speedLeft)/3)+1);
	speedField.value = STRINGS["SLIDE_SPEED"]+speedValue+STRINGS["SLIDE_SEC"];
	speedLayer.style.left = Math.floor(left/3)*3;
}

function pageChanged(){
	var left = pageLayer.style.left;
	var pageNum;

	left = left.substring(0,left.length-2);
	if(left>pageLeft+pageLevel) left = pageLeft+pageLevel;
	if(left<pageLeft) left = pageLeft;

	pageNum = Math.floor(top.maxPage*((left-pageLeft)/pageLevel))+1;	
	if(pageNum>=top.maxPage) pageNum = top.maxPage-1;
	top.goPage(pageNum);
	pageValueChanged(pageNum);
	
	pageLayer.style.left = left;
}

function slideTraverse(startNum){
	originalPage = top.cPage;
	isPause = false;
//	slideClear();
	statusField.value = STRINGS["SLIDE_SHOW_PLAY"];
	top.goPage(startNum);
	pageValueChanged(startNum);
	traversalTimer = setTimeout("traversalPage()",speedValue*1000);
}

function slideReverse(startNum){
	originalPage = top.cPage;
	isPause = false;
//	slideClear();
	top.goPage(startNum);
	statusField.value = STRINGS["SLIDE_SHOW_PLAY"];
	pageValueChanged(startNum);
	reversalTimer = setTimeout("reversalPage()",speedValue*1000);
}

function slideClear(){
	statusField.value = STRINGS["SLIDE_SHOW_READY"];
	isPause = true;
	clearTimeout(traversalTimer);
	clearTimeout(reversalTimer);
}

function traversalPage(){	
	if(isPause) return;
	if(top.cPage+2 > top.maxPage){
		if(playMode==0){
			alert(STRINGS["SLIDE_END"]);
			statusField.value = STRINGS["SLIDE_SHOW_PLAY"];
			return;
		}
		slideTraverse(0);
		return;
	}
	top.next();
	pageValueChanged(top.cPage);
	traversalTimer  = setTimeout("traversalPage()",speedValue*1000);

}

function reversalPage(){
	if(top.cPage <= 1){	
		if(playMode==0){
			alert(STRINGS["SLIDE_END"]);
			statusField.value = STRINGS["SLIDE_SHOW_PLAY"];
			return;
		}
		slideReverse(top.maxPage-1);
		return;
	}
	top.prev();
	pageValueChanged(top.cPage);
	reversalTimer = setTimeout("reversalPage()",speedValue*1000);
}


function pageValueChanged(pageNum){
	var pageUnit = pageLevel/top.maxPage;
	
	if(flip_reverse){
  	pageField.value = (top.view.page.length-pageNum)+"/"+top.maxPage;
	}else{
  	pageField.value = pageNum+"/"+top.maxPage;
  }
	
	pageLayer.style.left = pageLeft + pageNum * pageUnit;
}


function slideStop(){
	if(isPause) return;
	slidePause();
	top.goPage(originalPage);
	pageValueChanged(originalPage);
}

function slidePause(){
	isPause = true;
	clearTimeout(reversalTimer);
	clearTimeout(traversalTimer);
}

function slideModeChange(){
	if(playMode==0){
		_obj_layer_slide_mode_reverse.style.visibility = "visible";
		_obj_layer_slide_mode_once.style.visibility = "hidden";		
		playMode = 1;
	}else{
		_obj_layer_slide_mode_reverse.style.visibility = "hidden";
		_obj_layer_slide_mode_once.style.visibility = "visible";
		playMode = 0;
	}
}

function playModeChanged(){
	if(playMode==0){
		playModeImg.src = "img/slide/rewind_play.gif";
		playMode = 1;
	}else{
		playModeImg.src = "img/slide/normal_play.gif";
		playMode = 0;
	}
}

function playModeOver(){
	if(playMode==0){
		playModeImg.src = "img/slide/normal_play_over.gif";
	}else{
		playModeImg.src = "img/slide/rewind_play_over.gif";
	}
}

function playModeOut(){
	if(playMode==0){
		playModeImg.src = "img/slide/normal_play.gif";
	}else{
		playModeImg.src = "img/slide/rewind_play.gif";
	}	
}

function slideDrag(target, left, level){
	var xPos = event.x;
	var leftEnd = left;
	var rightEnd = left+level;
	
	top.MM_dragLayer(target,'',0,0,0,0,true,false,0,0,xPos -leftEnd,rightEnd-xPos,false,false,0,'',false,'');
}

