function urldecode (str) {
    if(str == undefined) return '';
	str = decodeURIComponent(str.replace(/\+/g, '%20'));
	return str;
}


/**
 * get dates and prices for a specific hotel and display them in a list
 */
function fetchDatePriceHtmlList(thisLink, inputName){
	jQuery('#searchForm input[name="sortierung"]').val('preis');
	setStorageForm('searchForm', 'storageForm');
	document.storageForm.elements[inputName].value = jQuery(thisLink).siblings('.iff').text();
  resetSortBy();
  resetPageNumbers();
  
	this.href = '#'+jQuery('#storageForm').serialize();
	jQuery.history.load(this.href.replace(/^.*#/, ''));

}

/**
 * sorting functions
 */
function sortBy(value){
	jQuery('#storageForm input[name="sortierung"]').val(value);
	jQuery('#startposition').val("0");
	this.href = '#'+jQuery('#storageForm').serialize();
	jQuery.history.load(this.href.replace(/^.*#/, ''));
	return false;
}


/**
 * get all hotels from a specific region and display hotel list
 */
function fetchHotelHtmlList(thisLink){
	document.storageForm.region.value = jQuery(thisLink).prev('.topregion').text();
  jQuery('#ibeRegion').val(jQuery(thisLink).prev('.topregion').text());
  resetSortBy();
	this.href = '#'+jQuery('#storageForm').serialize();
	jQuery.history.load(this.href.replace(/^.*#/, ''));
  return false;
}




function fetchNewHtmlPage(thisPage){
	jQuery('#selectedPageNumber').val(thisPage);
	jQuery('#startposition').val(thisPage);
	this.href = '#'+jQuery('#storageForm').serialize();
	jQuery.history.load(this.href.replace(/^.*#/, ''));
	return false;
}






/**
 * Neue Funktion um fertiges HTML von TYPO3-Server zu bekommen
 */
function fetchHtmlResult(serviceName, objectName, formId) {
	jQuery.ajax({ 
        url: ajaxUrl,        // Achtung mit RealURL! 
        type: "POST",            // Daten per GET verschicken 
        data: { 
            eID: "ibe",    // eID 
            id: t3Pid,
            params: jQuery(formId).serialize(),
            method: serviceName
        }, 
        dataType: "html",        // das gibts zurück 

        // Es hat funktioniert? 
        success: function(response) { 
        	        	
        	jQuery('#contentRight').html(response);

        	switch(objectName) {
	        	case 'hotel':
//	        		printHotelRatings();
	        		break;
	        	case 'datePrice':
	        		jQuery('#searchForm input, #searchForm select').attr("disabled", "disabled");
	        		jQuery('#searchForm [name="abflughafen"]').removeAttr("disabled");  
	        		jQuery('#searchForm [name="start-datum"]').removeAttr("disabled");  
	        		jQuery('#searchForm [name="reise-dauer"]').removeAttr("disabled"); 
	        		jQuery('#searchForm [name="rueck-datum"]').removeAttr("disabled"); 
    				jQuery('#searchForm [name="rueck-datum"]').removeAttr("disabled"); 
    				jQuery('#searchForm [name="anzahl-erwachsene"]').removeAttr("disabled"); 
    				jQuery('#searchForm [name="alter-kind-1"]').removeAttr("disabled"); 
					jQuery('#searchForm [name="alter-kind-2"]').removeAttr("disabled"); 
					jQuery('#searchForm [name="alter-kind-3"]').removeAttr("disabled"); 
					jQuery('#searchForm [name="zimmerart"]').removeAttr("disabled"); 
					jQuery('#searchForm [name="verpflegung"]').removeAttr("disabled"); 
	        		break;
	        				
	        	default:
	        		jQuery('#searchForm input').removeAttr("disabled"); 
	        		break;
	        		
        	};
        	hideWaitAnimation();
        }, 

        // Schade, es war ein Fehler 
        error: function(error) {
        	jQuery("#results").hide();
        	jQuery("#errorContainer").show(); 
        } 
    }); 
	
}

function resetForm(form) {
	  jQuery(form + ' input[name!="reiseart"]').each(function(i, item) {
		  jQuery(this).val('');
	  });
	}

/**
 * Get-Parameter auseinanderpflückn
 */
var GET = new Array();
function get_GET_params(paramStr) {
	if(paramStr.length > 0) {
      var get_param_str = paramStr.substring(1, paramStr.length);
      var get_params = get_param_str.split("&");
      for(var i = 0; i < get_params.length; i++) {
         var key_value = get_params[i].split("=");
         var key = key_value[0];
         var value = key_value[1];
         if(!value)	continue;
         value = value.replace(/\ /, "+");
         value = value.replace(/\%20/, "+");
         value = value.replace(/\%2B/, "+");
         value = value.replace(/\&/, "%26");

         GET[key] = urldecode(value);
      }
   }
   return(GET);
}

/**
 * Kompert alle optionen für später
 */
function cloneRegionData(sourceEl, destEl) {
	if(jQuery(destEl).html() == "") {
		jQuery(destEl).append(jQuery(sourceEl).html());
	}
}

/**
 * 
 * @param topregionVal
 * @return
 */
function setIbeTopRegion(topregionVal) {
	jQuery('#ibeDestination').val(topregionVal);
}
/**
 * Stellt nur die gewählten Regionen dar bei übergebener Topregion-ID
 * 
 * Aufruf vom 
 * change-Event auf #ibeDestination 
 * und von 
 * pageload
 */
function setIbeRegion(topregions, reiseart, preselect, topregion, el) {
	jQuery(el).attr("disabled", true);
	jQuery(el).html('<option value="">wird aktualisiert...</option>');
	jQuery.ajax({ 
        url: "index.php",        // Achtung mit RealURL! 
        type: "POST",            // Daten per GET verschicken 
        data: { 
            eID: "ibe",    // eID 
            method: "getRegionOptions",
            topregions: topregions,
            reiseart: reiseart,
            preselect: preselect,
            topregion: topregion
        }, 
        dataType: "html",        // das gibts zurück 

        // Es hat funktioniert? 
        success: function(response) { 
//        	jQuery('#results').children().hide();
        	jQuery(el).empty();
        	jQuery(el).html(response);
        	jQuery(el).removeAttr("disabled"); 
        }, 

        // Schade, es war ein Fehler 
        error: function(error) {
        	jQuery("#results").hide();
        	jQuery("#errorContainer").show(); 
        } 
    }); 
	jQuery(el).removeAttr("disabled"); 
/** 2. Versuch, aber hakt und ist nich sooo juut	
	jQuery('#ibeRegion').empty();
	jQuery('#region654Template option'+(topregionVal>0 ? '[value=""], #region654Template option[title="'+topregionVal+'"]' : '')).clone().appendTo('#ibeRegion');
*/	
/** Funktioniert nur mit LI im IE/Safari
	jQuery('#ibeRegion option').hide();
	jQuery('#ibeRegion option'+(topregionVal>0 ? '[title="'+topregionVal+'"], #ibeRegion option[value=""]' : '')).show();
*/	
	setIbeTopRegion(topregion);
//	jQuery('#ibeRegion').val("");
}
/**
 * Stellt nur die gewählten Regionen dar bei übergebener Region-ID
 * 
 * wird vom 
 * change-Event auf #ibeDestination 
 * und von 
 * pageload
 */
function setIbeRegionByRegionId(regionVal, reiseart, el) {
	var topregionVal = jQuery('#region654Template option[value="'+regionVal+'"]').attr('title');
	setIbeRegion(topregionVal, reiseart, el);
}

/**
 * setzt die Formvalues
 */
function setFormValues(formEl, params) {
	for(key in params) {
		// Checkbox ? 
		if(jQuery(formEl+' [name="'+key+'"]').attr("type")=="checkbox") {
			if(jQuery(formEl+' [name="'+key+'"]').val() == params[key]
            && params[key]!='') {
				jQuery(formEl+' [name="'+key+'"]').attr("checked", "checked");
			} else {
				jQuery(formEl+' [name="'+key+'"]').removeAttr("checked");
			}
		}
		else if(params[key]=='') {
			jQuery(formEl + ' [name="'+key+'"]').val('');
		}
		else {
			// Values direkt setzen
			jQuery(formEl+' [name="'+key+'"]').val(params[key]);
		}
	}
}

/**
 * Kopiert Form-Values von einer Form zu anderen
 * 
 * @param sourceEl Form
 * @param destEl ZielForm
 * @return
 */
function copyForms(sourceEl, destEl) {
	jQuery(sourceEl + ' input, #'+sourceEl+' select').each(function(i){
		jQuery(destEl+' [name="'+jQuery(this).attr('name')+'"]').val(jQuery(this).val());
	});
}
/**
 * Aufruf bei Aufruf mit # für Browserhistory
 * @param hash
 * @return
 */
function pageload(hash)
{
	var hash = "";
	if(window.location.hash.length>2) {
		hash = window.location.hash;
	}
	// Einsprung von Suchmaske Startseite oder erweiterte Suche
	else if (hash == '' && window.location.search.length>2) {
		hash = window.location.search;
	}
	if(hash.length<1) {
		return;
	}
	
	displayWaitAnimation();
	get_GET_params(hash);
	setFormValues('#storageForm', GET);
	setFormValues('#searchForm', GET);

 
	if((GET['region']=="" || !GET['region'] || GET['region']<1) && GET['reiseziel']) {
		setIbeRegion(0, reiseart, GET['region'], GET['reiseziel'], '#ibeRegion');
	}
	
	submitSearchValues('#storageForm');
	jQuery('body').scrollTo(jQuery('#site-wrap'));
	return false;
	
}

function submitSearchValues(formEl) {
	if(jQuery.trim(jQuery('#storageForm [name="region"]').val())==""
	|| jQuery.trim(jQuery('#storageForm [name="region"]').val())<1) {
		//jQuery('#ibeRegion').get(0).selectedIndex == 0) {
		jQuery.ajax({ 
	        url: "index.php",        // Achtung mit RealURL! 
	        type: "POST",            // Daten per GET verschicken 
	        data: { 
	            eID: "ibe",    // eID 
	            id: t3Pid,
	            method: "regions",
	            //reiseziel: jQuery('#ibeDestination').val(),
	            params: jQuery(formEl).serialize()
	        }, 
	        dataType: "html",        // das gibts zurück 
	
	        // Es hat funktioniert? 
	        success: function(response) { 
//	        	jQuery('#results').children().hide();
	        	jQuery('#contentRight').html(response);
	        	hideWaitAnimation();
	        }, 
	
	        // Schade, es war ein Fehler 
	        error: function(error) {
	        	jQuery("#results").hide();
	        	jQuery("#errorContainer").show(); 
	        } 
	    }); 
	}
	else {
		if(jQuery.trim(jQuery('#storageForm [name="iff-code"]').val())!="") {
			fetchHtmlResult('termine-und-preise','datePrice', formEl);
		}	
		else if(jQuery.trim(jQuery('#storageForm [name="region"]').val())!="") {
			fetchHtmlResult('hotel-angebote','hotel', formEl);
		}
    	
	}
	
}
/**
 * submit function
 */

function submitSearchForm(){
    
	displayWaitAnimation();
	resetForm('#storageForm');
	setStorageForm('searchForm', 'storageForm');
	this.href = '#'+jQuery('#storageForm').serialize();
	jQuery.history.load(this.href.replace(/^.*#/, ''));
	
	return false;
}

