
// globale Variablen
ie=document.all;
nn6=document.getElementById&&!document.all;
isdrag=false;
x=0,y=0;
dobj=0;
candrag=false;
// numPics=36;  					//im jsp dynamisch aus Vektor der ContentBilder
// picArray = new Array(36);
ssr_heading = 0;
imgLoader = 0;
loadCounter = 0;
currentUrl=0;
ssrenabled=false;
ssrTarget=0;
ssrProgressBar=0;
ssrProgressBarBack=0;
ssrProgressBarText=0;
cb_mousemove = 0;
//
// 0000 durch heading mit 4 leading zeros ersetzen
//
function setUrlHeading(oldUrl, heading) {
  headingString = ""+heading;
  while(headingString.length < 4) {
    headingString = "0"+headingString;
  }

  return oldUrl.replace(/0000/g, headingString);
}

//
// mouse move event
//
function move(e){
  if (!candrag) return;
  if (isdrag){
    cx = nn6 ? e.clientX : event.clientX;
    cy = nn6 ? e.clientY : event.clientY;
    v1 = cx-x;
    v2 = cy-y;
    if (v1 > 15) {
      turnright();
      x=cx;
    }
    if (v1 < -15) {
      turnleft();
      x=cx;
    }
    if (cb_mousemove) {
	cb_mousemove();
    }
    return false;
  }
}

//
// mouse down event
//
function drags(e){
    if (!candrag) return;
    var fobj       = nn6 ? e.target : event.srcElement;
    var topelement = nn6 ? "HTML" : "BODY";
    while (fobj.tagName != topelement && fobj.className != "drag") {
      fobj = nn6 ? fobj.parentNode : fobj.parentElement;
    }
    if (fobj.className=="drag") {
      isdrag = true;
      dobj = fobj;
      tx = parseInt(dobj.style.left+0);
      ty = parseInt(dobj.style.top+0);
      x = nn6 ? e.clientX : event.clientX;
      y = nn6 ? e.clientY : event.clientY;
      return false;
    }
}

//
// mouse up event
//
function drops(e){

  isdrag = false;
}


//
// Panorama um eins nach links drehen
//
function turnleft() {
  ssr_heading = (ssr_heading + 1) % numPics;
  ssr_setCurrentImage(picArray[ssr_heading].src);
}

//
// Panorama um eins nach rechts drehen
//
function turnright() {
  ssr_heading = (ssr_heading + (numPics-1)) % numPics;
  ssr_setCurrentImage(picArray[ssr_heading].src);
}

//
// Event, wenn ein Bild geladen wurde
//
function panLoaderDone() {
  loadCounter++;
  if (ssrProgressBar != 0) {
    ssrProgressBar.style.width=((400*(loadCounter+1))/numPics) + "px";
  }
  if (ssrProgressBarBack != 0) {
    ssrProgressBarBack.style.width = 400;
  }
  if (ssrProgressBarText != 0) {
    ssrProgressBarText.style.visibility="visible";
  }
  if (loadCounter >= numPics) {
    candrag = true;
    ssrTarget.style.cursor=nn6 ? 'pointer' : 'hand';
    if (ssrProgressBar != 0) {
      ssrProgressBar.style.width=0;
    }
    if (ssrProgressBarBack != 0) {
      ssrProgressBarBack.style.width=0;
    }
    if (ssrProgressBarText != 0) {
      ssrProgressBarText.style.visibility="hidden";
    }
    $('#preloader3D').hide();
  }
  else if (ssrenabled == true) {
	stamp=new Date();
	
    picArray[loadCounter] = new Image();
    picArray[loadCounter].onload = new Function("panLoaderDone()");
    picArray[loadCounter].onerror = new Function("panLoaderDone()");
    picArray[loadCounter].src = setUrlHeading(currentUrl+"?s="+stamp.getTime(), loadCounter);
  }
}

//
// Einstieg zum Vorladen des Panoramas
//
function preLoadPano(url) {
  currentUrl = url;
  candrag = false;
  loadCounter = 0;
  
  picArray[0] = new Image();
  picArray[0].onload = new Function("panLoaderDone()");
  picArray[0].onerror = new Function("panLoaderDone()");
  picArray[0].src = setUrlHeading(url, 0);
  window.status = picArray[0].src;
}

//
// Neues Bild setzen
//
function ssr_setCurrentImage(url) {
  ssrTarget.src = url;
}

//
// Html Element für Bühne (Bild) definieren
//
function ssr_setTarget(target) {
  ssrTarget = target;
  ssrTarget.onmousedown = drags;
  ssrTarget.onmousemove = move;
  ssrTarget.onmouseup = drops;
}

//
// Html Element für Ladebalken definieren
//
function ssr_setProgressBar(pb) {
  ssrProgressBar = pb;
}

//
// Html Element für Ladebalken Hintergrund definieren
//
function ssr_setProgressBarBack(pbb) {
  ssrProgressBarBack = pbb;
}

//
// Html Element für Ladebalken Text definieren
//
function ssr_setProgressBarText(pbt) {
  ssrProgressBarText = pbt;
}

//
// (Öffentlicher) Einstieg zum Vorladen des Panoramas
//
function ssr_preload_pano(url) {
  ssrenabled = true;
  ssrTarget.style.cursor='auto';
  preLoadPano(url);
}

//
// Initialisieren ssr beim Seiteneinstieg
//
function ssr_init(h) {
  ssrenabled = true;
  ssr_heading = h;
}

//
// Zurücksetzen ssr beim Seiteneinstieg
//
function ssr_reset() {
  ssrenabled = false;
}