/*!
 * NetReserveIt 1.0.2
 *
 * Copyright (c) 2009 Infigo Oy
 * All rights reserved.
 *
 */

var res_wizard=null;var InternationalizationService=function(){var A={"reservations.validation":{unfinished_phase:"You must finish previous phase first!"},"reservations.messages":{losing_form_data:"About to lose all form data."}};
return{updateDatabase:function(B){A=jQuery.extend({},A,B||{});},_:function(E,D,C){if(typeof A[E]=="undefined"||typeof A[E][D]=="undefined"){return D;
}if(typeof C=="undefined"){return A[E][D];}var B=A[E][D]+"";jQuery.each(C,function(F,G){B=B.replace(new RegExp("#\\{"+F+"\\}","gi"),G);
});return B;}};};var ApplicationBase=function(){var B=false;var E=null;var A="fi";
var D=null;var F={};var C=null;return{init:function(G,H){E=G;this.setActiveLanguage(H);
Application.log("_hash: "+E+" _language: "+A);if(B){if(jQuery.taconite){jQuery.taconite.debug=true;
}}C=jQuery("#application_messages");},setActiveLanguage:function(G){A=G;},getActiveLanguageUrl:function(){return"/"+A+"/";
},setActivePage:function(G){D=G;Application.log("_active_page: "+D);},blockReservationUI:function(G){G=ProjectJSTools.urldecode(G);
jQuery("#reservation_area").block({message:G});jQuery("#tools").block({message:null});
jQuery("#datepicker").block({message:null});},setUserMessages:function(G){this.i18n.updateDatabase(G);
},getUserMessage:function(I,H,G){return this.i18n._(I,H,G);},addExtensionInstance:function(H,I,G){Application.log("addExtensionInstance("+H+", "+I+", "+G+")");
if(typeof F[H]=="undefined"){F[H]={};}F[H][I]=G;},instance:function(G,H){Application.log("instance("+G+", "+H+")");
if(typeof F[G]=="undefined"){return;}if(typeof H=="undefined"){return F[G];}return F[G][H];
},showMessage:function(H,G){if(typeof G=="undefined"){G="info";}UIMessages.addMessage({content:H,type:G});
},clearMessages:function(){UIMessages.clearMessages();},showAppMessage:function(J,I){if(typeof I=="undefined"){I="info";
}var H=I;var G=I;switch(I){case"info":H="highlight";break;case"alert":case"warning":case"error":G="alert";
break;}var L=jQuery('<div class="ui-widget" />');var K=jQuery('<div class="ui-state-'+H+' ui-corner-all" />');
var M=jQuery('<span class="ui-icon ui-icon-'+G+'" />');K.append(M);K.append(J);K.click(function(){jQuery(this).remove();
});L.html(K);C.append(L);},clearAppMessages:function(){C.html("");},i18n:(new InternationalizationService()),log:function(G){if(B&&typeof console!=="undefined"){console.log(G);
}}};};var Application=new ApplicationBase();var LoginFormBase=function(){var A={holder_path:"#login-form-holder"};
var B;return{init:function(C){A=jQuery.extend({},A,C||{});B=jQuery(A.holder_path);
if(!B[0]){return;}B.expose({color:"#789",lazy:true});B.click(function(){jQuery(this).expose().load();
});this._prepareFields();},_prepareFields:function(){var D=jQuery("form",B);var C=[jQuery('input[type="text"]',D),jQuery('input[type="password"]',D)];
jQuery.each(C,function(){var F=jQuery(this);var E={elem:F,orig_val:F.attr("title")};
E.elem.bind("focus",function(G){if(E.orig_val==jQuery(this).val()){jQuery(this).val("");
}B.expose().load();}).bind("blur",function(){if(jQuery(this).val()==""){jQuery(this).val(E.orig_val);
}});});}};};var LoginForm=new LoginFormBase();var ReservatorBase=function(){var B={form:{},phase_urls:{}};
var A;return{init:function(C){B=jQuery.extend({},B,C||{});A=new ReservatorForm();
Application.addExtensionInstance("reservator","base",this);A.init(B.form);},getPhaseUrl:function(C){if(typeof B.phase_urls[C]=="undefined"){return"";
}return B.phase_urls[C];}};};var ReservatorForm=function(){var A={};return{init:function(B){A=jQuery.extend({},A,B||{});
Application.addExtensionInstance("reservator","form",this);},beforeSubmit:function(D,C,B){Application.log("ReservatorForm::beforeSubmit");
Application.log(D);},handleSuccess:function(B){Application.log("ReservatorForm::handleSuccess");
var C=jQuery("errors > error",B);if(C){jQuery.each(C,function(E,D){Application.log(jQuery(D).text());
});}Application.log("status: "+jQuery("status",B).text());}};};var DayCalendarModule=function(){var F={orientation:"vert",allow_multiple:false,max_multiple:2,loader_path:"#reservation_area .loader"};
var B=null;var V=null;var M=null;var P=null;var N=null;var S=null;var T=null;var C=null;
var G=1;var I=new Array();var O;var K=function(){P=jQuery(".day_calendar table",M);
Application.log(P);S=jQuery("thead .navigation",P);T=jQuery("thead .title",P);C=jQuery("tbody tr",P);
N=jQuery(F.loader_path);};var Q=function(X){if(X){while(X.tagName!="TD"){X=X.parentNode;
}}return jQuery(X);};var A=function(X){if(X){while(X.tagName!="TR"){X=X.parentNode;
}}return jQuery(X);};var R=function(X){if(X){while(X.tagName!="TH"){X=X.parentNode;
}}return jQuery(X);};var L=function(Z,c){var X=R(Z);if(typeof c=="undefined"){c=false;
}var b;var a;jQuery.each(jQuery("thead th",P),function(d){if(jQuery(this).attr("id")==X.attr("id")){b=jQuery(this);
a=d;}});var Y=[];if(c){Y.push(X);jQuery.each(C,function(){Y.push(jQuery(this).children("td").eq(a-1));
});}else{Y=jQuery("tbody tr > td").filter(":nth-child("+(a+1)+")");}return Y;};var W=function(){if(jQuery("#"+B).hasClass("disabled")){return;
}jQuery("#"+B+" table thead .navigation").intercept("click",{".navigation-prev span":function(Y){var Y=jQuery(this).parent();
var X=Y.attr("href").replace(/#/,"");Application.log("Prev clicked to "+X);Application.instance("calendar",V).updateDate(X,"p");
return false;},".navigation-next span":function(Y){var Y=jQuery(this).parent();var X=Y.attr("href").replace(/#/,"");
Application.log("Next clicked to "+X);Application.instance("calendar",V).updateDate(X,"n");
return false;}});jQuery("#"+B+" table tbody").intercept("mouseover",{"td.available":function(Y){if(!jQuery(this).hasClass("ui-state-hover")){jQuery(this).addClass("ui-state-hover");
jQuery(this).removeClass("ui-state-active");}var X=A(jQuery(this)[0]);if(!X.hasClass("ui-state-hover")){X.addClass("ui-state-hover");
}},"td.available a":function(Y){if(!jQuery(this).parent().hasClass("ui-state-hover")){jQuery(this).parent().addClass("ui-state-hover");
jQuery(this).parent().removeClass("ui-state-active");}var X=A(jQuery(this).parent()[0]);
if(!X.hasClass("ui-state-hover")){X.addClass("ui-state-hover");}}}).intercept("mouseout",{"td.available":function(X){jQuery(this).addClass("ui-state-active");
jQuery(this).removeClass("ui-state-hover");A(jQuery(this)[0]).removeClass("ui-state-hover");
},"td.available a":function(X){jQuery(this).parent().addClass("ui-state-active");
jQuery(this).parent().removeClass("ui-state-hover");A(jQuery(this).parent()[0]).removeClass("ui-state-hover");
}}).intercept("click",{"td.available":function(Z){var X=jQuery("a",this);var Y=X.attr("href").replace("#","");
return Application.instance("calendar",V).reserve(Y,X[0]);},"td.available a":function(Y){var X=jQuery(this).attr("href").replace("#","");
Application.instance("calendar",V).reserve(X,this);return false;}});if(F.allow_multiple&&G==1){if(F.orientation=="vert"){jQuery("#"+B+" table tbody td.item").addClass("clickable");
jQuery("#"+B+" table tbody").intercept("click",{'td.item input[type="checkbox"]':function(X){J(jQuery(this));
}});}else{if(F.orientation=="horz"){jQuery("#"+B+" table thead tr.items th.item").addClass("clickable");
jQuery("#"+B+" table thead").intercept("click",{'th.item input[type="checkbox"]':function(X){J(jQuery(this));
}});}}}};var J=function(a){Application.log("_selectRow "+F.orientation);var Z=a.attr("checked");
Application.log("new state: "+Z);if(F.max_multiple==0){a.attr("checked",!Z);return;
}var X=U();var Y=X.length;if(Z){if(Y==F.max_multiple){H();return;}a.attr("checked",true);
}else{if(Y==F.max_multiple||Y+1==F.max_multiple){a.attr("checked",false);E();}}};
var U=function(){Application.log("_collectRowIds");var X=[];if(F.orientation=="vert"){X=jQuery('td.item input[type="checkbox"]').filter(":checked");
}else{if(F.orientation=="horz"){X=jQuery('th.item input[type="checkbox"]').filter(":checked");
}}collected=new Array();X.each(function(){collected.push(jQuery(this).val());});return collected;
};var H=function(){Application.log("_disableUnselectedRows");if(F.orientation=="vert"){var X=jQuery('td.item input[type="checkbox"]').filter(":not(:checked)");
X.each(function(){var Y=A(this);if(!Y.hasClass("item_disabled")){Y.addClass("item_disabled");
jQuery(this).attr("disabled",true);}});}else{if(F.orientation=="horz"){var X=jQuery('th.item input[type="checkbox"]').filter(":not(:checked)");
X.each(function(){jQuery(this).attr("disabled",true);jQuery.each(L(this,true),function(){jQuery(this).addClass("item_disabled");
});});}}};var E=function(){Application.log("_disableUnselectedRows");if(F.orientation=="vert"){var X=jQuery('td.item input[type="checkbox"]').filter(":disabled");
X.each(function(){var Y=A(this);Y.removeClass("item_disabled");jQuery(this).attr("disabled",false);
});}else{if(F.orientation=="horz"){var X=jQuery('th.item input[type="checkbox"]').filter(":disabled");
X.each(function(){jQuery(this).attr("disabled",false);jQuery.each(L(this,true),function(){jQuery(this).removeClass("item_disabled");
});});}}};var D=function(Y,a){var Z={};for(var X=0;X<a.length;X++){Z[a[X]]="";}if(Y in Z){return true;
}return false;};return{init:function(a,Z){V=a;var Y=a.split("_");_hash=Y[Y.length-1];
B=""+V+"_"+G;jQuery("#"+a).attr("id",B);F=jQuery.extend(F,Z);M=jQuery("#"+B);K();
W();var X=this;N.hide();jQuery("ul.tabs",res_wizard).tabs(jQuery("div.panes div.pane",res_wizard),{initialIndex:0,onBeforeClick:function(b){Application.clearMessages();
if(b==0&&G>1){window.location=Application.instance("reservator","base").getPhaseUrl(1);
return false;}if(b+1>G){Application.showMessage(Application.getUserMessage("reservations.validation","unfinished_phase"),"error");
return false;}if(b+1<G&&G==3){return confirm(Application.getUserMessage("reservations.messages","losing_form_data"));
}},onClick:function(c){var b=c+1;if(G!=b){X.setPhase(b);}}});if(jQuery("#datepicker").length){jQuery("#datepicker").datepicker("option","onSelect",function(e,b){var c=new Date();
c.setFullYear(parseInt(b.selectedYear),parseInt(b.selectedMonth),parseInt(b.selectedDay));
c.setHours(12,0,0);var d=Math.round((c.getTime()-c.getMilliseconds())/1000);Application.instance("calendar",V).updateDate(d,"n");
});}this.scrollToTime();if(Application.tracker){O=Application.tracker.getTimeTracker();
if(O){O.start();}}Application.addExtensionInstance("calendar",V,this);},phaseIndexToString:function(X){switch(X){case 1:return"Start time";
break;case 2:return"End time";break;case 3:return"Details";break;}},scrollToTime:function(Z){if(typeof Z=="undefined"){var Y=new Date();
var X=Y.getHours().length<2?"0"+Y.getHours():Y.getHours();Z=X+"00";}var a=jQuery('a[name="'+Z+'"]')[0];
if(a){jQuery.scrollTo(a,{speed:1000});}},setPhase:function(Y){Application.log("setPhase: "+Y);
if(Application.tracker){Application.tracker.trackEvent("Reservations",this.phaseIndexToString(Y));
}if(O){if(Y==1){O.start();}if(Y==3){O.end();if(G>1){O.save("Reservation");}}}if(Y<G){var X=Application.getActiveLanguageUrl()+"_ictn/event/reservation/OnPhaseChanged/";
X+=Y+"/day/"+F.orientation+"/"+V+"/_/";N.show();jQuery.post(X,{"r[]":I},function(){N.hide();
});G=parseInt(Y);return;}G=parseInt(Y);B=""+V+"_"+G;if(!jQuery("#"+B)[0]){jQuery("#"+V).attr("id",B);
}W();},setItemIDs:function(X){if(typeof X.length==="undefined"){return;}I=X;},reserve:function(c,d){Application.log("reserve "+c);
var Z=Q(d);if(Z.hasClass("item_disabled")){Application.log("Column is disabled");
return;}var f=Z.attr("id").split("_")[2];var e=[f];if(F.allow_multiple&&G==1){var Y=jQuery("#"+_hash+"_"+f+' input[type="checkbox"]');
var a;if(F.orientation=="vert"){a=jQuery('td.item input[type="checkbox"]').filter(":checked");
}else{if(F.orientation=="horz"){a=jQuery('th.item input[type="checkbox"]').filter(":checked");
}}var b=new Array();a.each(function(){b.push(jQuery(this).val());});if(b.length>0){if(!D(Y.val(),b)){Application.log("Current column not in selected items");
return false;}e=b;}}if(G==1){I=e;}var X=Application.getActiveLanguageUrl()+"_ictn/event/reservation/OnPhaseChanged/";
X+=G+"/day/"+F.orientation+"/"+V+"/"+c+"/";N.show();jQuery.post(X,{"r[]":I},function(){N.hide();
});return false;},updateDate:function(Z,a){var Y=Application.getActiveLanguageUrl()+"_ictn/event/itemcalendar::startdatetime/OnChanged/";
N.show();var X=this;jQuery.post(Y,{id:V,timestamp:Z,orientation:F.orientation,phase:G},function(){N.hide();
X.updateDatepicker(Z);});},updateDatepicker:function(Y){var X=new Date();X.setTime(Y*1000);
Application.instance("datepicker","datepicker").datepicker("setDate",X);}};};$.fn.replaceAndFadeIn=function(A){return this.each(function(){$(this).empty().hide().append(A).fadeIn("slow");
});};
