/**
* @author  Joachim  Eberhardt
* @copyright Copyright 2010, 2011 Agentur Lernsite - Joachim  Eberhardt
* @version 1.0 12.03.11
* @package AG Diabetischer Fuss 
* @abstract JavaScript-Datei
*
*/

var httpRequestObject = false; 
var	jsonRequestObject = false;
var session = "";
var datasetID = "";

// verhindern, dass Seiten in Frames eingebaut werden
if (top != self) {
	top.location = self.location;
}

/* ***************************************************************************** */     
/* Navigation einblenden und schliessen                                          */
/* ***************************************************************************** */     

 
    function menuPulldown(functionsname) {
      menutimer = window.setTimeout(functionsname,500);
      return true;
    }

    function stopMenuPulldown() {
      window.clearTimeout(menutimer);
      window.clearTimeout(timer);
      
      return true;
    }

    function closeSubMenu() {
     closeAllKapitelIndex();
     closeBasisIndexText(); 
     try {
         closeKapitelIndexText();
       } catch (e) {
         return true;
       }
       
     try { 
         closeUnterkapitelIndexText();
       } catch (e) {
         return true;
       }
     
     try {
         closeAbschnittIndexText();
       } catch (e) {
         return true;
       }
       
     return true;
    }

   function startEvenhandler() {
        document.getElementById("content").onmousedown=leftclick;
    }

    function leftclick(e) {
       
        // Internet Explorers Version 4 + 5
    	if (document.all) {
    		if (event.button==1) {
       			closeSubMenu();
                return  true;
      		}
    	}
    	// alle anderen Browser
    	else {
          if (e.which == 1) {
             closeSubMenu();
             return  true;
           }
         }
      return  true;
    }

/* ***************************************************************************** */     
/* XMLHttpRequest  initialisieren                                                */
/* ***************************************************************************** */     


   if (typeof(XMLHttpRequest) != 'undefined') {
        httpRequestObject = new XMLHttpRequest();
    }
    if (!httpRequestObject) {
        try {
              httpRequestObject  = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try {
                httpRequestObject  = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                httpRequestObject  = false;
              }
        }
     }

/* ***************************************************************************** */     
/* Einblendung von Ortsnamen        */
/* ***************************************************************************** */     

function searchCounty(abbrCounty)  {

	var input_abbrCounty = "form_abbrCounty=" + abbrCounty ;
	var task           = "task=searchForCountyViaAJAX";
	var input_einrichtung = "form_einrichtung_typ=0";
	if(document.getElementById('id_einrichtung_typ_1').checked) {	
		input_einrichtung = "form_einrichtung_typ=1";
	}
	if(document.getElementById('id_einrichtung_typ_2').checked) {	
		input_einrichtung = "form_einrichtung_typ=2";
	}
	var postdata       = task + "&" + input_abbrCounty + "&" + input_einrichtung;
	
	httpRequestObject.open("POST", SeitenURL, true);
	httpRequestObject.onreadystatechange = useHttpMapSearchShowResponse;
	httpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	httpRequestObject.send(postdata);


	return false;

}



function searchCity() {

	var input_cityname = "form_ort=" + document.getElementById('id_ort').value;
	var task           = "task=showCityViaAJAX";
	var input_einrichtung = "form_einrichtung_typ=0";
	if(document.getElementById('id_einrichtung_typ_1').checked) {	
		input_einrichtung = "form_einrichtung_typ=1";
	}
	if(document.getElementById('id_einrichtung_typ_2').checked) {	
		input_einrichtung = "form_einrichtung_typ=2";
	}
	var postdata       = task + "&" + input_cityname + "&" + input_einrichtung;
	
	httpRequestObject.open("POST", SeitenURL, true);
	httpRequestObject.onreadystatechange = useHttpCitySearchShowResponse;
	httpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	httpRequestObject.send(postdata);


	return true;

}




function useHttpCitySearchShowResponse() {

	if(httpRequestObject.readyState == 4) {

		if(httpRequestObject.status == 200) {

			var jsonResponseString = httpRequestObject.responseText;
			var jsonResponseObject = "";
			
			if(jsonResponseString.length > 0) {
	
	            jsonResponseObject = JSON.parse(jsonResponseString);
	                      
	            if( jsonResponseObject.citySelect) {
					document.getElementById('citySelect').innerHTML =  jsonResponseObject.citySelect;
					document.getElementById('citySelect').style.visibility = "visible";
	                document.getElementById('citySelect').style.display    = "block";
	                       
	                document.getElementsByName("form_submit")[0].style.visibility = "hidden";
	                document.getElementsByName("form_submit")[0].style.display    = "none";
	            }
			}
		}

	}
}


function useHttpMapSearchShowResponse() {

	if(httpRequestObject.readyState == 4) {

		if(httpRequestObject.status == 200) {

			var jsonResponseString = httpRequestObject.responseText;
			var jsonResponseObject = "";
			
			if(jsonResponseString.length > 0) {
	
	            jsonResponseObject = JSON.parse(jsonResponseString);
                      
	            if( jsonResponseObject.headline) {
					document.getElementById('headline').innerHTML =  jsonResponseObject.headline;
	            }
				if( jsonResponseObject.einrichtungenListe) {
					document.getElementById('monoSpalte').innerHTML =  jsonResponseObject.einrichtungenListe;
				
	            }
			}
		}
	}
}


/* ***************************************************************************** */     
/* Hilfetext-Einblendungen
/* ***************************************************************************** */     


    function startHelp(divID) {
     if(divID == null) {
      document.getElementById('kapitel').style.cursor = "help";
      helptimer = window.setTimeout("showHelp('kapitel')",2000);
     }
     else {
      document.getElementById(divID).style.cursor = "help";
      helptimer = window.setTimeout("showHelp('" + divID + "')",2000);
     }
      return  true;
    }

    function showHelp(divID) {
      helpShow(divID);
      return  true;
    }

    function stopHelp() {
          window.clearTimeout(helptimer);
      return  true;
    }





// Definition des Request-Klasse
function helpItemRequestObject() {
  
    // Klasseneigenschaften
	this.helpID          = "";
	this.task            = "";
	
    // Klassenmethoden einbinden
    this.setHelpID       = setHelpID;
    this.setTask         = setTask;
    
    // Methoden aufrufen waehrend der Instanzbildung

} 

	
// Aufruf eines Hilfetextes aus einer Seite heraus     
function helpShow(id) {

     // Request-Objekt initialisieren
     // ID an das Objekt uebergeben durch Aufruf der Methode 'setHelpID'
     // Task an das Objekt uebergeben durch Aufruf der Methode 'setTask'
    try {	
    	jsonRequestObject = new helpItemRequestObject();
    	jsonRequestObject.setHelpID(id);
     	jsonRequestObject.setTask("showHelpItemViaAJAX");
     }
  
    catch (Error) {
  		alert('Initialisierung des glossarItemRequestObject ist fehlgeschlagen. setHelpID'); 
  	}
    

     // Daten fuer die Uebergabe mit der POST-Methode zusammen stellen
      var postdata  = "form_jsonRequestString=" + JSON.stringify(jsonRequestObject) + "&" + session;

    // Request absenden
        httpRequestObject.open("POST", feedbackurl_helptext, true);
        httpRequestObject.onreadystatechange = useHttpHelpItemShowResponse;
        httpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        httpRequestObject.send(postdata);
        
        return;
	}
	
/* Hilfetext-Eintrag als Texteinblendung ausgeben */
function useHttpHelpItemShowResponse() {

       if(httpRequestObject.readyState == 4) {

       if(httpRequestObject.status == 200) { 
                  
               var jsonResponseString = httpRequestObject.responseText;
                   
               var jsonResponseObject = JSON.parse(jsonResponseString);

               if(jsonResponseObject.text) {
                     
               
               	// Position bestimmen
     /*       		this.element = document.getElementById(jsonResponseObject.helpID);
                    position = getPositionOfObject(this.element);
              alert(position.x + ", " + position.y);
       */        
                       document.getElementById('helptext').innerHTML =  jsonResponseObject.text; 
                       document.getElementById('helptext').style.visibility = "visible";
                       document.getElementById('helptext').style.display = "block";
                       
                      document.getElementById('helptext').style.width = jsonResponseObject.helptextwidth + "em" ;
                    }
                   
              }
              else { 
                    document.getElementById('').innerHTML = "<p>Ein Fehler beim Datenaustausch unter AJAX ist aufgetreten.<\/p>";
              }
         
      }
}

function helpTextClose() {
      document.getElementById('helptext').innerHTML =  ""; 
      document.getElementById('helptext').style.visibility = "hidden";
      document.getElementById('helptext').style.display = "none";
      stopHelp();
      
      return;
}

 
/* Position eines HTML-Elementes/Objektes bestimmen */
function getPositionOfObject(obj) {
  var pos = { x:0, y:0 };

  do {
    pos.x += obj.offsetLeft;
    pos.y += obj.offsetTop;
  } while (obj == obj.offsetParent);

  return pos;
}

function getRect (o){

    var r = { top:0, left:0, width:0, height:0 };

 

    if(!o) return r;

    else if(typeof o == 'string' ) o = document.getElementById(o);

 

    if( typeof o != 'object' ) return r;

 

    if(typeof o.offsetTop != 'undefined')    {

         r.height = o.offsetHeight;

         r.width = o.offsetWidth;

         r.left = r.top = 0;

         while (o && o.tagName != 'BODY')         {

              r.top  += parseInt( o.offsetTop );

              r.left += parseInt( o.offsetLeft );

              o = o.offsetParent;

         }

    }

    return r;

}



function getPosition(element)
/* der Aufruf dieser Funktion ermittelt die absoluten Koordinaten
   des Objekts element */
{
  var elem=element,tagname="",x=0,y=0;
  
/* solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
   wird diese Schleife fuer das Element und all seine Offset-Eltern ausgefuehrt */
  while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
  {
    y+=elem.offsetTop;     /* Offset des jeweiligen Elements addieren */
    x+=elem.offsetLeft;    /* Offset des jeweiligen Elements addieren */
    tagname=elem.tagName.toUpperCase(); /* tag-Name ermitteln, Grossbuchstaben */

/* wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen */
    if (tagname=="BODY")
      elem=0;

/* wenn elem ein Objekt ist und offsetParent enthaelt
   Offset-Elternelement ermitteln */
    if (typeof(elem)=="object")
      if (typeof(elem.offsetParent)=="object")
        elem=elem.offsetParent;
  }

/* Objekt mit x und y zurueckgeben */
  position=new Object();
  position.x=x;
  position.y=y;
  return position;
}

/* ***************************************************************************** */     
/* Zoom-Image Ausgabe                                                            */
/* ***************************************************************************** */     

// Definition des Request-Klasse
function zoomImageRequestObject() {
  
    // Klasseneigenschaften
	this.imageID       = 0;
	this.datasetID     = 0;
	this.task          = "";
	
    // Klassenmethoden einbinden
    this.setImageID    = setImageID;
    this.setDatasetID  = setDatasetID;
    this.setTask       = setTask;
    
    // Methoden aufrufen waehrend der Instanzbildung

} 

function showImage(imagename) {

	document.getElementById(imagename).style.visibility = "visible";

	return;
}
function hideImage(imagename) {

	document.getElementById(imagename).style.visibility = "hidden";

	return;
}


function closeZoom(inputPageID) {

        var pageID    =   "form_pageID=" + inputPageID;
        var task      =   "task=showContentViaAJAX";
        var postdata  =   pageID + "&" + task + "&" + session;

      

        httpRequestObject.open("POST", SeitenURL, true);
        httpRequestObject.onreadystatechange = useHttpZoomResponse;
        httpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        httpRequestObject.send(postdata);
       

        return;

}

function getZoom(imageID) {
     // Request-Objekt initialisieren
     // ID an das Objekt uebergeben durch Aufruf der Methode 'setImageID'
     // Task an das Objekt uebergeben durch Aufruf der Methode 'setTask'
    try {	
    	jsonRequestObject = new zoomImageRequestObject();
    	jsonRequestObject.setImageID(imageID);
    	jsonRequestObject.setDatasetID(datasetID);
    	jsonRequestObject.setTask("showZoomViaAJAX");
     }
  
    catch (Error) {
  		alert('Initialisierung des zoomImageRequestObject ist fehlgeschlagen.'); 
  	}
    

    // Daten fuer die Uebergabe mit der POST-Methode zusammen stellen
    var postdata  = "form_jsonRequestString=" + JSON.stringify(jsonRequestObject) + "&" + session;

    // Request absenden
    httpRequestObject.open("POST", feedbackurl_zoom, true);
    httpRequestObject.onreadystatechange = useHttpZoomResponse;
    httpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    httpRequestObject.send(postdata);
        
    return;
}

function getPage() {

	document.getElementById("ruecksprung").style.display = "none";
	try {
		document.getElementById("zoomImageLaengs").style.display = "none";
	}
	catch (e) {
	}

	try {
		document.getElementById("zoomImageQuer").style.display = "none";
	}
	catch (e) {
	}


	document.getElementById("content").style.display = "block";
	document.getElementById("navigationLinks").style.display = "block";
	document.getElementById("navigationOben").style.display = "block";
	try {
	document.getElementById("lernerDiensteRechts").style.display = "block";
	}
	catch (e) {
	}
	
	return;
}


 function useHttpZoomResponse() {

       if(httpRequestObject.readyState == 4) {

             if(httpRequestObject.status == 200) { 
                       
               var jsonResponseString = httpRequestObject.responseText;
                   
               var jsonResponseObject = JSON.parse(jsonResponseString);
                          
               if(jsonResponseObject.text && jsonResponseObject.divID) {
        
                   
                  if(jsonResponseObject.showNavigationLinks == false) {
	                    document.getElementById("navigationLinks").style.display = "none";
	                    document.getElementById("navigationRechts").style.display = "none";
                   }

               
                  if(jsonResponseObject.showNavigationLinks == true) {
	                    document.getElementById("navigationLinks").style.display = "block";
	                    document.getElementById("navigationRechts").style.display = "block";
                   }
               
                  document.getElementById(jsonResponseObject.divID).innerHTML =  jsonResponseObject.text; 


                    // Event-Handler aktivieren zum Abfangen rechten Maustaste

                    if(document.getElementById("zoomImageQuer")) {
    	                document.getElementById("zoomImageQuer").onmousedown=rightclick;
                    }
                    if(document.getElementById("zoomImageLaengs")) {
        	            document.getElementById("zoomImageLaengs").onmousedown=rightclick;
                    }
                  
              }
              else { 

                    document.getElementById('').innerHTML = "<p>Ein Fehler beim Datenaustausch unter AJAX ist aufgetreten.<\/p>";

              }

        }

    }
}

/* ***************************************************************************** */     
/* allgemeinen Methode fuer JSON-RequestObject                                   */
/* ***************************************************************************** */     

function setImageID(id) {
	this.imageID = id;
    return;
}

function setComment(text) {
	this.comment = text;
    return;
}

function setData(data) {
	this.data = data;
    return;
}

function setDatasetID(id) {
	this.datasetID = id;
    return;
}

function setEMail(email) {
	this.email = email;
    return;
}


function setHelpID(id) {
	this.helpID = id;
    return;
}

function setPageID(id) {
	this.pageID = id;
    return;
}

function setTask(task) {
	this.task = task;
    return;
}

function setTitle(title) {
	this.title = title;
    return;
}

