function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function 
openBrWindow(theURL,winName,features) {
	window.open(theURL,winName,features);
}

function 
openDocWindow(theURL,winName,features) {
	window.open(theURL,winName,'menubar=1,toolbar=0,location=0,directories=0,status=0,scrollbars=1,resizable=1,dependent=1,width=750,height=560,left=10,top=10');
}

function OpenPopUp(URL,WinName,Options) { 
	window.open(URL,WinName,Options);
}

// original code by Bill Trefzger 12/12/96
function submitForm(formname,selectname){
	if (document.forms[formname].elements[selectname].options[document.forms[formname].elements[selectname].selectedIndex].value != "") {
		document.forms[formname].submit();
		//location = document.forms[formname].elements[selectname].options[document.forms[formname].elements[selectname].selectedIndex].value
	}
}

// original code by Bill Trefzger 12/12/96
function go1(formname,selectname){
	if (document.forms[formname].elements[selectname].options[document.forms[formname].elements[selectname].selectedIndex].value != "") {
		document.forms[formname].submit();
	}
}

function setCheckboxes(formName,checkboxName,status) {
	var elts= document.forms[formName].elements[checkboxName];
	var elts_cnt = (typeof(elts.length) != 'undefined')?elts.length:0;

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

// original code by Bill Trefzger 12/12/96
function submitAction(formname,selectname) {
	
	var check = false;
	var action = document.forms[formname].elements[selectname].options[document.forms[formname].elements[selectname].selectedIndex].value;
	
	if (action == 'selectProductMulti' || action == 'selectBProductMulti')
		check = true;
	if (action == 'deselectProductMulti' || action == 'deselectBProductMulti')
		check = true;
	
	if (action == 'changeVisiMulti')
		check = confirm('M�chten Sie die Sichtbarkeit der ausgew�hlten Datens�tze wirklich �ndern?');
	if (action == 'changeStatusMulti')
		check = confirm('Do you really want to change the status for the checked projects?');
	if (action == 'changeAccessMulti')
		check = confirm('M�chten Sie die ausgew�hlten Datens�tze wirklich sperren/entsperren?');
	if (action == 'deleteMulti')
		check = confirm('M�chten Sie die ausgew�hlten Datens�tze wirklich l�schen?');
	if (action == 'deletemyMulti')
		check = confirm('M�chten Sie die ausgew�hlten Datens�tze wirklich l�schen?');
	
	//submit
	if (document.forms[formname].elements[selectname].options[document.forms[formname].elements[selectname].selectedIndex].value != "" && check == true)
		document.forms[formname].submit();
	
	return '';
}

// erwartet ein js array segment[branche][segment]
// formname: konfigurator
// selectname: segment_id, segment2_id

function changeSelectOptions(nameArray,valueArray,formName,selectParent,selectChild,startText) {
	var i;
	//var branche = document.konfigurator.branche_id.options.selectedIndex+1;
	var index = document.forms[formName].elements[selectParent].options.selectedIndex;
	var parent_id = document.forms[formName].elements[selectParent].options[index].value;
	if(nameArray[parent_id]) {
		var laenge = nameArray[parent_id].length;
		document.forms[formName].elements[selectChild].options.length=1;
		document.forms[formName].elements[selectChild].options[0].text="Bitte w�hlen ...";
		document.forms[formName].elements[selectChild].options[0].value='';
		document.forms[formName].elements[selectChild].options.length=2;
		document.forms[formName].elements[selectChild].options[1].text="- - - - -";
		document.forms[formName].elements[selectChild].options[1].value='';
		for(i=2; i < laenge; i++) {
			document.forms[formName].elements[selectChild].options.length++;
			document.forms[formName].elements[selectChild].options[i].text=nameArray[parent_id][i];
			document.forms[formName].elements[selectChild].options[i].value=valueArray[parent_id][i];
		}
	}
	else {
		document.forms[formName].elements[selectChild].options.length=1;
		document.forms[formName].elements[selectChild].options[0].text=startText;
		document.forms[formName].elements[selectChild].options[0].value='';
	}
document.forms[formName].elements[selectChild].options.selectedIndex=0;
}


function lock_unlock_Element(formName,elementName) {
	if (document.forms[formName].elements[elementName].disabled == true) {
		unlock_Element(formName,elementName);
	}
	else {
		lock_Element(formName,elementName)
	}
}

function lock_Element(formName,elementName) {
	document.forms[formName].elements[elementName].disabled = true;
}

function unlock_Element(formName,elementName) {
	document.forms[formName].elements[elementName].disabled = false;
}

function emptyValue(formName,elementName) {
	document.forms[formName].elements[elementName].value = '';
}
/*
function einaus(elementName) {
	
	if (document.getElementById) {
		
		if (document.getElementById(elementName).style.visibility != "visible") {
			document.getElementById(elementName).style.display = "block";
			document.getElementById(elementName).style.visibility = "visible";
			return false;		
		}
		else {
			document.getElementById(elementName).style.display = "none";
			document.getElementById(elementName).style.visibility = "hidden";
			//document.getElementById("textbox").style.width = "0px";
			//document.getElementById("textbox").style.height = "0px"; 
			return false;
		}
	}
	return false;
}
*/

function checkOptionValue(formName,formElement,alertText) {
	if (document.forms[formName].elements[formElement].value == '::parent::') {
		alert (alertText);
		document.forms[formName].elements[formElement].options.selectedIndex = document.forms[formName].elements[formElement].options.selectedIndex + 1;
	}
}

/*
function setCurser() {
	if (document.forms.length > 0) {
		var field = document.forms[0];
		for (i = 0; i < field.length; i++) {
			if ((field.elements[i].type == "text") || (field.elements[i].type == "textarea") || (field.elements[i].type.toString().charAt(0) == "s")) {
				document.forms[0].elements[i].focus();
				break;
			}
		}
	}
}
*/

// original code by smart-shop.com
function copyToList(from,to,action,availableCounter,selectedCounter){
	fromList = eval('document.forms[0].elements[from]');
	toList = eval('document.forms[0].elements[to]');
	var container = new Array();
	var sel = false;
	for (i=0;i<fromList.options.length;i++) {
		var current = fromList.options[i];
		if (current.selected) {
			sel = true;
			txt = current.text;
			val = current.value;
			container[i] = val;
			toList.options[toList.length] = new Option(txt,val);
			fromList.options[i].selected = false;
			fromList.options[i] = null; // added by me
			i--;
		}
	}
	if (!sel) alert ('You haven\'t selected any options (copy)!');
	if (action == 'add') {
		document.getElementById(availableCounter).innerHTML = fromList.options.length;
		document.getElementById(selectedCounter).innerHTML = toList.options.length;
	} else {
		document.getElementById(availableCounter).innerHTML = toList.options.length;
		document.getElementById(selectedCounter).innerHTML = fromList.options.length;
	}
}



// original code by smart-shop.com
function removeFromList(from){
	fromList = eval('document.forms[0].' + from);
	var container = new Array();
	var sel = false;
	for (i=0;i<fromList.options.length;i++) {
		var current = fromList.options[i];
		if (current.selected) {
			sel = true;
			txt = current.text;
			val = current.value;
			container[i] = val;
			fromList.options[i] = null;
			i--;
		}
	}
	if (!sel) alert ('You haven\'t selected any options (remove)!');
}


function populateContainer(elementName){
	toList = eval('document.forms[0].elements[elementName]');
	toContainer = eval('document.forms[0].container');
	var container = new Array();
	for (i=0;i<toList.options.length;i++){
		var current = toList.options[i];
		txt = current.text;
		val = current.value;
		container[i] = val;
	}
	toContainer.value = container.join(',');
}

////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////  AJAX-Functions  //////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////

function getXMLRequester( ){
	var xmlHttp = false; //Variable initialisieren

	try{
		// Der Internet Explorer stellt ein ActiveXObjekt zur Verf�gung
		if( window.ActiveXObject ){
			// Versuche die neueste Version des Objektes zu laden
			for( var i = 5; i; i-- ){
				try { //Wenn keine neuere geht, das alte Objekt verwenden
					if( i == 2 ){
						xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" );    
					} else { // Sonst die neuestm�gliche Version verwenden
						xmlHttp = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
					}
					break; //Wenn eine Version geladen wurde, unterbreche Schleife
				}
				catch( excNotLoadable ){
					xmlHttp = false;
				}
			}
		}
		// alle anderen Browser
		else if( window.XMLHttpRequest )
		{
			xmlHttp = new XMLHttpRequest();
		}
	}
	// loading of xmlhttp object failed
	catch( excNotLoadable )
	{
		xmlHttp = false;
	}
	return xmlHttp ;
}

// Konstanten
var REQUEST_GET		= 0;
var REQUEST_POST	= 2;
var REQUEST_HEAD	= 1;
var REQUEST_XML		= 3;

function sendRequest( strSource, strData, intType, intID ){
	// Falls strData nicht gesetzt ist, als Standardwert einen leeren String setzen
	if( !strData )
		strData = '';

	// Falls der Request-Typ nicht gesetzt ist, standardm��ig auf GET setzen
	if( isNaN( intType ) )
		intType = 0;

	// wenn ein vorhergehender Request noch nicht beendet ist, beenden
	if( xmlHttp && xmlHttp.readyState ){
		xmlHttp.abort( );
		xmlHttp = false;
	}

	// wenn m�glich, neues XMLHttpRequest-Objekt erzeugen, sonst abbrechen
	if( !xmlHttp ){
		xmlHttp = getXMLRequester( );
		if( !xmlHttp )
			return;
	}
	
	// Falls die zu sendenden Daten mit einem & oder einem ? beginnen, erstes Zeichen abschneiden
	if( intType != 1 && ( strData && strData.substr( 0, 1 ) == '&' || strData.substr( 0, 1 ) == '?' ) )
		strData = strData.substring( 1, strData.length );

// Als R�ckgabedaten die gesendeten Daten, oder die Zieladresse setzen
	var dataReturn = strData ? strData : strSource;
	
	switch( intType ){
		case 1:    //Falls Daten in XML-Form versendet werden, xml davorschreiben
			strData = "xml=" + strData;
		case 2: // falls Daten per POST versendet werden
			// Verbindung �ffnen 
			xmlHttp.open( "POST", strSource, true );
			xmlHttp.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
			xmlHttp.setRequestHeader( 'Content-length', strData.length );
			break;
		case 3: // Falls keine Daten versendet werden
			// Verbindung zur Seite aufbauen
			xmlHttp.open( "HEAD", strSource, true );
			strData = null;
			break;
		default: // Falls Daten per GET versendet werden
			//Zieladresse zusammensetzen aus Adresse und Daten
			var strDataFile = strSource + (strData ? '?' + strData : '' );
			// Verbindung aufbauen
			xmlHttp.open( "GET", strDataFile, true );
			strData = null;
	}

	// die Funktion processResponse als Event-handler setzen, wenn sich der Verarbeitungszustand der Anfrage �ndert
	xmlHttp.onreadystatechange = new Function( "", "processResponse(" + intID + ")" ); ;

	// Anfrage an den Server setzen
	xmlHttp.send( strData );    //strData enth�lt nur dann Daten, wenn die Anfrage �ber POST passiert

	// gibt die gesendeten Daten oder die Zieladresse zur�ck
	return dataReturn;
}

function processResponse( intID ){
	//aktuellen Status pr�fen
	switch( xmlHttp.readyState ){
		//nicht initialisiert
		case 0:
		// initialisiert
		case 1:
		// abgeschickt
		case 2:
		// ladend
		case 3:
			break;
		// fertig
		case 4:
			// Http-Status �berpr�fen
			if( xmlHttp.status == 200 ) {   // Erfolg
				processData( xmlHttp, intID ); //Daten verarbeiten
			} else { //Fehlerbehandlung
				if( window.handleAJAXError )
					handleAJAXError( xmlHttp, intID );
				else
					alert( "ERROR\n HTTP status = " + xmlHttp.status + "\n" + xmlHttp.statusText ) ;
			}
	}
}

// handle response errors
function handleAJAXError( xmlHttp, intID ){
	alert("fehler");
}

function processData( xmlHttp, intID ){
	// process text data
	updateResorts( xmlHttp.responseText );
}


function updateResorts(str){
	//Selectbox mit Namen resorts leeren
	document.search.resorts.length = 0;
	//Antwort vom Server ist eine Kommagetrente Liste
	//Daraus ein Array machen und in elems speichern
	var elems = str.split(",");
	//Aus jedem Element des Arrays eine neue Option machen und an die Box anf�gen
	for (var i = 0;i < elems.length; i++){
		// ich habe das ganze noch ein bisschen erweitert, damit man jetzt den Option-Text durch ein "#" vom Option-Value trennen kann 
		var elems2 = elems[i].split("#");
		// new Option(text,value,defaultSelected,selected)
		if (document.getElementById("resorts_bak").value == elems2[1]){
			selectedVal = true;
		} else {
			selectedVal = false;
		}
		
		neu = new Option(elems2[0],elems2[1],false,selectedVal);
		document.search.resorts.options[document.search.resorts.length] = neu;
	}
	//Neue Select-Box sichtbar machen
	document.getElementById("resortsDiv").style.display="block";
}

// globales XMLHttpRequest-Objekt erzeugen
var xmlHttp = getXMLRequester();

/*
//Request aufrufen
function fillResorts(){
	strSource = "ajax.php";
	strData = "country=" + document.search.countries.value;
	intType= 0; //GET
	intID = 1;
	sendRequest(strSource,strData,intType,intID);
}

*/

function detailsucheEinAus() { // Prototype ab Version 1.50 erforderlich!
	
	if ( $('detailsuche').visible() ) {
		
		$('detailsuche').setStyle({   
			visibility: 'hidden',   
			display: 'none' 
		});
				
	}
	else {
		
		$('detailsuche').setStyle({   
			visibility: 'visible',   
			display: 'block' 
		}); 
		
	 }
}


