var mode_timespan = false;

function setDateFocus(obj) {
	var myName = obj.name
	var opponents_name = (myName == 'start') ? 'ende' : 'start';
	var opp_obj= document.getElementById(opponents_name);
	var calendar_obj= document.getElementById('calendar-container');
	calendar_obj.className="calendar_container_active";
	obj.style.border="1px solid #C70017";
	opp_obj.style.border="";
	mode_timespan=obj;

}
function changetimespan(num) {
	frm = document.forms["veranstaltungssuche"];
	frm.timemode.value=num;
	if (num==3){
		activate_custom_timespan();
		} else {
			// Zeitraumeingabe ausschalten
			disable_custom_timespan();
		}
	if (num==0){
		frm.mode[0].checked = true;

	}
}
function disable_custom_timespan() {
	// Zeitraumeingabe ausschalten
	var myDiv = document.getElementById('timespan');
	var dStyle = myDiv.style;
	dStyle.display = "none";
	mode_timespan=false;

	//kosmetik
	var objsva = new Array();
	objsva[0]= document.getElementById('start');
	objsva[1]= document.getElementById('ende');
	//objs[2]= document.getElementById('calendar-container');
	objsva[0].style.border="";
	objsva[1].style.border="";

	var calendar_obj= document.getElementById('calendar-container');
	calendar_obj.className="calendar_container";
}
function activate_custom_timespan() {
	// Zeitraumeingabe einschalten
	var myDiv = document.getElementById('timespan');
	var dStyle = myDiv.style;

	dStyle.display = "block";
	var start= document.getElementById('start')

	start.focus();
	//setDateFocus(start);
}
function setsearch(context) {
	var frm = document.forms["veranstaltungssuche"];
	var thema = frm.thema.value;
	var land = frm.land.value;
	var changeaction = frm.changeaction.value;
	var qu =frm.qu.value;
	frm.qu.value = (qu=='Suchbegriff eingeben')  ? '' : qu;
	var c="";
	if (frm.changeaction.value == 'J') {
				c= (thema) ? ((c.length>0) ?  c+';'+thema : thema) : c;
			} else {
				frm.x_3.value = thema;
			}

	c= (land) ? ((c.length>0) ?  c+';'+land : land) : c;
	frm.c.value = c;

	if (frm.changeaction.value == 'J' && thema.length > 0) {

				frm.action="/cms/ziel/"+frm.thema.value;
			}
	// Zeitspanne definieren

	var timemode = parseInt(frm.timemode.value);

	timemode = (!isNaN(timemode)) ? timemode : 5;

	frm.timemode.value = timemode;

	// Datum berechnen

	var Tag=parseInt(Number(frm.today.value.substr(0,2)));
	var Monat=parseInt(Number(frm.today.value.substr(3,2)))-1;
	var Jahr=parseInt(Number(frm.today.value.substr(6,4)));

	if (frm.date.value) {
			var DateTag=parseInt(Number(frm.date.value.substr(0,2)));
			var DateMonat=parseInt(Number(frm.date.value.substr(3,2)))-1;
			var DateJahr=parseInt(Number(frm.date.value.substr(6,4)));
			var DateObj = new Date(DateJahr,DateMonat,DateTag);
	}

	var inSiebenTagen=Tag+7;
	var thirtyD=Tag+30;
	var today = new Date(Jahr,Monat,Tag);
	var tomorrow = new Date(Jahr,Monat,(Tag+1));
	var sevenday = new Date(Jahr,Monat,inSiebenTagen);
	var thirtydays = new Date(Jahr,Monat,thirtyD);
	if (today.getDay() != 0 && today.getDay() != 6) {
		c=today.getDay();
		var saDiff = 6 - c;
		var soDiff = saDiff + 1;
		var saturday = new Date(Jahr,Monat,(Tag+saDiff));
		var sunday = new Date(Jahr,Monat,(Tag+soDiff));
	} else {
		if (today.getDay() == 6) {
			var saturday = today;
			var sunday = new Date(Jahr,Monat,(Tag+1));
		}
		if (today.getDay() == 0) {
			var saturday = new Date(Jahr,Monat,(Tag-1));
			var sunday = today;
		}
	}

	var saturdayDay =fixZero(saturday.getDate());
	var sundayDay =fixZero(sunday.getDate());
	var heuteDay = fixZero(Tag);
	var tommorowDay= fixZero(tomorrow.getDate());
	var sevenDay= fixZero(sevenday.getDate());
	var thirtyDay= fixZero(thirtydays.getDate());
	var saturdayMonth =fixZero(saturday.getMonth()+1);
	var sundayMonth =fixZero(sunday.getMonth()+1);
	var heuteMonth = fixZero(Monat+1);
	var tommorowMonth= fixZero(tomorrow.getMonth()+1);
	var sevenMonth= fixZero(sevenday.getMonth()+1);
	var thirtyMonth= fixZero(thirtydays.getMonth()+1);

	var saturday_STR = saturdayDay+"."+saturdayMonth+"."+fixYear(String(saturday.getYear()));
	var sunday_STR = sundayDay+"."+sundayMonth+"."+fixYear(String(sunday.getYear()));
	var heute_STR= heuteDay+"."+heuteMonth+"."+Jahr;
	var morgen_STR= tommorowDay+"."+tommorowMonth+"."+fixYear(String(tomorrow.getYear()));
	var inSiebenTagen_STR = sevenDay+"."+sevenMonth+"."+fixYear(String(sevenday.getYear()));
	var thirtyDays_STR = thirtyDay+"."+thirtyMonth+"."+fixYear(String(thirtydays.getYear()));



	switch (timemode) {
		case 0:
			var myDate = (frm.date.value) ? frm.date.value : frm.today.value;

			frm.date.value = myDate;
			frm.events_rhythm.value = myDate+","+myDate;

		break;
		case 1:
		frm.events_rhythm.value =heute_STR+","+inSiebenTagen_STR;

		break;
		case 2:
				frm.events_rhythm.value =heute_STR+","+thirtyDays_STR;

		break;

		case 3:


			var d_von_val = frm.start.value;
			var d_bis_val = frm.ende.value;
			// durch den datumsvalidater laufen, egal ob input oder nicht
			var d_von_mil = validDate(d_von_val);
			var d_bis_mil = validDate(d_bis_val);

			// wurde das von datum ausgefuellt?
			var d_von_set = d_von_mil.length > 0 ;
			// wurde das bis datum ausgefuellt?
			var d_bis_set = d_bis_mil.length > 0 ;

			if (!d_von_set || !d_bis_set) {
				alert("Kein korrekter Zeitraum eingegeben!\nBitte geben Sie ein Datum in folgendem Format ein: Tag.Monat.Jahr");
				var start= document.getElementById('start')
				start.focus();
				return false;
			}


			if (d_von_set && isNaN(d_von_mil)) {
				alert("Kein korrektes Startdatum eingegeben!\nBitte geben Sie ein Datum in folgendem Format ein: Tag.Monat.Jahr");
				var start= document.getElementById('start')
				start.focus();
				return false;
			}

			// eingegebenes enddatum ist falsch
			if (d_bis_set && isNaN(d_bis_mil)) {
				alert("Kein korrektes Enddatum eingegeben!\nBitte geben Sie ein Datum in folgendem Format ein: Tag.Monat.Jahr");
				var start= document.getElementById('ende')
				ende.focus();
				return false;
			}

			// enddatum darf nicht for startdatum liegen
			if (d_von_set && d_bis_set
					 && d_von_mil > d_bis_mil) {
				alert("Enddatum darf nicht vor Startdatum liegen!");
				var start= document.getElementById('ende')
				ende.focus();
				return false;
			}
			frm.events_rhythm.value=convertDate(d_von_val)+","+convertDate(d_bis_val);


		break;
	}
	return true;
	//frm.submit();
}


function fixYear(numb) {

	numlen=numb.length;
	pos=numlen-2;
	retstr="20"+numb.substr(pos,2);
	return (retstr);
}
function fixZero (str) {
	str=String(str);
	str= (str.length==1) ? "0"+str : str;
	return (str);
}
function returndateobj (str) {
	var Tag=parseInt(Number(str.substr(0,2)));
	var Monat=parseInt(Number(str.substr(3,2)))-1;
	var Jahr=parseInt(Number(str.substr(6,4)));
	var obj = new Date(Jahr,Monat,Tag);
	return obj;
}


// TOOLS



function convertDate(date) {
	var valid =false;
 	var hits = null;
  	var day = false;
  	var month = false;
  	var year = false;
  	var matches = new Array (
  		/^(0?[1-9]|[12][0-9]|[3][01])\.(0?[1-9]|1[0-2])\.(\d{2}|(19|20)\d{2})$/,
  		/^(0?[1-9]|[12][0-9]|[3][01])\-(0?[1-9]|1[0-2])-(\d{2}|(19|20)\d{2})$/,
  		/^(0?[1-9]|[12][0-9]|[3][01])\.(0?[1-9]|1[0-2])-(\d{2}|(19|20)\d{2})$/,
  		/^(0?[1-9]|[12][0-9]|[3][01])\-(0?[1-9]|1[0-2]).(\d{2}|(19|20)\d{2})$/,
  		/^(0?[1-9]|[12][0-9]|[3][01])(0?[1-9]|1[0-2])(\d{2}|(19|20)\d{2})$/

  	);

	for (var i=0; i<matches.length; i++) {
		//alert(matches[i]);
		if (date.match(matches[i])) {

		hits = 	date.match(matches[i]);
		day = hits[1];
		month = hits[2];
		year = hits[3];
		valid = true;
		break;
		}
	}
		if (valid==true) {

			day = parseInt(day,10);
			month = parseInt(month,10)-1;
			year = parseInt(fixYear(year),10);

			var checkDate = new Date(year,month,day);
			//alert(checkDate);
			var checked_day = fixZero(checkDate.getDate());
			var checked_month = fixZero(parseInt(checkDate.getMonth(),10)+1);
			var checked_year = checkDate.getFullYear();

			var to_return =  checked_day+"."+checked_month+"."+checked_year;
		} else {
			var to_return =false;
		}



  	return  to_return;
}

function validDate(date) {
  	var check= convertDate(date);
  	var dates = (check) ? check.split(".") : false;
  	if (dates.length) {
  		var day = dates[0];
  		var month = dates[1];
  		var year = dates[2];
  		var retstr = year+month+day;
  	}
  	var to_return = (check!=false) ? retstr : Number.NaN;

  	return to_return;
}

function dateChanged(calendar) {
    // Beware that this function is called even if the end-user only
    // changed the month/year.  In order to determine if a date was
    // clicked you can use the dateClicked property of the calendar:
    if (calendar.dateClicked) {
      // OK, a date was clicked, redirect to /yyyy/mm/dd/index.php
      var y = calendar.date.getFullYear();
      var m = calendar.date.getMonth()+1;     // integer, 0..11
      var d = calendar.date.getDate();      // integer, 1..31
      
      d = (d < 10) ? "0"+d : d;
      m = (m < 10) ? "0"+m : m;
      var cal_string = d+"."+m+"."+y;
      if (!mode_timespan) {
			var outputfield=document.getElementById('ghj');
			outputfield.innerHTML=cal_string;
      document.forms['veranstaltungssuche'].date.value=cal_string;
      changetimespan(0);
      } else {
     	 mode_timespan.value=cal_string;
      }

    }
  };














