/*
region -> Link zur Regionsseite
ort -> Freitext
flaeche -> Zahl evtl + " qm"
anzahl_zimmer -> int
anzahl_personen -> int oder String ("2-4")
*/

var kriterien = new Object();
kriterien["region"] = "";
kriterien["ort"] = "";
kriterien["flaeche"] = 0;
kriterien["zimmer"] = 0;
kriterien["personen"] = 0;

$(document).ready(function() {

	if(pagetype==150)
		hideInvisible();

	$(".kriterium_int").keydown(function(event) {
		var c = event.keyCode;
		if((c<48 || c>57) && (c<96 || c>105) && (c!=8 && c!=46 && c!=37 && c!=39) )return false;		
	});
	$(".kriterium_string").keydown(function(event) {
		var c = event.keyCode;
		if(!((c<48 || c>57) && (c<96 || c>105)) && (c!=8 && c!=46 && c!=37 && c!=39))return false;		
	});	

	$(".kriterium_int").change(function() {
		var val = this.value;
		if(val=="")val=0;
		kriterien[this.name]=parseInt(val);
		$("#objects").hide();
		refreshList();
		$("#objects").slideDown(2000);
	});
	$(".kriterium_string").change(function() {
		kriterien[this.name]=this.value.toLowerCase();
		
		// Zuruecksetzen des Ortes, wenn Region leer.
		if(this.id=="region" && (this.value.toLowerCase()==null || this.value.toLowerCase()=="")){
			$("select").each(function(){
				$(this).val("");
			});
			kriterien["ort"] = "";
		}
			
		$("#objects").hide();
		refreshList();

		// Sonderbehandlung zum Ausblenden best. Angebote auf der Startseite. Hier ist immer nur 1 Angebot je Anbieter zu sehen.
		if(this.id=="region" && pagetype==150){
			if(this.value.toLowerCase()!=null && this.value.toLowerCase()!="")
				showInvisible();
			else
				hideInvisible();
			markRows();	
		}		
		
		$("#objects").slideDown(2000);
	});	
	
	$(".filter").click(function() {
		$("#objects").hide();
		refreshList();
		$("#objects").slideDown(2000);
	});
	
	$("#region").change(function() {		
		var optionid = this[this.selectedIndex].id;
		refreshOrtSelects(optionid);
	});
	markRows();
});

function refreshOrtSelects(optionid){
	if(optionid!=null && optionid!=""){
		$("select[name=ort]").each(function(index){
			if(this.id.indexOf(optionid) !=-1){
				$(document.getElementById(this.id)).removeClass("ortHide");
				$(document.getElementById(this.id)).addClass("ortshow");
			}else{
				$(document.getElementById(this.id)).removeClass("ortShow");
				$(document.getElementById(this.id)).addClass("ortHide");
			}
		});
	}else if(optionid==""){
		$("select[name=ort]").each(function(index){
			if(this.id=="rid_0"){
				$(document.getElementById(this.id)).removeClass("ortHide");
				$(document.getElementById(this.id)).addClass("ortshow");
			}else{			
				$(document.getElementById(this.id)).removeClass("ortShow");
				$(document.getElementById(this.id)).addClass("ortHide");				
			}
		});		
	}
}

function refreshList(){	
//	var objekte = document.getElementsByName("angebot");
	var objekte = document.getElementsByTagName("div");

	for(i=0;i<objekte.length;i++){
		if(objekte[i].getAttribute("name")==null || !objekte[i].getAttribute("name")=="angebot")continue;
		var props = objekte[i].getAttribute("props").split(";");
		if((props[0]==kriterien["region"] || kriterien["region"]=="") && 
			(props[1]==kriterien["ort"] || kriterien["ort"]=="") &&
			(props[2]>=kriterien["flaeche"] || kriterien["flaeche"]==0) &&
			(props[3]>=kriterien["zimmer"] || kriterien["zimmer"]==0) &&
			(props[4]>=kriterien["personen"] || kriterien["personen"]==0)){
			objekte[i].style.visibility="";
			objekte[i].style.display="block";			
		}else{
			objekte[i].style.visibility="hidden";
			objekte[i].style.display="none";
		}
	}
	markRows();
}

function markRows(){
	var grey = false;
	$("div[name=angebot]").each(function(index){
		if(this.style.visibility!="hidden" && this.style.display!="none")
			if(!grey){
				$(this).addClass("grey");
				grey = true;
			}else{
				if($(this).hasClass("grey") === true)
					$(this).removeClass("grey");
				grey = false;
			}			
	});		
}

function hideInvisible(){
	$(".invisible").each(function(){
		this.style.visibility="hidden";
		this.style.display="none";			
	});
}
function showInvisible(){
	$(".invisible").each(function(){
		this.style.visibility="";
		this.style.display="block";			
	});
}
