// JS-GRUNDFUNKTIONEN
// Allgemeine JS-Funktionen wie Browertyp-Ermitteln, Crossbrowser-Eventhandling oder 
// Währungsdarstellung.
// Browser älter als NN 6 und IE 5.5 werden nicht mehr berücksichtigt
//(c) Sequax 2008



// existiert ein Wert und ist es ein Objekt
function isObject(o) {
	return ((o) && typeof o == "object");
	}
	
function isIE() {
	return (getBrowser() == "IE") ? true : false;
	}
	
//  Browsertyp allgemein ermitteln
function getBrowser() {
	var br = navigator.appName.toUpperCase();
	
	if(br.indexOf("OPERA")!= -1)		return "OPERA";
	if(br.indexOf("MICROSOFT")!= -1)	return "IE";
	if(br.indexOf("NETSCAPE")!= -1)		return "MOZ"; // Netscape und Firefox
	if(br.indexOf("SAFARI")!= -1)		return "SAFARI";
	return false;  // unbekannter Browser (Safari etc. eh wurscht)
	}

//  Objekteigenschafen
function getObject(obj) {
	
	var sortedProps = new Array();
	var sortedValues = new Array();
	
	var text = "";
	var i=0;
	for(prp in obj) {
		i++;
		sortedProps[i] = prp;
		sortedValues[i] = obj[prp];
		text += prp + ": " + obj[prp] + "\n<br>";
		}
	
	sortedProps.sort();
	
	for(var j=0;j<sortedProps.length;j++) {
		//text += sortedProps[j] + ": " + sortedValues[j] + "\n<br>";
		}
	return text;
	}
 
 // Meldung für noch nicht implementierte Komponente
 function notInUse() {
	 alert("Noch nicht implementiert!");
	 } 
 
 //  überprüfen ob eine Zahl eingegeben wurde
 function isNumeric(text)
	{
	   var ValidChars = "0123456789.,";
	   var chr = "";
	 
	   for (var i = 0; i < text.length; i++) 
		  { 
		  chr = text.charAt(i); 
		  if (ValidChars.indexOf(chr) == -1) 
		  	 {
			 return false;
			 }
		  }
	   return true;
	   }

 // beinhaltet ein Array einen bestimmten Wert 
 function inArray(value, arr) {
		for(var tocken in arr) {
			if(arr[tocken] == value) return true;
			}
		return false;
		}
	
 //  Währungsdarstellung (auch für KB und anderes)
 function currency( num ) { 
	var prefix = ""; 
	var suffix = "&nbsp;&euro;"; 
	if(num<0)	prefix="-";
	if(num=="0") return "0,00" + suffix;
	
	
	var temp = Math.round( num * 100.0 ); // in Cent umrechnen
	  // falls <0
	if ( temp < 10 ) return "0,0" + temp + suffix; 
	if ( temp < 100 ) return "0," + temp + suffix; 
	
	temp = prefix + temp; // in String konvertieren
	temp = temp.substring(0,temp.length-2) + "," + temp.substring(temp.length-2); // Komma einfügen

	if(temp.length>6)
		{
		temp = temp.substring(0,temp.length-6) + "." + temp.substring(temp.length-6); // 1000er Trennpunkt einfügen
		}
	return temp + suffix;
	} 


	
//   Rundet Zahl auf param Stellen
 function rounding(zahl , stellenwert) {
	var tmp = zahl * Math.pow(10,stellenwert);
	return parseFloat(Math.round(tmp)/Math.pow(10,stellenwert));
	}



 //			F O R M U L A R F E L D - F U N K T I O N E N
  //			Alle Textfelder im Formular löschen und alle Checkboxen zurücksetzen
 //			nötig da reset() bei serverseitig ausgefüllten Formularen nicht funktioniert
 
 // einfache Email-Überprfung
 function isEmailValid(email) {
	var atPos = email.indexOf("@");
	var dotPos = email.lastIndexOf(".");
	var emptyPos = email.indexOf(" ");
	
	var valid = (email != "" && 
			 emptyPos == -1 &&
			 atPos > -1 && 
			 dotPos > -1);
	return valid;
 }
 
 
 
 function del() {
	
	for (var i=0;i<document.forms[0].length;++i)
			{
			var element=document.forms[0].elements[i];
			if(element.type=="textarea" || element.type=="text") {
				element.value="";
				}
				
			if(element.type=="checkbox") {
				element.checked=false;
				}
			}
	}
	
	
	
	//  alle -Checkboxen markieren
	function allCheckboxes(mark,formName) {
		var form = "form";
		if(allCheckboxes.arguments.length>1)  form = allCheckboxes.arguments[1];
		for(var i=0;i<document[form].length;++i)
			{
			var element=document[form].elements[i];
			if(element.type=="checkbox")
				{
				element.checked=mark;
				}
			}
		}

//  			U N T E R F O R M U L A R E
	//  zentriertes Popupfenster
	function centerPopup(adress, width, height) {
	   //var refPopup;
	   var screenWidth=screen.availWidth; // Bildschirmbreite für Zentrierung
	   var screenHeight=screen.availHeight; // Bildschirmhöhe
	   var flags=", toolbar=no, menubar=no, location=no, directories=no, scrollbars=yes, resizable=yes";
	   if (window.refPopup!=null)	refPopup.close();
	   refPopup=open(adress,"popup", "width=" + width + " height=" + height + ", left=" + parseInt((screenWidth-width)/2) + ", top=" + parseInt((screenHeight-height)/2) + flags);
	   refPopup.focus();
	   }
	
	// POPUP über gesamte Fensterbreite
	function popup() {
		var breite = screen.width;
		var hoehe = screen.height;
		var adress=popup.arguments[0];
		var flags;
		var refPopup;
		
		//if(popup.arguments.lenght>=1)	breite=popup.arguments[1];
		//if(popup.arguments.lenght>=2)	hoehe=popup.arguments[2];
		flags="width=" + breite + ",  height=" + hoehe + ",";
		flags+=" resizable=yes, scrollbars=no, dependent=yes";
		if (window.refPopup!=null)	refPopup.close();
		//alert(flags);
		refPopup = window.open(adress,"Popup",flags);
		refPopup.focus();
		}
	
//  C R O S S  -  B R O W S E R   A L L G E M E I N
	function getWindowWidth() {
		if(isIE()) return document.body.offsetWidth;
		else return this.innerWidth;
	}

	function getWindowHeight() {
		if(isIE()) return document.body.offsetHeight;
		else return this.innerHeight;
	}

//   Eventauslöser ermitteln 
	function resolveEventTarget(event) {
		return (isIE()) ? event.srcElement : event.target;
		}
		
		
// 			C R O S S - B R O W S E R   E V E N T H A N D L I N G
//  Event anmelden
//  obj: auslöser
//  type: Eventtyp (z.B. mousemove)
//  fn: Name (Referenz auf) aufzurufende Funktion 
	function addEvent( obj, type, fn ) {
		// Firefox
	   if (obj.addEventListener) {
		  obj.addEventListener( type, fn, false );
		  
		// IE
	   } else if (obj.attachEvent) {
		  obj["e" + type + fn] = fn;
		  obj[type + fn] = function() { obj["e" + type + fn] ( window.event ); }
		  
		  obj.attachEvent( "on" + type, obj[type + fn] );
	   }
	}


// Event abmelden
	function removeEvent( obj, type, fn ) {
	  // Firefox
	   if (obj.removeEventListener) {
		  obj.removeEventListener( type, fn, false );  
	   } 
	   
	   // IE
	   else if (obj.detachEvent) {
		  obj.detachEvent( "on" + type, obj[type + fn] );
		  obj[type + fn] = null;
		  obj["e" + type + fn] = null;
	   }
	}
	
	
// Hilfsfunktion: Art des Mausklicks beim ausgelösten Event (rechte / linke Maustaste)
	function getEventButtonType(event) {
		if (isIE()) {
			if(event.button < 2) return "LEFT";
			else if(event.button == 4) return "MIDDLE";
			else return "RIGHT";
			}
		
		else {
			if(event.button < 2) return "LEFT"; 
			else if(event.button == 4) return "MIDDLE";
			else return "RIGHT";
			}
		}
		
	
