function renderScheduler(){$('#scheduleOptions').hide();$('#calendarSelector').hide();if($('#calendar ul.days').length==0){$('#calendar').append('<ul class="days"></ul>');$("ul.days").append('<li class="prev"><a title="Prev"><span>&laquo;</span></a></li>');$("ul.days").append('<li class="next"><a title="Next"><span>&raquo;</span></a></li>');$("#calendar").append('<iframe id="schedule" frameborder="0"></iframe>');}
$("ul.days li:not(li.prev,li.next)").remove();for(var day=(calendarData.week+calendarData.start);day<(calendarData.week+calendarData.end+oneWeek-oneDay);day+=oneDay){var d=new Date(day*1000);$("ul.days").append('<li id="'+day+'">'+weekFormat[d.getUTCDay()]+' '+(d.getUTCMonth()+1)+'/'+d.getUTCDate()+'</li>');}
var date=new Date(calendarData.week*1000);$("#calendar h2.title b").html(monthFormat[date.getUTCMonth()]+" "+date.getUTCDate()+", "+date.getUTCFullYear());$("#schedule").attr("src",webPath+calendarData.url+calendarData.week+"/");$('#schedule').load(function()
{$("#loading").css("display","none");});}
function deleteAll(){var url=webPath+"/ajax"+calendarData.url;url=url.replace(/schedule/,"schedule/deleteall");$.getJSON(url,function(data){});renderScheduler();}
function scheduleOptions(show){if($("#scheduleOptions:visible").length!=0){saveSettings();renderScheduler();return;}
if($("#scheduleOptions").length==0){$("#calendar").append('<div id="scheduleOptions" style="display:none;"></div>');}
fetchSettings();if(show!="no"){var offset=$("#calendar li.settings a").offset();$("#scheduleOptions").css({"top":offset.top-10,"left":offset.left-300});setTimeout('$("#scheduleOptions").show()',200);}}
function calendarSelector(){if($("#calendarSelector:visible").length!=0){$("#calendarSelector").hide();return;}
if($("#calendarSelector").length==0){$("#calendar").append('<div id="calendarSelector" style="display:none;"></div>');}
var offset=$("#calendar h2.title a img").offset();var cal=$("#calendarSelector");fetchCalendar();$(cal).css({"top":offset.top+30,"left":offset.left-94});setTimeout('$("#calendarSelector").show()',200);}
function fetchCalendar(){var url=webPath+"/ajax"+calendarData.url;url=url.replace(/schedule/,"schedule/calendar");var time=calendarData.week;$.getJSON(url+time+"/",function(data){calendarData.calendar=data;renderCalendar();});}
function fetchSettings(){var url=webPath+"/ajax"+calendarData.url;url=url.replace(/schedule/,"schedule/settings");$.getJSON(url,function(data){calendarData.schedule=data;calendarData.serviceOptions=data;renderSettings();});}
function renderCalendar(){var data=calendarData.calendar;var month=new Date(data.monthStart*1000);$("#calendarSelector").hide().html("").append("<p><span><a class=\"prev\">&laquo;</a> &nbsp;&nbsp;&nbsp; <b>"+monthFormat[month.getUTCMonth()]+" "+month.getUTCFullYear()+"</b> &nbsp;&nbsp;&nbsp; <a class=\"next\">&raquo;</a></span></p>");$("#calendarSelector").append("<ul class=\"header\"></ul>");var cal=$("#calendarSelector ul.header");var day=data.calStart;for(day;day<data.calStart+oneWeek;day+=oneDay){var d=new Date(day*1000);$(cal).append('<li id="'+day+'"><a><span>'+weekFormat[d.getUTCDay()]+'</span></a></li>');}
$("#calendarSelector").append("<ul class=\"dates\"></ul>");cal=$("#calendarSelector ul.dates");var today=new Date(data.today*1000);for(day=data.calStart;day<=data.calEnd;day+=oneDay){var d=new Date(day*1000);if(d.getDate()==today.getUTCDate()&&d.getUTCMonth()==today.getUTCMonth()&&d.getUTCFullYear()==today.getUTCFullYear()){var klass="today";}else if(d<today){var klass="past";}else if(d.getUTCDay()==0||d.getUTCDay()==6){var klass="weekend";}else{var klass="week";}
$(cal).append('<li id="'+day+'" class="'+klass+'"><a><span>'+d.getUTCDate()+'</span></a></li>');}
$("#calendarSelector li.today,#calendarSelector li.weekend,#calendarSelector li.week").click(function(){var week=$(this).attr("id")*1;var d=new Date(week*1000);week+=-(d.getUTCDay()*oneDay);calendarData.week=week;var weekBegin=new Date();weekBegin.setTime(calendarData.week*1000);$('#weekOf').text("Week of "+monthFormat[weekBegin.getUTCMonth()]+" "+weekBegin.getUTCDate()+", "+weekBegin.getUTCFullYear());renderScheduler();});$("#calendarSelector p a.prev").click(function(){calendarData.week=calendarData.calendar.calStart-oneWeek;fetchCalendar();});$("#calendarSelector p a.next").click(function(){calendarData.week=calendarData.calendar.calEnd+oneDay;fetchCalendar();});$("#calendarSelector ul.dates").append("<div class=\"clear\"></div><p class=\"close\"><a href=\"javascript:calendarSelector();\">Close</a></p>");$("#calendarSelector").show();}
function renderSettings(){var data=calendarData.schedule;var serviceData=calendarData.serviceOptions;var opt=$("#scheduleOptions");if($("#scheduleSettings").length==0){$(opt).width(350).append("<form id=\"scheduleSettings\"></form>");var set=$("#scheduleSettings");$(set).append("<input type=\"hidden\" name=\"id\" value=\""+data.id+"\" />");$(set).append("<input type=\"hidden\" name=\"user_id\" value=\""+data.user_id+"\" />");$(set).append("<input type=\"hidden\" name=\"service_id\" value=\""+calendarData.service.id+"\" />");$(set).append("<h3 style=\"color:#93BF3B;\"><span>Advanced Options &nbsp;&nbsp; <a href=\"javascript:saveSettings();renderScheduler();\">[x]</a></span></h3>");$(set).append("<p style=\"margin-bottom:0.5em; border-top:1px solid #eee; padding-top:10px; margin-top:10px;\"><strong>Would you like to approve all bookings first?</strong></p><p class=\"space indent\"><input type=\"radio\" id=\"approval-all\" name=\"approval\" value=\"all\" class=\"radio\" /> <label>No, anyone can book me instantly (recommended)</label><br /><input type=\"radio\" name=\"approval\" id=\"approval-repeat\" value=\"repeat\" class=\"radio\" /> <label>I'd like to approve bookings from new customers only</label></p>");$(set).append("<input type=\"hidden\" name=\"visibility\" value=\"13\"/>");$(set).append("<p style=\"margin-bottom:0.5em; border-top:1px solid #eee; padding-top:10px; margin-top:10px;\"><strong>How many hours before an appointment time can you accept bookings?</strong><br /><select id=\"close\" name=\"close\" onchange=\"saveSettings()\"><option value=\"0\">None</option><option>1</option><option>4</option><option>8</option><option>12</option><option>16</option><option>24</option><option>48</option></select> &nbsp; Hour(s)<br /></p>");$(set).append("<p style=\"display:none; margin-bottom:0.5em; border-top:1px solid #eee; padding-top:10px; margin-top:10px;\"><strong>How much time between appointments do you need for cleanup, prep, or travel?</strong><br /><select name=\"buffer\" id=\"buffer\" onchange=\"saveSettings()\"><option value=\"0\">0</option><option>15</option><option>30</option><option>45</option><option>60</option></select> &nbsp; Minutes<br /></p>");$(set).append("<p style=\"margin-bottom:0.5em; display:none;\">How much time would you like to display in the viewport?<br /><select name=\"start\" onchange=\"copySetting('start','start2');\" style=\"width:75px;\"></select> to <select name=\"end\" onchange=\"copySetting('end','end2');\" style=\"width:75px;\"></select><br /><br /></p>");if(calendarData.userSettings.paypal){$(set).append("<p style=\"display:none; margin-bottom:0.5em; border-top:1px solid #eee; padding-top:10px; margin-top:10px;\"><strong>Do you require customers to pay you immediately via PayPal when booking?</strong></p><p class=\"space indent\"><input type=\"radio\" name=\"payment\" id=\"payment-true\" value=\"require\" class=\"radio\" /><label> Yes</label><br /><input type=\"radio\" id=\"payment-false\" name=\"payment\" value=\"\" class=\"radio\" /><label>No, that's ok, I'll take cash or check</label></p>");}else{$(set).append("<p style=\"display:none; margin-bottom:0.5em; border-top:1px solid #eee; padding-top:10px; margin-top:10px;\"><strong>To enable online payments, enter your PayPal address.</strong><br /><input type=\"text\" name=\"paypal\" class=\"text bio\" /></p><p style=\"display:none; margin-bottom:0.5em; border-top:1px solid #eee; padding-top:10px; margin-top:10px;\"><strong>Do you require customers to pay you immediately via PayPal when booking?</strong></p><p class=\"space indent\" style=\"display:none;\"><input type=\"radio\" name=\"payment\" id=\"payment-true\" value=\"require\" class=\"radio\" /><label> Yes</label><br /><input type=\"radio\" id=\"payment-false\" name=\"payment\" value=\"\" class=\"radio\" /><label>No, that's ok, I'll take cash or check</label></p>");}
$(set).append("<p align=\"center\"><a href=\"javascript:saveSettings();renderScheduler();\"><strong>SAVE</strong></a></p>");}
$("#status-real-time").attr("checked",data.status=="real-time");$("#status-static").attr("checked",data.status=="static");$("#approval-all").attr("checked",(serviceData.approval=="all"||serviceData.approval==null));$("#approval-repeat").attr("checked",serviceData.approval=="repeat");$("#scheduleSettings [name=visibility]").attr("value",data.visibility);$("#close").val(data.close);$("#buffer").val(data.buffer);$("#payment-true").attr("checked",serviceData.payment=="require");$("#payment-false").attr("checked",serviceData.payment!="require");rebuildStart();rebuildEnd();}
function rebuildEnd(){var end=calendarData.schedule.end;$("select[name=end] option, select[name=end2] option").remove();var time=calendarData.schedule.start;time=Math.max(oneHour*4,Math.min(oneDay,time+(oneHour*4)));for(var x=time;x<=oneDay;x){$("select[name=end], select[name=end2]").append('<option value="'+(x)+'">'+hourFormat[x]+'</option>');x=x+oneHour;}
$("select[name=end], select[name=end2]").attr("value",end);}
function rebuildStart(){var start=calendarData.schedule.start;$("select[name=start] option, select[name=start2] option").remove();var time=calendarData.schedule.end;time=Math.max(0,time-(oneHour));for(var x=0;x<=time;x){$("select[name=start], select[name=start2]").append('<option value="'+(x)+'">'+hourFormat[x]+'</option>');x=x+oneHour;}
$("select[name=start], select[name=start2]").attr("value",start);}
function saveSettings(){var data=$("#scheduleSettings").serialize();var url=webPath+"/ajax"+calendarData.url;url=url.replace(/schedule/,"schedule/settings");$.post(url,data,function(data){calendarData.schedule=data;calendarData.serviceOptions=data;calendarData.userSettings=data;},"json");}
function copySetting(src,dst){$("select[name="+dst+"]").val($("select[name="+src+"]").val());setTimeout('saveSettings()',100);setTimeout('rebuildStart()',750);setTimeout('rebuildEnd()',750);}
function postToModal(url,form){$.modal.loading();$.post(url,form,function(data){;$.modal.reveal(data);},"json");}
function loadInModal(url){$.modal.loading();$.getJSON(url,function(data){$.modal.reveal(data);});}