Array.prototype.contains = function(obj) {
	var i, listed = false;
	for (i=0; i<this.length; i++) {
		if (this[i] === obj) {
			listed = true;
			break;
		}
	}
	return listed;
};

Array.prototype.makeAString = function() {
	var val = '';
	for (i=0; i<this.length; i++) {
		val+=this[i]
		if(i<(this.length-1)){
			val+=',';
		}
	}
	return val
};

var events;
var allGenre;
var geosearch = false;
var tipEvents;
var nonTipEvents;


function getGeoEvents(){
	if(document.getElementById('events_div')){
		document.getElementById('loaderAni').style.display="block";
		document.getElementById('events_div').innerHTML='';
		
		if(document.getElementById('f_address')){
			var q=document.getElementById('f_address').value;
			var r=parseInt(document.getElementById('radius').options[document.getElementById('radius').selectedIndex].value)/1000;
		}
		
		var useDate=document.getElementsByName('date')[0].value;
		
		if(document.getElementById('inat').checked==true){
			var options={
				restRequestSubject:'events',
				restRequestParam:'events',
				restRequestType:'json',
				q:q,
				range:r,
				date:useDate,
				ordering:'ranking'
			}
		}else{
			
			if(q.search(/[a-zA-Z]/)==-1){
				var options={
					restRequestSubject:'events',
					restRequestParam:'events',
					restRequestType:'json',
					q:q,
					range:r,
					date:useDate,
					ctr:'DE',
					ordering:'ranking'
				}
			}else{
				var options={
					restRequestSubject:'events',
					restRequestParam:'events',
					restRequestType:'json',
					q:q,
					range:r,
					date:useDate,
					ordering:'ranking'
				}
			}
			
			
		}
		
		var url='/acp/lib/api2.0/response.php';
		$.get(url,options,function(data){getGeoEvents_callback(data);},'json');
	}
}

var hooolpEvents=null;
var activeNonTipEvents=0;

function getGeoEvents_callback(data){
	hooolpEvents=data;
	doEvents();
}

var hooolpCookieValues=null;

function getGeoAndGenreCookieData(){
	if(document.cookie){
		var cookieData=document.cookie;
		cookieData=cookieData.split('; ');
		hooolpCookieValues=new Array;
		for(var i=0;i<cookieData.length;i++){
			var tmp=cookieData[i].split('=');
			hooolpCookieValues[tmp[0]]=tmp[1];
		}
	}
	if(document.getElementById('f_address') && hooolpCookieValues['hooolpGeoQuery']){
		document.getElementById('f_address').value=hooolpCookieValues['hooolpGeoQuery'];
	}
	if(hooolpCookieValues['hooolpGenres']){
		var actives=hooolpCookieValues['hooolpGenres'].split(',');
		var b=document.getElementsByName('genres');
		for(var i=0;i<b.length;i++){
			var bG=b[i].value.split(',');
			var has=false;
			for(var h=0;h<bG.length;h++){
				if(actives.contains(bG[h])){
					has=true;
				}
			}
			if(has==true){
				b[i].checked=true;
			}else{
				b[i].checked=false;
			}
		}
	}
	
}

function doEvents(){
	var events=setGenres(hooolpEvents);
	events=orderEvents(events);
	generateEventTable(events);
}

function getEvents(){
	if(! document.getElementById("f_address")){
		if(document.getElementById('loaderAni')){
			document.getElementById('loaderAni').style.display="block";
		}
		if(document.getElementsByName("date").length>0){
			var setDate=document.getElementsByName('date')[0].value;
			var useDate=setDate.substr(6,4)+"-"+setDate.substr(3,2)+"-"+setDate.substr(0,2);
		}
		if(document.getElementById('events_div')){
			allGenre=eval("("+document.getElementById('genrejson').value+")");
			var httpSetter;
			if(window.XMLHttpRequest){
				httpSetter = new XMLHttpRequest();
			}else if(window.ActiveXObject){
				httpSetter = new ActiveXObject("Microsoft.XMLHTTP");
			}
			
			try{
				httpSetter.open("POST" , "/acp/lib/eventgetter.php" , false);
				httpSetter.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
				httpSetter.send('date='+useDate+'&subdomain='+document.getElementById('subdomain').value);
				if(httpSetter.responseText != '[]'){
					responseObj=eval("("+httpSetter.responseText+")");
					events=responseObj[2];
					tipEvents=responseObj[0];
					nonTipEvents=responseObj[1];
					newsetOthers();
					//document.getElementById("tablename").style.display = 'block';
					generateEventTable();
				}else{
					//document.getElementById("tablename").style.display = 'none';
					events="nope";
					generateEventTable();
				}
	
			}catch(e){
				if(document.getElementById('loaderAni')){
					document.getElementById('loaderAni').style.display="none";
				}
				alert(e);
			}
		}
	}


}

function setGenres(events){
	
	var checkBoxes = document.getElementsByName('genres');
	var activeGenres=new Array;
	var selectionGenres=new Array;
	for(i=0;i<checkBoxes.length;i++){
		var val=String(checkBoxes[i].value).split(',');;
		for(var h=0;h<val.length;h++){
			selectionGenres[selectionGenres.length]=parseInt(val[h]);
			if(checkBoxes[i].checked==true){
				activeGenres[activeGenres.length]=parseInt(val[h]);
			}
		}
	}
	
	
	if(activeGenres.length>0){
		$('#showGenreInfo').hide();
	}else{
		$('#showGenreInfo').show();
	}
	
	var myDate=new Date();
	myDate.setTime(myDate.getTime()+(1000*3600*24*90));
	if(document.getElementById('f_address')){
		document.cookie='hooolpGeoQuery='+document.getElementById('f_address').value+'; path=/; expires='+myDate.toGMTString();
	}
	document.cookie='hooolpGenres='+activeGenres.join(',')+'; path=/; expires='+myDate.toGMTString();
	
	
	activeNonTipEvents=0;
	
	for(var i=0;i<events.length;i++){
		events[i].event.active=false;
		for(var h=0;h<events[i].event.bands.length;h++){
			events[i].event.bands[h].band.active=false;
			for(var k=0;k<events[i].event.bands[h].band.genres.length;k++){
				if(!selectionGenres.contains(parseInt(events[i].event.bands[h].band.genres[k].genre.id))){
					events[i].event.bands[h].band.genres[k].genre.id=999999999999;
					events[i].event.bands[h].band.genres[k].genre.name='Andere';
				}
				if((events[i].event.tip==0 && activeGenres.contains(parseInt(events[i].event.bands[h].band.genres[k].genre.id))) || events[i].event.tip==1){
					events[i].event.active=true;
					events[i].event.bands[h].band.genres[k].genre.active=true;
					events[i].event.bands[h].band.active=true;
					if(events[i].event.tip==0){
						activeNonTipEvents++;
					}
				}else{
					events[i].event.bands[h].band.genres[k].genre.active=false;
				}
			}
		}
	}
	
	return events;
}

function orderEvents(events){
	var tipEvents=new Array();
	var nonTipEvents=new Array();
	for(var i=0;i<events.length;i++){
		if(events[i].event.tip==1){
			tipEvents[tipEvents.length]=events[i].event
		}else{
			nonTipEvents[nonTipEvents.length]=events[i].event
		}
	}
	return new Array(tipEvents,nonTipEvents);
}

function generateEventTable(events){
	
	var visibleCount=0;
	var tipHtml="";
	if(events[0].length>0){
		tipHtml+='<div id="tipdiv"><table id="tiptable" cellspacing="0" cellpadding="0">';
		tipHtml+='<tr class="nontipheader"><th class="band-col">Band</th><th class="club-col">Club</th><th  class="city-col">Ort</th><th class="date-col">Uhrzeit</th><th class="genre-col">Genre</th></tr>';
		for(var i=0;i<events[0].length;i++){
			visibleCount++;
			var trClass="sndevent";
			
			var e=events[0][i];
			var shown=false
			for(var h=0;h<e.bands.length;h++){
				tipHtml+='<tr class="evt-detail '+trClass+'">';
				if(shown==false){
					tipHtml+='<td class="band-col">';
					tipHtml+='<a href="/de/event/'+(e.type==2?'festival':'detail')+'/'+e.id+'_'+e.countryCode.toLowerCase()+'/"';
					if(e.bands[h].length>22){
						tipHtml+=' title="'+String(e.bands[h].band.name).replace(/"/g,"&quot;")+'" ';
					}
					tipHtml+='>';
					tipHtml+=(String(e.bands[h].band.name).length<=22?e.bands[h].band.name:String(e.bands[h].band.name).substring(0,22)+"...");
					tipHtml+='</a>';
					tipHtml+="</td>";
					tipHtml+='<td class="club-col">';
					tipHtml+='<a href="/de/event/'+(e.type==2?'festival':'detail')+'/'+e.id+'_'+e.countryCode.toLowerCase()+'/"';
					if(String(e.location.name).length>22){
						tipHtml+=' title="'+String(e.location.name).replace(/"/g,"&quot;")+'" ';
					}
					tipHtml+='>';
					tipHtml+=(String(e.location.name).length<=22?e.location.name:String(e.location.name).substring(0,22)+"...");
					tipHtml+='</a>';
					tipHtml+="</td>";
					tipHtml+='<td class="city-col">';
					tipHtml+=e.location.city;
					tipHtml+="</td>";
					tipHtml+='<td class="date-col">';
					tipHtml+=e.startTime+' Uhr';
					tipHtml+="</td>";
					tipHtml+='<td class="genre-col">';
					tipHtml+=e.bands[h].band.genres[0].genre.name;
					tipHtml+="</td>";
					shown=true;
				}else{
					tipHtml+='<td class="band-col" colspan=4>';
					tipHtml+='<a href="/de/event/'+(e.type==2?'festival':'detail')+'/'+e.id+'_'+e.countryCode.toLowerCase()+'/">';
					tipHtml+=e.bands[h].band.name;
					tipHtml+='</a>';
					tipHtml+="</td>";
					tipHtml+='<td class="genre-col">';
					tipHtml+=e.bands[h].band.genres[0].genre.name;
					tipHtml+="</td>";
				}
				tipHtml+="</tr>";
			}
      
			if((e.addText!=null && e.addText.replace(/ /,"").length>0) || (e.freetickets!=null && e.freetickets.length>0) || (e.tickets.length>0)){
					tipHtml+='<tr class="evt-info '+trClass+'">';
					tipHtml+='<td class="info-col" colspan="4">';
					tipHtml+=e.addText;
					tipHtml+='</td>';
					tipHtml+='<td>';
					var freeticks=false;
					
					if(e.freetickets!=null && e.freetickets.length>0){
						tipHtml+='<a href="/de/freetickets/detail"><b>Freikarten</b></a>';
						freeticks=true;
					}
          if(e.tickets.length>0){
          	if(freeticks==true){
          		tipHtml+=' & ';
          	}
           	tipHtml+='<a href="/de/bestpriceticket/main/'+e.id+'_'+e.countryCode.toLowerCase()+'"><b>Tickets</b></a>';
          }
          tipHtml+='</td>';
          tipHtml+='</tr>';
			}
		}
		tipHtml+='<tr><td class="tipannounce" colspan="5">Tagestipp</td></tr>'
		tipHtml+="</table></div><br/>";
	}
	
	var nonTipHtml='<table id="nontiptable" cellspacing="0" cellpadding="0">';
	if(events[1].length>0){
		if(activeNonTipEvents>0){
			nonTipHtml+='<tr class="nontipheader"><th class="band-col">Band</th><th class="club-col">Club</th><th  class="city-col">Ort</th><th class="date-col">Uhrzeit</th><th class="genre-col">Genre</th></tr>';
			var evtRows=0;
			for(var i=0;i<events[1].length;i++){
				var e=events[1][i];
				if(e.active==1){
					evtRows++;
					if(evtRows%2==0){
						var trClass="sndevent";
					}else{
						var trClass="fstevent"
					}
					var shown=false;
					for(var h=0;h<e.bands.length;h++){
						if(e.bands[h].band.active==true){
							visibleCount++;
							nonTipHtml+='<tr class="evt-detail '+trClass+'">';
							if(shown==false){
								nonTipHtml+='<td class="band-col">';
								nonTipHtml+='<a href="/de/event/'+(e.type==2?'festival':'detail')+'/'+e.id+'_'+e.countryCode.toLowerCase()+'/"';
								if(String(e.bands[h].band.name).length>22){
									nonTipHtml+=' title="'+String(e.bands[h].band.name).replace(/"/g,"&quot;")+'" ';
								}
								nonTipHtml+='>';
								nonTipHtml+=(String(e.bands[h].band.name).length<=22?e.bands[h].band.name:String(e.bands[h].band.name).substring(0,22)+"...");
								nonTipHtml+='</a>';
								nonTipHtml+="</td>";
								nonTipHtml+='<td class="club-col">';
								nonTipHtml+='<a href="/de/event/'+(e.type==2?'festival':'detail')+'/'+e.id+'_'+e.countryCode.toLowerCase()+'/"';
								if(String(e.location.name).length>22){
									nonTipHtml+=' title="'+String(e.location.name).replace(/"/g,"&quot;")+'" ';
								}
								nonTipHtml+='>';
								nonTipHtml+=(String(e.location.name).length<=22?e.location.name:String(e.location.name).substring(0,22)+"...");
								nonTipHtml+='</a>';
								nonTipHtml+="</td>";
								nonTipHtml+='<td class="city-col">';
								nonTipHtml+=e.location.city;
								nonTipHtml+="</td>";
								nonTipHtml+='<td class="date-col">';
								nonTipHtml+=e.startTime+' Uhr';
								nonTipHtml+="</td>";
								nonTipHtml+='<td class="genre-col">';
								for(var x=0;x<e.bands[h].band.genres.length;x++){
									if(e.bands[h].band.genres[x].genre.active==true){
										nonTipHtml+=e.bands[h].band.genres[x].genre.name;
										break;
									}
								}
								nonTipHtml+="</td>";
								shown=true;
							}else{
								nonTipHtml+='<td class="band-col" colspan="4">';
								nonTipHtml+='<a href="/de/event/'+(e.type==2?'festival':'detail')+'/'+e.id+'_'+e.countryCode.toLowerCase()+'/">';
								nonTipHtml+=e.bands[h].band.name;
								nonTipHtml+='</a>';
								nonTipHtml+="</td>";
								nonTipHtml+='<td class="genre-col">';
								for(var x=0;x<e.bands[h].band.genres.length;x++){
									if(e.bands[h].band.genres[x].genre.active==true){
										nonTipHtml+=e.bands[h].band.genres[x].genre.name;
										break;
									}
								}
								nonTipHtml+="</td>";
							}
							nonTipHtml+="</tr>";
						}
					}
					if(e.active==true && ((e.addText!=null && e.addText.replace(/ /,"").length>0) || (e.freetickets!=null && e.freetickets.length>0) || (e.tickets.length>0))){
            nonTipHtml+='<tr class="evt-info '+trClass+'">';
            nonTipHtml+='<td class="info-col" colspan="4">';
            nonTipHtml+=e.addText;
            nonTipHtml+='</td>';
            nonTipHtml+='<td>';
            var freeticks=false;
            if(e.freetickets!=null && e.freetickets.length>0){
            	nonTipHtml+='<a href="/de/freetickets/detail/"><b>Freikarten</b></a>';
            	freeticks=true;
            }
            if(e.tickets.length>0){
            	if(freeticks==true){
            		nonTipHtml+=' & ';
            	}
            	nonTipHtml+='<a href="/de/bestpriceticket/main/'+e.id+'_'+e.countryCode.toLowerCase()+'"><b>Tickets</b></a>';
            }
            nonTipHtml+='</td>';
            nonTipHtml+='</tr>';
          }
				}
			}
		}else{
			nonTipHtml+="<tr><td>Zu Ihrer Genreauswahl sind leider keine Events vorhanden.</td></tr>";
		}
	}else{
		nonTipHtml+="<tr><td>Es sind leider keine Events zum Anzeigen vorhanden.</td></tr>";
	}
	nonTipHtml+="</table>";
	
	var htmlStr="<br />"+tipHtml+nonTipHtml;
	if(document.getElementById('loaderAni')){
		document.getElementById('loaderAni').style.display="none";
	}
	document.getElementById('events_div').innerHTML=htmlStr;
	tb_init('a.thickbox');
	
	//bubble
	if(visibleCount>7){
		if(document.cookie){
			var cookieData=document.cookie;
			if(String(cookieData).indexOf('bubble=yes')==-1){
				showBubble();
				var myDate=new Date();
				myDate.setTime(myDate.getTime()+(1000*3600*24*60));
				document.cookie='bubble=yes; path=/; expires='+myDate.toGMTString();
			}
		}
	}

}

function setShowDate(){
	string=document.getElementById('date').value;
	newString=string.substr(0,2)+"."+string.substr(3,2)+"."+string.substr(6,4);
	document.getElementById('show_date').innerHTML="am "+newString;
	var aItems=document.getElementsByTagName('a');
	for(var i=0; i<aItems.length;i++){
		if( aItems[i].className.search(/day/) > -1 ){
			aItems[i].className="day";
			if(aItems[i].text==string.substr(0,2)){
				aItems[i].className="day clicked";
			}
		}
	}
	if(setShowDate.arguments && setShowDate.arguments[0]!=='no'){
		getBoth();
		getGeoEvents();
	}
}

function getCookieCollection(){
	if(document.cookie){
		var c=document.cookie;
	}
	
	
}

function init(){
	getGeoAndGenreCookieData();
	if(document.getElementById("f_address")){
		setShowDate('no');
		if(hooolpCookieValues['hooolpGeoQuery']){
			getGeoEvents();
		}
	}else{
		getEvents();
	}
}


//window.onload=init;
