var LocationDataControl = function(parentDivSelector,config)
{
	var self = this;
	
	this.container = $(parentDivSelector);
	this.config = config;
	this.t3_type = 3000;
	
	this.div_select = null;
	this.div_data = null;
	
	this.entrys = null;
	
	this.init = function()
	{
		//create inner structure for container
		this.div_select = $("<div></div>"); //Div that will contain the selectbox
		this.container.append(this.div_select);
		this.div_data = $("<div></div>"); //Div that will contain the Location-Entry
		this.container.append(this.div_data);
	}
	this.init();
	
	this.load_by_company_city = function(company_id,city_id)
	{
		$.getJSON('/',{
			type: this.t3_type,
			L: this.config.lang,
			company_id: company_id,
			city_id: city_id,
			locationsPIDs: this.config.locationsPIDs
		},this.load_by_company_city_cb);
	}
	
	this.load_by_company_city_cb = function(data)
	{
		self.entrys = data;
		
		if (self.entrys.length > 2) //Render Select
		{
			self.render_select(self.entrys[0].city);
		}
		else //Render Entrys
		{
			self.div_data.empty();
			self.div_select.empty();
			for(var x=0;x<self.entrys.length;x++) self.render_entry(self.entrys[x]);
		}
	}
	
	this.load_ids = function(ids)
	{
		ids = ids+""; //make it a string
		
		if (ids.indexOf(",") > -1) //more than one id
		{
			//load select box
			this.load_by_ids(ids);
		}
		else //one id
		{
			//load entry data
			this.load_by_id(ids);
		}
	}
	
	this.load_by_ids = function(ids)
	{
		$.getJSON('/',{
			type: this.t3_type,
			L: this.config.lang,
			location_ids: ids
		},this.load_by_ids_cb);
	}
	
	this.load_by_ids_cb = function(data)
	{
		self.entrys = data;
		
		if (self.entrys.length > 2) //Render Select
		{
			self.render_select();
		}
		else //Render Entrys
		{
			self.div_data.empty();
			self.div_select.empty();
			for(var x=0;x<self.entrys.length;x++) self.render_entry(self.entrys[x]);
		}
	}
	
	this.render_select = function(city_for_title)
	{
		self.div_data.empty();
		self.div_select.empty();
		
		var select_title = "";
		if (city_for_title)
		{
			select_title = this.get_l("business_in")+" "+city_for_title;
		}
		else if (location.href.indexOf("saria") > -1)
		{
			select_title = this.get_l("more_than_three");
		}
		else
		{
			select_title = $.trim(self.entrys[0].titel)+", "+($.trim(self.entrys[0].subtitel).length > 0 ? $.trim(self.entrys[0].subtitel)+" " : "")+$.trim(self.entrys[0].city);
		}
		if (select_title.length > 0)
		{
			this.div_select.append("<div class='select_title'>"+select_title+"</div>");
		}
		
		var select = $("<select></select>");
		select.addClass("width_145"); //Add Class for Niceforms
		select.append("<option value='0'>"+this.get_l("select_company")+"</option>");
		for (var x=0;x<self.entrys.length;x++)
		{
			select.append("<option value='"+self.entrys[x].uid+"'>"+self.entrys[x].titel+" "+self.entrys[x].subtitle_2+"</option>")
		}
		this.div_select.append(select);
		
		select.change(this.select_onChange);
		
		replaceSelect(select.get(0));
	}
	
	this.select_onChange = function()
	{
		self.div_data.empty();
		if (this.selectedIndex > 0) self.render_entry(self.entrys[this.selectedIndex-1]);
	}
	
	this.load_by_id = function(id)
	{
		$.getJSON('/',{
			type: this.t3_type,
			L: this.config.lang,
			location_id: id
		},this.load_by_id_cb);
	}
	
	this.load_by_id_cb = function(data)
	{
		self.data = data;
		
		self.div_data.empty();
		self.div_select.empty();
		self.render_entry(data);
	}
	
	this.render_entry = function(data)
	{
		if (!data.uid) return;
		
		var entry_div = $("<div class='entry'></div>");
		
		if (data.freetext_above.length > 0) entry_div.append("<div class='freetext_above'>"+data.freetext_above+"</div>");
		
		entry_div.append("<div class='titel fett'>"+data.titel+"</div>");
		
		if (data.fk_contact_over > 0)
		{
			var contact_over_link = $("<a href='#'>"+this.get_l("contact_via")+"</a>");
			contact_over_link.bind("click",{location_id:data.fk_contact_over},function(event){
				this.load_by_id(event.data.location_id);
			});
			
			var contact_over_link_div = $("<div class='contact_over'></div>");
			contact_over_link_div.append(contact_over_link);
			
			entry_div.append(contact_over_link_div);
			
			return;
		}
		
		if (data.subtitel.length > 0) entry_div.append("<div class='subtitel'>"+data.subtitel+"</div>");
		if (data.subtitle_2.length > 0) entry_div.append("<div class='subtitle_2'>"+data.subtitle_2+"</div>");
		if (data.street.length > 0) entry_div.append("<div class='street_housenumber'>"+data.street+" "+data.housenumber+"</div>");
		if (data.zip.length > 0) entry_div.append("<div class='zip_city'>"+data.zip+" "+data.city+"</div>");
		if (data.country_name.length > 0) entry_div.append("<div class='country_name'>"+data.country_name+"</div>");
		if (data.telehpone.length > 0) entry_div.append("<div class='telehpone'>"+this.get_l("tel")+" "+data.telehpone+"</div>");
		if (data.telefax.length > 0) entry_div.append("<div class='telefax'>"+this.get_l("fax")+" "+data.telefax+"</div>");
		if (data.email.length > 0) entry_div.append("<div class='email'><a href='javascript:linkTo_UnCryptMailto(\""+data.email+"\");'>"+this.get_l("email")+"</a></div>");
		if (data.url.length > 0) entry_div.append("<div class='url'><a href='"+(data.url.indexOf("http://") < 0 && data.url.indexOf("https://") < 0 ? "http://"+data.url : data.url)+"' target='_blank'>"+this.get_l("internet")+"</a></div>");
		if (data.route_pdf.length > 0) entry_div.append("<div class='route_pdf'><a href='/uploads/tx_3slocations/"+data.route_pdf+"' target='_blank'>"+this.get_l("directions")+"</a></div>");
		if (data.times.length > 0) entry_div.append("<div class='times'><div class='title'>"+this.get_l("opening_hours")+"</div>"+data.times.replace(/\n/g,"<br />")+"</div>");
		if (data.freetext.length > 0) entry_div.append("<div class='freetext'>"+data.freetext+"</div>");
		
		detailLink = "";
		if (this.config.regionOutputPID && data.showRegionLink == 1) detailLink = "/index.php?id="+this.config.regionOutputPID+"&L="+this.config.lang+"&locationID="+data.uid;
		if (data.detailpid.length > 0 && this.config.hidedetailpid != 1) detailLink = data.detailpid+"&L="+this.config.lang;
		if (detailLink.length > 0) entry_div.append("<div class='regionOutput '><div class='title'>"+this.get_l("further_information")+"</div><p class='grau'>"+this.get_l("learn_more")+" <a href='"+detailLink+"'>"+this.get_l("here")+"</a></p></div>");
		
		this.div_data.append(entry_div);
	}
	
	this.get_l = function(val)
	{
		l = 0;
		if (self.config.lang) l = self.config.lang;
		
		if (!self.LANG[val]) return("");
		
		if (!self.LANG[val][l]) return(self.LANG[val][0]);
		
		return(self.LANG[val][l]);
	}
	/*
	 *	0:Deutsch
		1:Englisch
		2:Niederländisch
		3:Französisch
		4:Ungarisch
		7:Polnisch
	 */
	this.LANG = {
		business_in: {
			0: "Unternehmen in",
			1: "Business in",
			2: "Onderneming in",
			3: "Entreprise à",
			4: "Vállalat x városban",
			7: "Przedsiębiorstwo w"
		},
		more_than_three: {		
			0: "An dem von Ihnen gewählten Standort gibt es mehr als drei Unternehmen",
			1: "In the location chosen by you there are more than three businesses",
			2: "Op de door u gekozen locatie bevinden zich meer dan drie bedrijven ",
			3: "Il existe plus de trois entreprises dans la localité que vous avez choisie",
			4: "Az ön által választott helyszínen háromnál több vállalat van",
			7: "W wybranej lokalizacji znajdują się ponad trzy przedsiębiorstwa"
		},
		select_company: {
			0: "Unternehmen wählen",
			1: "Select business",
			2: "Bedrijven kiezen",
			3: "Choisir une entreprise",
			4: "Válasszon vállalatot",
			7: "Wybrać przedsiębiorstwo"
		},
		contact_via: {
			0: "Kontakt über...",
			1: "Contact via...",
			2: "Contact via ...",
			3: "Contact par ...",
			4: "Kapcsolattartó:",
			7: "Kontakt przez"
		},
		tel: {
			0: "Tel.:",
		    1: "Tel.:",
			2: "Tel.:",
			3: "Tél. :",
			4: "Tel.:",
			7: "Tel.:"
		},
		fax: {
		    0: "Fax:",
		    1: "Fax:",
			2: "Fax:",
			3: "Fax :",
			4: "Fax:",
			7: "Fax:"
		},
		email: {
		    0: "E-Mail",
		    1: "E-Mail",
			2: "E-Mail",
			3: "E-Mail",
			4: "E-Mail",
			7: "E-Mail"
		},
		internet: {
		    0: "Internet",
		    1: "Internet",
			2: "Internet",
			3: "Internet",
			4: "Internet",
			7: "Internet"
		},
		directions: {
		    0: "Anfahrtsskizze",
		    1: "Directions",
			2: "Routebeschrijving",
			3: "Plan d’accès",
			4: "Megközelítési vázlatrajz",
			7: "Dojazd"
		},
		opening_hours: {
		    0: "Öffnungszeiten:",
		    1: "Opening hours:",
			2: "Openingstijden:",
			3: "Horaires d’ouverture :",
			4: "Nyitvatartási idők:",
			7: "Godziny otwarcia:"
		},
		learn_more: {
		    0: "Mehr über diesen Standort erfahren Sie",
		    1: "You can learn more about this location",
			2: "Meer over deze locatie leest u",
			3: "Pour plus d’informations sur la localité, cliquez",
			4: "Erről a helyszínről többet tud meg",
			7: "Dalsze informacje na temat danej"
		},
		here: {
		    0: "hier",
		    1: "here",
			2: "hier",
			3: "ici.",
			4: "itt",
			7: "lokalizacji"
		},
		further_information: {
		    0: "Weitere Informationen",
		    1: "Further information",
			2: "Meer informatie",
			3: "Plus d'informations",
			4: "További információk",
			7: "Więcej informacji"
		}
	};
}