// ################################################################################
// Name:         JavaScript Library 
// Beschreibung: Bibliothek mit Javascript-Grundfunktionen fuer Browser ab Version 3.0
// Version:      1.4
// Autor:        Roland Brueggemann, mehrkanal GmbH
// Erweiterung:	 Cedric Kastner, mehrkanal GmbH
// Benoetigt:    -
// LastModified: 2003-10-27
// ################################################################################


// ################################################################################
// Funktionsliste
//
//   Grafiken
//     imgNew()
//     imgChange()
//     imgPreload()
//     imgChangeFade()
//
//   Fenster
//     newWindow()
//     ab 1.4 newCenteredWindow()
//     ab 1.4 newFullscreenWindow()
//     windowMaximize()
// 
//   Formulare
//     setCheckboxes()
//     CountMax()
// 
//   URL
//     gotoUrl()
//     selectUrl()
//
//   etc.
//     getRidOfFrames()
// ################################################################################


// ##################################################
// Funktion:     imgNew()
// Beschreibung: Interne Funktion zur Erstellung ein neues Image-Objekts fuer die uerbergebene Grafikdatei
// Autor:        Roland Brueggemann
// Parameter:    
//    file       Dateiname des Bildes (vollstaendiger Pfad)
// Rueckgabe:    Inhalt des Image-Objektes
// Aufruf:       imgNew("bilder/test.gif");
// ##################################################

function imgNew(arg) {

	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

// ##################################################
// Funktion:     imgChange()
// Beschreibung: Tauscht Inhalt einer Grafik aus (Bildwechsel)
// Autor:        Roland Brueggemann
// Parameter (abwechselnd):
//               Bild-"Name" der zu aendernen Grafik
//               Dateiname des Bildes (vollstaendiger Pfad)
// Rueckgabe:    -
// Aufruf:       imgChange("button","bilder/button.gif");
// ##################################################

function imgChange() {

	if (document.images) {
		for (var i=0; i<imgChange.arguments.length; i+=2) {
			document[imgChange.arguments[i]].src = imgChange.arguments[i+1];
		}
	}
}

// ##################################################
// Funktion:     imgChangeFade()
// Beschreibung: Tauscht Inhalt einer Grafik mit IE Fade-Filter aus (Bildwechsel)
// Autor:        Roland Brueggemann
// Parameter:
//    id         Bild-"Name" der zu aendernen Grafik
//    file       Dateiname des Bildes (vollstaendiger Pfad)
// Rueckgabe:    -
// Aufruf:       imgChangeFade("button","bilder/button.gif");
// ##################################################

function imgChangeFade(id, file) {
	if (document.images && document.all && document.all[id].filters.blendTrans) {
		document.all[id].filters.blendTrans.Apply();
		document.all[id].src = file;
		document.all[id].filters.blendTrans.Play();
	} else {
		imgChange(id,file);
	}	
}

// ##################################################
// Funktion:     imgPreload()
// Beschreibung: Laedt Bild in den Speicher, um verzoegertes Nachladen zu verhindern
// Autor:        Roland Brueggemann
// Parameter:
//    file       Dateiname des Bildes (vollstaendiger Pfad)
// Rueckgabe:    -
// Aufruf:       imgPreload("bilder/test.gif");
// ##################################################

var imgPreloadCount = 0;
imgPreloadName = new Array();

function imgPreload(file) {

	if (document.images) {
		imgPreloadName[imgPreloadCount] = imgNew(file);
		imgPreloadCount ++;
	}
}

// ##################################################
// Funktion:     newWindow()
// Beschreibung: Oeffnet neues Browserfenster mit angegebener URL
// Autor:        Roland Brueggemann
// Parameter:
//    url        Adresse, die aufgerufen werden soll
//    width      Breite des Fensters
//    height     Hoehe des Fensters
//    options    Fenster-Eigenschaften
//    name       Name des Fensters
//    posX       X-Position des neuen Fensters
//    posY       Y-Position des neuen Fensters
// Rueckgabe:    -
// Aufruf:       newWindow("http://www.viaone.de",780,450);
// ##################################################

function newWindow(url,width,height,options,name,posX,posY) {

	if (!url) return false;
	if (!width) width = 900;
	if (!height) height = 300;
	if (!options) options = "scrollbars=yes,menubar=yes,toolbar=no,location=no,status=yes,resizable=yes";
	if (!posX && posX != "0") posX = 20;
	if (!posY && posX != "0") posY = 20;
	if (!name) name = "extWindow";

	window.open( url, name, "width=" + width + ",height=" + height + ",screenX=" + posX + ",screenY=" + posY + ",left=" + posX + ",top=" + posY + "," + options );
}



// ##################################################
// Funktion:     windowMaximize()
// Beschreibung: Maximiert das Browserfenster, in dem die Funktion aufgerufen wurde
// Autor:        Roland Brueggemann
// Parameter:    -
// Rueckgabe:    -
// Aufruf:       windowMaximize()
// ##################################################

function windowMaximize() {

	if (window.screen){
		if (document.all || document.layers) { 
			self.moveTo(0,0); 
			self.resizeTo(screen.availWidth,screen.availHeight)
		}
	}
}

// ##################################################
// Funktion:     gotoUrl()
// Beschreibung: Wechselt zur angegebenen URL (immer im href, nicht als onclick angeben!)
// Autor:        Roland Brueggemann
// Parameter (abwechselnd):
//               URL, die aufgerufen werden soll
//               Framename, in welchem die URL aufgerufen werden soll
//                  "this","": 	   Seite wird in aktuellem Frame geoeffnet
//                  "top":         Seite wird in aktuellem Fenster geoeffnet
//                  "blank","new": Seite wird in neuem Fenster geoeffnet
//                  sonst:         Seite wir in angegebem Frame geoeffnet (gleiches Frameset!)
// Rueckgabe:    -
// Aufruf:       gotoUrl("http://www.viaone.de","top");
// ##################################################

function gotoUrl() {

	for (var i=0; i<gotoUrl.arguments.length; i+=2) {
		url = gotoUrl.arguments[i];
		target = gotoUrl.arguments[i+1];

		if (url) {
			if (!target || target == "this") {
				this.location.href = url;
			}
			else if (target == "top") {
				top.location.href = url;
			}
			else if (target == "blank" || target == "new") {
				window.open(url);
			}
			else if (parent.frames[target]) {
				parent.frames[target].location.href = url;
			}
			else {
				alert("Der angegebene Frame " + target + " existiert nicht!");
			}
		} else {
			alert("Bitte geben Sie eine URL an!");
		}
	}
}


// ##################################################
// Funktion:     setCheckboxes(the_form, the_boxes, do_check)
// Beschreibung: (De-)Selektiert alle Checkboxen in einem Formular
// Autor:        Cedric Kastner
// Parameter: 
//    the_form   (string)  Name des Formulares
//    the_boxes  (string)  Name der Checkbox(en)
//    do_check   (boolean) Zu setzender Wert
// Rueckgabe:    -
// Aufruf:       setCheckboxes("meinFormular", "meineCheckbox[]", 1);
// ##################################################
function setCheckboxes(the_form, the_boxes, do_check) {
    
	var elts      = (typeof(document.forms[the_form].elements[the_boxes]) != 'undefined')
                  ? document.forms[the_form].elements[the_boxes] : 0;
				  
    var elts_cnt  = (typeof(elts.length) != 'undefined') ? elts.length : 0;

    if (elts_cnt) {
	
        for (var i = 0; i < elts_cnt; i++) {
			elts[i].checked = do_check;
        }
    } else {
        elts.checked = do_check;
    }
	
}


// ##################################################
// Funktion:     countMax(the_form, the_textarea, the_counter, the_limit)
// Beschreibung: Zaehlt die in einer Textarea eingegebenen Zeichen und
//               gibt eine Meldung aus wenn das Limit erreicht ist
// Autor:        Cedric Kastner
// Parameter: 
//   the_form    (string)  Name des Formulares
//   the_boxes   (string)  Name der Textarea
//   the_counter (string)  Name des Textfeldes in dem die Anzahl der Zeichen steht
//   the_limit   (integer) Maximale Anzahl der Zeichen
// Rueckgabe:    -
// Aufruf:       countMax("meinFormular", "meineTextarea", "meinTextfeld", 160);
// ##################################################
function countMax(the_form, the_textarea, the_counter, the_limit) { 
	
	var text_length;
	var max_length; 
	
	max_length = the_limit; 
	text_length = max_length - document.forms[the_form].elements[the_textarea].value.length; 
	
	if (text_length < 0) { 
		
		alert('Es duerfen nicht mehr als ' + max_length + ' Zeichen eingegeben werden!'); 
		document.forms[the_form].elements[the_textarea].value = document.forms[the_form].elements[the_textarea].value.substring(0, max_length); 
		text_length = max_length - document.forms[the_form].elements[the_textarea].value.length; 
		document.forms[the_form].elements[the_counter].value = text_length; 
	} else { 
		document.forms[the_form].elements[the_counter].value = max_length - document.forms[the_form].elements[the_textarea].value.length; 
	}
}


// ##################################################
// Funktion:     selectUrl(formname,selectname)
// Beschreibung: Wechselt zur ausgwaehlten Url einer beliebigen Selectbox
// Autor:        Roland Brueggemann
// Parameter: 
//    formname   Name des Formulares der Selectbox
//    selectname Name der Selectbox
// Rueckgabe:    -
// Aufruf:       selectUrl("meinFormular","meineSelectbox");
// ##################################################

function selectUrl(formname,selectname) {

	index = document[formname][selectname].selectedIndex; 
	url = document[formname][selectname].options[index].value; 
	
	if (url != "") {
		this.location.href = url; 
	}
}

// ##################################################
// Funktion:     getRidOfFrames()
// Beschreibung: Oeffnet aktuelle URL im Top-Frame
// Autor:        Roland Brueggemann
// Parameter:    -
// Rueckgabe:    -
// Aufruf:       getRidOfFrames()
// ##################################################

function getRidOfFrames() {

	if(top.frames.length > 0) {
		top.location.href = self.location;
	}
}

