window.project=(window.project)?window.project:{};(function($)
{project.CalendarBehaviour=function(dom_element,options)
{this.dom_element=dom_element;var d=new Date();this.options={"min_months_before":3,"max_months_after":12,"selected_year":d.getFullYear(),"selected_month":d.getMonth(),"selected_day":d.getDate(),"month_names":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]};this.max_date=new Date(d.getFullYear(),d.getMonth()+this.options.max_months_after,1);this.min_date=d.getMonth()<this.options.min_months_before?new Date(d.getFullYear()-1,11-(this.options.min_months_before-d.getMonth()),1):new Date(d.getFullYear(),d.getMonth()-this.options.min_months_before,1);this.date_text_dom=null;this.selected_date=new Date(this.options.selected_year,this.options.selected_month,this.options.selected_day);this.date=this.selected_date;$.extend(this.options,options);this.initialize();};project.CalendarBehaviour.prototype.initialize=function()
{var that=this;var get_params=this.getGetParams()
if(typeof(get_params["year"])!="undefined"&&typeof(get_params["month"])!="undefined"&&parseInt(get_params["month"])<13&&typeof(get_params["day"])!="undefined"&&parseInt(get_params["day"])<32)
{this.selected_date=new Date(parseInt(get_params["year"]),parseInt(get_params["month"]),parseInt(get_params["day"]));this.date=this.selected_date;}
this.date_text_dom=$(this.dom_element.find(".current_month").first());this.table=$(this.dom_element.find("table").first());this.prev_month_btn=this.dom_element.find(".skip_left").attr("role","button");this.next_month_btn=this.dom_element.find(".skip_right").attr("role","button");this.prev_month_btn=this.dom_element.find(".skip_left").first().click(function()
{that.changeMonth(false);return false;});this.next_month_btn=this.dom_element.find(".skip_right").first().click(function()
{that.changeMonth(true);return false;});this.changeSkipText();this.drawCalendar();};String.prototype.startsWith=function(str){return this.indexOf(str)==0;};project.CalendarBehaviour.prototype.drawCalendar=function()
{var that=this;var _GET=new Array();var params=unescape(location.search.substring(1,location.search.length)).split("&");for(var i=0;i<params.length;i++){if(!params[i].startsWith('day=')&&!params[i].startsWith('month=')&&!params[i].startsWith('year='))
_GET.push(params[i]);}
var days_in_month=new Date(this.date.getFullYear(),this.date.getMonth()+1,0).getDate();var day_of_week=new Date(this.date.getFullYear(),this.date.getMonth(),1).getDay();var tmp_table_row=null;$(this.table.find("tbody").first()).remove();if(day_of_week===0)
{day_of_week=7;}
for(var i=0;i<days_in_month;i++)
{if((i+day_of_week)%7===1||i===0)
{tmp_table_row=$("<tr>");var tmp_row_td_counter=1;if(i===0&&day_of_week>1)
{for(var k=1;k<day_of_week;k++)
{tmp_table_row.append($('<td headers="calendar_col_'+tmp_row_td_counter+'">'));tmp_row_td_counter++;}}}
var tmp_date=new Date(this.date.getFullYear(),this.date.getMonth(),(i+1));if(tmp_date.valueOf()===this.selected_date.valueOf())
{tmp_table_row.append($('<td class="active" headers="calendar_col_'+tmp_row_td_counter+'">').append($('<strong>'+(i+1)+'</strong>')));}
else
{_GET.push('year='+tmp_date.getFullYear());_GET.push('month='+tmp_date.getMonth());_GET.push('day='+tmp_date.getDate());var query=_GET.join('&');_GET.pop();_GET.pop();_GET.pop();tmp_table_row.append($('<td headers="calendar_col_'+tmp_row_td_counter+'">').append($('<a href="?'+query+'">'+(i+1)+'</a>')));}
this.table.append(tmp_table_row);tmp_row_td_counter++;}};project.CalendarBehaviour.prototype.changeMonth=function(up)
{if(up)
{this.date=new Date(this.date.getFullYear(),this.date.getMonth()+1,1);}
else
{this.date=this.date.getMonth()==0?new Date(this.date.getFullYear()-1,11,1):new Date(this.date.getFullYear(),this.date.getMonth()-1,1);}
this.changeSkipText();this.drawCalendar();};project.CalendarBehaviour.prototype.changeSkipText=function()
{var next_date=new Date(this.date.getFullYear(),this.date.getMonth()+1,1);var prev_date=this.date.getMonth()==0?new Date(this.date.getFullYear()-1,11,1):new Date(this.date.getFullYear(),this.date.getMonth()-1,1);this.date_text_dom.text(this.options.month_names[this.date.getMonth()]+" "+this.date.getFullYear());if(next_date.valueOf()===this.max_date.valueOf())
{this.next_month_btn.css("visibility","hidden");}
else
{this.next_month_btn.css("visibility","");this.next_month_btn.attr("title","nächster Monat: "+this.options.month_names[next_date.getMonth()]+" "+next_date.getFullYear()).text("nächster Monat: "+this.options.month_names[next_date.getMonth()]+" "+next_date.getFullYear());}
if(prev_date.valueOf()===this.min_date.valueOf())
{this.prev_month_btn.css("visibility","hidden");}
else
{this.prev_month_btn.css("visibility","");this.prev_month_btn.attr("title","vorherigen Monat: "+this.options.month_names[prev_date.getMonth()]+" "+prev_date.getFullYear()).text("vorherigen Monat: "+this.options.month_names[prev_date.getMonth()]+" "+prev_date.getFullYear());}};project.CalendarBehaviour.prototype.getGetParams=function()
{var get_params=new Array();if(location.search.length>0)
{var get_param_str=location.search.substring(1,location.search.length);var get_params_tmp=get_param_str.split("&");for(var i=0;i<get_params_tmp.length;i++)
{var param=get_params_tmp[i].split("=");if(param.length==2)
{var key=param[0];var value=param[1];get_params[key]=value;}}}
return(get_params);};JsBehaviourToolkit.registerHandler("calendar",project.CalendarBehaviour);})(jQuery);
