/*
 * Pegelstandsanzeige
 *
 * Kundenspezifisches Zusatzmodul der JanusSuite
 * (c) 2006 3Kon Informationstechnologien GmbH
 *
 * Autor: Tilmann Fruntke <tfruntke@buschjena.de>
 * Datum: 20. Oktober 2006
 * 
 */
 
 var initPegel = null;
 var pegelZIndex = 5;
 var zoomToClick = 500000; /* scale zoomed when pegel is clicked... */
 var zoomTCOrg = 900000;
 
 /*
  * wird nach dem initialisieren der Karte ausgeführt
	* und schickt eine Anfrage an den "Pegel Server"
	*/
 function initPegelLoad()
 {
	
	call('layout/custom/pegellist.php',null, evalPegel);
 }
 
 /*
  * die Callback Funktion, welche im Anschluss des Ajax
	* Call ausgeführt wird. Diese parsed den Übergebenen Code, welche
	* Anweisungen zum Ausführen von "addPegel" enthält.
	*/
 function evalPegel( requestCode )
 {

	var pegelCanvas = myKaMap.createDrawingCanvas( 1 );
	
  eval( requestCode );
	
	/*
	 * center init pegel if given
	 */
	if ( initPegel != null )
	 pegelListClick ( getPObjectID ( initPegel ), initPegel );
 }
 
  /*
  *
	*
	*/
 function addPegel ( pegelCanvas, coordX, coordY, p_type, state, tendence, pId, pTitle)
 {

  var objID = getPObjectID( pId );
	var pegelIcon = getIconID ( p_type, state, tendence );
  var pObj = getNewPegelObj( pId, objID, pTitle, pegelIcon, 18, false );
	var pListObj = getNewPegelObj( pId, 'list_' + objID, pTitle, pegelIcon, 18, false );
	
	/* lets save some information in our domObj */
	pObj.mi_id = pId;
	pObj.mi_state = state;
	pObj.mi_tend = tendence;
	pObj.mi_type = p_type;
	
	
 	myKaMap.addObjectGeo( pegelCanvas, coordX, coordY, pObj );
	
	appendToPegellist ( pTitle, pId, objID, pegelIcon );
 }
 
 /*
  * Gibt die Icon ID zurück, berechnet aus Pegeltyp,
	* Pegelstatus, Pegeltendenz
	*/
 function getIconID ( p_type, state, tendence )
 {
 	if ( p_type == 1 ) // normaler Pegel
	{
	 var fileId_part1 = state;
	 var inactive = false;
	 
	 if ( !(state >= 1 && state <= 5) )
	 		fileId_part1 = "0";
			
	 var fileId_part2 = tendence;
	 if ( !(tendence >= 1 && tendence <= 5) )
	 		inactive = true;
			
	 if ( inactive )
	 	return ( "kp_0" );
			
	 return ( "np_" + fileId_part1 + "" + fileId_part2 );
	}
	else // kein Meldepegel
	{
	 var fileId_part = tendence;
	 if ( !(tendence >= 1 && tendence <= 5) )
	 		var fileId_part = "0";
			
	 return ( "p_" + fileId_part ) ;
	}
 }
 
 
 /*
  *
	*
	*/
 var rotateColor = null;
 var curIndex = 0;
 function appendToPegellist( pName, pID, objId, iconId )
 {
 	document.pegelForm.pegelselect.options[ ++curIndex ] = new Option ( html_deentities( pName) , pID, false, false );
 /*
 
  var p_list = getRawObject( 'pegellist' );
	var p_item = document.createElement('div');
	p_item.style.width = "100%";
	
	// color cicle
	if ( rotateColor == null || rotateColor == "silver" )
	 rotateColor = '';
	else
	 rotateColor = 'silver';
	 
	if ( rotateColor != '' )
	 p_item.style.backgroundColor = rotateColor;
	
	var htmlCode;
	htmlCode = "<table><tr><td style=\"width:35px;\"><img src=\"layout/images/pfeile/24_" + iconId + ".png\" alt=\"\" style=\"width:24px; height:24px;\" /> ";
	htmlCode = htmlCode + '</td><td><a href="#" onclick="pegelListClick(\'' + objId + '\', \'' + pID + '\');">';
	htmlCode = htmlCode +  pName;
	htmlCode = htmlCode + '</a></td></tr></table>';
	p_item.innerHTML = htmlCode;
  p_list.appendChild ( p_item );*/
 }
 
 /*
  *
	*
	*/
 //function pegelListClick( objId, pId )
 function pegelListClick( fObjId, fPId  )
 {
  /* hide info box */
	hideInfoBox();
 
  var pId = null;
	var objId = null;
  if ( !fPId && !fObjId ) /* select mode */
	{
    
    var pegelListObj = document.pegelForm.pegelselect;
    for ( var j = 0; j < pegelListObj.length; j++ )
  	 {
  	   var currentValue =  pegelListObj.options[ j ].value;
  	 	 if ( pegelListObj.options[ j ].selected == true && currentValue )
  		 {
  		 	pId = currentValue;
  		 	break;
  		 }
  			
  	 }
  	objId = getPObjectID( pId );
  	
  	/* exit if value was invalid */
  	if ( pId == null )
  		 return null;
	}
	else /* param mode */
	{
	 pId = fPId;
	 objId = fObjId;
	}
	
	
  focusPegel( objId );
	if ( myKaMap.getCurrentScale() == zoomTCOrg )
		 myKaMap.zoomToScale ( zoomToClick );
		 
 	window.setTimeout("pegelListClickScroll('"+pId+"','"+objId+"')", 500);
 }
 
 function pegelListClickScroll ( pId, objId )
 {
 	myKaMap.centerObject( getRawObject( objId ) );
	getPegelInfo ( pId );
 }
 
 var lastPobjId = null;
 var lastObj = null;
 function focusPegel (  objId )
 {
  /* check if highlight object was clicked... */
 
  pegelZIndex++;
	
  /* delete old highlightobject */
	if ( lastObj != null && lastPobjId != null )
	{
	 var pegelObj = getRawObject( lastPobjId );
	 pegelObj.removeChild ( lastObj );
	 
	 lastObj = null;
	 lastPobjId = null;
	}
	
	if ( objId == null )
		 return false;
	
	lastPobjId = objId;
 
 
 	var pegelObj = getRawObject( objId );
	/* get some meta information */
	var tendence = pegelObj.mi_tend;
	var p_type = pegelObj.mi_type;
	var state = pegelObj.mi_state;
	var pId = pegelObj.mi_id;
	
	var newIconId = getIconID ( p_type, state, tendence );
	
	lastObj = getNewPegelObj( pId, 'highlight_' + pId, '', newIconId, 24, true );
	

	/* modify lastObj */
	lastObj.style.position = "relative";

	
	
	// append du current pegel...
	pegelObj.style.zIndex = pegelZIndex;
	pegelObj.appendChild( lastObj );
 }
 
 /*
  *
	*
	*/
 function pegelMapClick()
 {
  
	focusPegel( this.parentNode.id );
 	//if ( myKaMap.getCurrentScale() == zoomTCOrg )
	//	 myKaMap.zoomToScale ( zoomToClick );

  //myKaMap.centerObject( this.parentNode );
	getPegelInfo ( this.parentNode.mi_id );
	return false;
 }
 
 /*
  *
	*
	*/
 function highlightPegel()
 {
 	focusPegel( this.id );
 }
 
 /*
  *
	*
	*/
 function getNewPegelObj( pId, objId, pTitle, pegelIcon, size, ignoreOnClick )
 {
  var pegelObj = document.createElement('div');
	var im_src = "layout/images/pfeile/" + size + "_" + pegelIcon + ".png";

		
	pegelObj.className = 'pegelDiv'; 
	pegelObj.style.position = 'absolute'; 
	pegelObj.style.cursor = 'pointer';
	pegelObj.title = html_deentities( pTitle );
	pegelObj.id = objId;
	
	
	
	var pegelObjImg = document.createElement('div');
	pegelObjImg.style.position = 'absolute'; 
	pegelObjImg.style.width = size + 'px'; 
	pegelObjImg.style.height = size + 'px';
	pegelObjImg.style.left = "-" + (size/2) + 'px'; // koordinaten
	pegelObjImg.style.top = "-" + (size/2) + 'px';  
	pegelObjImg.style.backgroundImage = "url('"+im_src+"')";
	
	if (!ignoreOnClick)
		 pegelObjImg.onclick = pegelMapClick;
	
	pegelObj.appendChild( pegelObjImg );
		
	return pegelObj;
 }
 
 /*
  *
	*
	*/
  function initCenterPegel( pId )
  {
   initPegel = pId;
  }

 /*
  *
	*
	*/
  function getPObjectID (pId)
  {
   return 'pegel_' + pId;
  }

 /*
  *
	*
	*/
	var currentPegel = null;
  function getPegelInfo ( pId )
  {
	 currentPegel = pId;
	 lockPegelSelect();
   call('layout/custom/pegellist.php?mode=pegelinfo&pid=' + pId,null, renderPegelInfo);
  }
	
	function renderPegelInfo ( request )
	{
	 //alert ( request );
	 eval ( request );
	 
	 var pegelObj = getRawObject( getPObjectID ( currentPegel ) );
	 
   var tendence = pegelObj.mi_tend;
   var p_type = pegelObj.mi_type;
   var state = pegelObj.mi_state;
   var pId = pegelObj.mi_id;
	 
	 var im_src = "layout/images/pfeile/18_" + getIconID ( p_type, state, tendence ) + ".png";
	 var newInnerHTML = "";
	 newInnerHTML = newInnerHTML + "<div id=\"pinfo_header\"><table cellpadding=\"0\" cellspacing=\"0\"><tr><td><img src=\""+im_src+"\" alt=\"Pegelstand\">&nbsp;</td><td><a href=\"javascript:void(0);\" onclick=\"loadExternPegelInfo(1,'"+pId+"');\">" + pi_pegelname + " (" + pi_gewaesser + ")</a></td></tr></table></div>";
	 newInnerHTML = newInnerHTML + "<div id=\"pinfo_body\"><table cellpadding=\"0\" cellspacing=\"0\">";
	 newInnerHTML = newInnerHTML + "<tr><td><a href=\"javascript:void(0);\" onclick=\"loadExternPegelInfo(2,'"+pId+"');\">Wasserstand:</a></td><td>"+pi_wasserstand+" cm</td></tr>";
	 newInnerHTML = newInnerHTML + "<tr><td><a href=\"javascript:void(0);\" onclick=\"loadExternPegelInfo(3,'"+pId+"');\">Durchfluss:</a></td><td>"+(Math.round(pi_durchfluss*1000)/1000)+" m³/s</td></tr>";
	 newInnerHTML = newInnerHTML + "<tr><td colspan=\"2\">&nbsp;</td></tr>";
	 newInnerHTML = newInnerHTML + "<tr><td style=\"vertical-align:top;\">letzter Messwert:&nbsp;</td><td>"+pi_datum+"&nbsp;Uhr</td></tr>";
	 //newInnerHTML = newInnerHTML + "<tr><td>Mittl. jährl. Wasserstand W:&nbsp;</td><td>"+pi_wasserstand+" cm</td></tr>";
	 //newInnerHTML = newInnerHTML + "<tr><td>Mittl. jährl. Durchfluss Q:</td><td>"+pi_mq+" mâ‰¥/s</td></tr>";
	 if ( p_type == 1 )
	 {
	 	 newInnerHTML = newInnerHTML + "<tr><td>&nbsp;</td></tr>";
  	 newInnerHTML = newInnerHTML + "<tr><td><div id=\"ico_mb\"></div> Meldebeginn:</td><td>"+pi_meldebeginn+" cm</td></tr>";
  	 newInnerHTML = newInnerHTML + "<tr><td><div id=\"ico_a1\"></div> Alarmstufe 1:</td><td>"+pi_alarmstufe1+" cm</td></tr>";
  	 newInnerHTML = newInnerHTML + "<tr><td><div id=\"ico_a2\"></div> Alarmstufe 2:</td><td>"+pi_alarmstufe2+" cm</td></tr>";
  	 newInnerHTML = newInnerHTML + "<tr><td><div id=\"ico_a3\"></div> Alarmstufe 3:</td><td>"+pi_alarmstufe3+" cm</td></tr>";
	 }
	 
	 newInnerHTML = newInnerHTML + "</table></div>";
	 //newInnerHTML = newInnerHTML + "<div id=\"pinfo_links\">";
	 //newInnerHTML = newInnerHTML + "<a href=\"javascript:void(0);\" onclick=\"JavaScript:window.open('http://www.tlug-jena.de/newwq/diaPara.php?id[]="+pId+"', 'pegelInfoWindow', 'width=770, height=570, location=no, menubar=no, status=no, toolbar=no, scrollbars=yes, resizable=yes');\">Diagramm: Durchfluss</a><br />";
	 //newInnerHTML = newInnerHTML + "<a href=\"javascript:void(0);\" onclick=\"JavaScript:window.open('http://www.tlug-jena.de/newwq/diaPara.php?id[]="+pId+"&art=W', 'pegelInfoWindow', 'width=770, height=570, location=no, menubar=no, status=no, toolbar=no, scrollbars=yes, resizable=yes');\">Diagramm: Wasserstand</a><br />";
	 //newInnerHTML = newInnerHTML + "</div>";
	 //newInnerHTML = newInnerHTML + "<div id=\"pinfo_header\">" + pi_pegelname + " (" + pi_flussgebiet + ")</div>";
	 
	 getRawObject( 'pegelinfo' ).innerHTML = newInnerHTML;
	}
	
	function checkDeselectPegel()
	{
	 if ( !isLockedPegel() )
	 {
	 	focusPegel( null );
		getRawObject( 'pegelinfo' ).innerHTML = "";
	 }
	}
	
	var pegelLocked = false;
	function lockPegelSelect()
	{
	 pegelLocked = true;
	 window.setTimeout("unlockPegelSelect()", 1500);
	}
	
	function unlockPegelSelect()
	{
	 pegelLocked = false;
	}
	
	function isLockedPegel()
	{
	 return pegelLocked;
	}
	
	function html_deentities ( text )
	{
		text = text.replace ( '&ouml;', 'ö' );
		text = text.replace ( '&Ouml;', 'Ö' );
		text = text.replace ( '&uuml;', 'ü' );
		text = text.replace ( '&Uuml;', 'Ü' );
		text = text.replace ( '&auml;', 'ä' );
		text = text.replace ( '&Auml;', 'Ä' );
		text = text.replace ( '&szlig;', 'ß' );
		
		// repeat second time (temporary workaround)
		text = text.replace ( '&ouml;', 'ö' );
		text = text.replace ( '&Ouml;', 'Ö' );
		text = text.replace ( '&uuml;', 'ü' );
		text = text.replace ( '&Uuml;', 'Ü' );
		text = text.replace ( '&auml;', 'ä' );
		text = text.replace ( '&Auml;', 'Ä' );
		text = text.replace ( '&szlig;', 'ß' );
		
		return text;
	}
 
var blInfoShown = false;
function toggleInfoBox ()
{
  if ( blInfoShown )
 		 hideInfoBox();
	else
 		 showInfoBox();
}

function hideInfoBox()
{
 		blInfoShown = false;
		slideR2L(getRawObject('pegelSlider'),null,-775,500);	
}

function showInfoBox()
{
 		blInfoShown = true;
		 slideL2R(getRawObject('pegelSlider'),null,0,500);
}

function loadExternPegelInfo( modi, pId )
{

 switch ( modi )
 {
 	case 1:
	    call("/hnz/map_stammdaten.php?id="+pId+"&isMap=1", null, showFullInfo);
	    //getRawObject( 'pegelExternInfo' ).innerHTML = '<iframe id="Frame" src="../../newwq/stammdaten.php?id='+pId + '" width="720" height="500" border="0" style="overflow:hidden;"></iframe>';
	break;
	case 2:
	    call("/hnz/map_diaPara.php?id[]="+pId+"&art=W&isMap=1", null, showFullInfo);
	break;
	case 3:
	    call("/hnz/map_diaPara.php?id[]="+pId+"&isMap=1", null, showFullInfo);
	break;
 }

	showInfoBox();
}

function showFullInfo( result )
{
 getRawObject( 'pegelExternInfo' ).innerHTML = result;
}

