if(typeof(AC)=="undefined"){AC={}}AC.RetailCalendar=Class.create();Object.extend(AC.RetailCalendar.prototype,{calendar:null,calendarlinkEl:null,store:null,workshops:null,months:[],monthabbrs:[],monthLengths:[31,28,31,30,31,30,31,31,30,31,30,31],daynames:[],reservetext:"",waitlisttext:"",readmoretext:"",signintext:"",learnmoretext:"",onetoonetext:"",moredropdownEl:null,firstcat:"",currentcat:null,today:{date:null,day:null,month:null,year:null},selectedDate:{date:null,day:null,month:null,year:null},currentDate:{date:null,day:null,month:null,year:null},endDate:{date:null,day:null,month:null,year:null},morecat:null,moretext:null,weekviewEl:null,weekviewlistsEl:null,inititemEl:null,calendarwrapperEl:null,calendarcellsEl:null,dateviewnavEl:null,startdatemonthEl:null,startdatedateEl:null,enddatemonthEl:null,enddatedateEl:null,enddateyearEl:null,dateheadersEl:null,monthviewmonthEl:null,monthviewyearEl:null,monthviewrowsEl:null,selectedcells:$A(),calendartitle:null,initialize:function(a,e){this.calendar=e;
this.calendarlinkEl=$("storecalendar-calendarlink");this.storeNumber=a;this.calendartitle=AC.Tracking.pageName()+" - Calendar";
this.moredropdownEl=this.calendar.select("#storecalendar-categories #moredropdown")[0]||null;
var f=this.changeCategory.bindAsEventListener(this);var d=this.calendar.select("#storecalendar-categories li a");
this.firstcat=this.currentcat=(d.length>0)?d[0].getHrefId():"";d.each(function(h,g){Event.observe(h,"click",f);
if(h.getHrefId()=="more"){this.morecat=h;this.moretext=h.firstChild.data}}.bind(this));
var c=new Date();this.selectedDate=this.getSelectedDate(c);this.currentDate=this.getSelectedDate(c);
if(this.months.length===0){var b=this;getLang(function(g){b.months=g.months;b.monthabbrs=g.monthabbrs;
b.daynames=g.daynames;b.reservetext=g.reservetext;b.waitlisttext=g.waitlisttext;
b.readmoretext=g.readmoretext;b.signintext=g.signintext;b.learnmoretext=g.learnmoretext;
b.onetoonetext=g.onetoonetext;b.localizedResourcesDidLoad()})}else{this.localizedResourcesDidLoad()
}},localizedResourcesDidLoad:function(){this.initWeekView();this.createWeekView();
this.initMonthView();this.createMonthView();this.initDateView();this.createDateView();
this.sendReq()},initStripes:function(){this.weekviewEl.select(".odd").invoke("removeClassName","odd");
this.weekviewEl.select(".even").invoke("removeClassName","even");this.weekviewEl.select(".noworkshops").invoke("hide");
this.weekviewlistsEl.each(function(b,a){this.zebraStripe(b);this.displayNoWorkshopsText(b)
}.bind(this))},initDateView:function(){this.dateviewnavEl=$("storecalendar-dateviewnav");
this.startdatemonthEl=this.calendar.down("#storecalendar-startdate .month");this.startdatedateEl=this.calendar.down("#storecalendar-startdate .date");
this.enddatemonthEl=this.calendar.down("#storecalendar-enddate .month");this.enddatedateEl=this.calendar.down("#storecalendar-enddate .date");
this.enddateyearEl=this.calendar.down("#storecalendar-enddate .year");var a=this.changeDateView.bindAsEventListener(this);
this.calendar.select("#storecalendar-nav .navigation").invoke("observe","click",a);
Event.observe($("storecalendar-gototoday"),"click",a)},initWeekView:function(){this.weekviewEl=$("storecalendar-weekview");
this.weekviewlistsEl=this.weekviewEl.select("ul");this.dateheadersEl=this.calendar.select("#storecalendar-weekview h3");
this.inititemEl=this.weekviewlistsEl[0].down(0);this.inititemEl.remove()},initMonthView:function(){this.calendarwrapperEl=$("storecalendar-calendarwrapper");
this.calendarcellsEl=this.calendar.select("#storecalendar-monthview tbody tr td");
this.monthviewmonthEl=$("storecalendar-month");this.monthviewyearEl=$("storecalendar-year");
this.monthviewrowsEl=this.calendar.select("#storecalendar-monthview tbody tr");
var d=this.calendar.select("#storecalendar-monthviewclose")[0];Event.observe(d,"click",function(e){Event.stop(e);
this.closeCalendar()}.bindAsEventListener(this));var c=this.calendarwrapperEl.select("tr th");
c.each(function(f,e){f.innerHTML=this.daynames[e].charAt(0)}.bind(this));Event.observe(this.calendarlinkEl,"click",this.openCalendar.bindAsEventListener(this));
var a=this.calendar.select(".storecalendar-monthnav");var b=this.changeMonth.bindAsEventListener(this);
a.invoke("observe","click",b);this.calendarcellsEl.each(function(e,f){Event.observe(e,"mousedown",this.selectDate.bindAsEventListener(this));
Event.observe(e,"click",this.changeDate.bindAsEventListener(this))}.bind(this))
},createDateView:function(){this.startdatemonthEl.innerHTML=this.monthabbrs[this.selectedDate.month];
this.startdatedateEl.innerHTML=this.selectedDate.date;this.enddatemonthEl.innerHTML=this.monthabbrs[this.endDate.month];
this.enddatedateEl.innerHTML=this.endDate.date;this.enddateyearEl.innerHTML=this.endDate.year
},removeClassNamesFromEach:function(a){a.each(function(c,b){c.removeClassName(c.readAttribute("class"))
})},createWeekView:function(){this.removeClassNamesFromEach(this.weekviewlistsEl);
this.weekviewlistsEl.each(function(i,h){i.select("li").invoke("remove")});var c=this.selectedDate.day;
var a=this.daynames[c];var g=this.selectedDate.month;var f=this.months[g];var d=this.selectedDate.year;
var b=this.selectedDate.date;var e=this.getMonthLength(g,d);this.dateheadersEl.each(function(j,h){if(b>e){g=g+1;
if(g>11){d=d+1;g=0}}if(b>e){b=1}j.down(".day").innerHTML=this.daynames[c];j.down(".month").innerHTML=this.months[g];
j.down(".date").innerHTML=b;j.down(".year").innerHTML=d;var i=new Date(d,g,b);this.selectedcells[h]=d+"_"+g+"_"+b;
this.weekviewlistsEl[h].addClassName(i.valueOf());c=(c<6)?c+1:0;b=b+1}.bind(this))
},createMonthView:function(){this.monthviewmonthEl.innerHTML=this.months[this.currentDate.month];
this.monthviewyearEl.innerHTML=this.currentDate.year;var h=new Date(this.currentDate.year,this.currentDate.month,1);
var a=h.getDay();var f=this.getPrevMonth().month;var b=this.getPrevMonth().year;
var g=this.getMonthLength(f,b);var m=this.getMonthLength(this.currentDate.month,this.currentDate.year);
this.removeClassNamesFromEach(this.monthviewrowsEl);this.removeClassNamesFromEach(this.calendarcellsEl);
var c=1;var d=false;var l=false;var e=null;var j=new Date();var k={date:j.getDate(),month:j.getMonth(),year:j.getFullYear(),day:j.getDay()};
this.calendarcellsEl.each(function(n,o){var q=this.currentDate.month;var p=this.currentDate.year;
if(o<a){c=(g-a)+(o+1);q=this.getPrevMonth().month;p=this.getPrevMonth().year}else{if(o>=(m+a)){if(d){c=1;
d=false}else{c=c+1}q=this.getNextMonth().month;p=this.getNextMonth().year}else{if(!d){c=1;
d=true}else{c=c+1}if(c==k.date&&q==k.month&&p==k.year){n.addClassName("today")}if(c==this.selectedDate.date&&q==this.selectedDate.month&&p==this.selectedDate.year){n.addClassName("selecteddate");
l=true;e=o}n.addClassName("selectedmonth");var r=n.up("tr");r.addClassName("viewingmonth")
}}n.id=p+"_"+q+"_"+c;n.down(".date").innerHTML=c}.bind(this));this.selectedcells.each(function(p,n){var o=$(p)||false;
if(o){o.addClassName("selectedweek")}});var i=this.selectedcells[6].split("_");
this.endDate={date:i[2],month:i[1],year:i[0]}},changeCategory:function(a){Event.stop(a);
var b=Event.findElement(a,"a");var c=b.getHrefId();if(c!="more"){if(b.up("#more")){this.morecat.innerHTML=b.firstChild.data
}else{this.morecat.innerHTML=this.moretext}if(this.moredropdownEl.visible()){this.closeMore()
}this.calendar.removeClassName(this.currentcat);this.calendar.addClassName(c);this.currentcat=c;
this.initStripes()}else{if(!this.moredropdownEl.visible()){Event.observe(document.body,"click",this.clickOffMore.bindAsEventListener(this))
}else{Event.stopObserving(document.body,"click",this.clickOffMore.bindAsEventListener(this))
}this.moredropdownEl.toggle()}},changeDate:function(c){Event.stop(c);var a=Event.findElement(c,"td");
a.removeClassName("down");if(a.hasClassName("selectedmonth")){var d=a.readAttribute("id").split("_");
var b=new Date(d[0],d[1],d[2]);this.selectedDate=this.getSelectedDate(b);this.changeToSelectedDate();
this.closeCalendar()}},changeDateView:function(l){Event.stop(l);var h=Event.findElement(l,"a");
var i=h.getHrefId();if(!this.dateviewnavEl.hasClassName("off")||i=="today"){switch(i){case"prev":var k=this.selectedDate.date-7;
if(k<1){var d=this.getPrevMonth().month;var c=this.getPrevMonth().year;var e=this.getMonthLength(d,c);
this.selectedDate.date=this.currentDate.date=e+k;this.selectedDate.month=this.currentDate.month=d;
this.selectedDate.year=this.currentDate.year=c}else{this.selectedDate.date=this.currentDate.date=k
}break;case"next":var k=this.selectedDate.date+7;var j=this.getMonthLength(this.selectedDate.month,this.selectedDate.year);
if(k>j){var f=this.getNextMonth().month;var a=this.getNextMonth().year;this.selectedDate.date=this.currentDate.date=k-j;
this.selectedDate.month=this.currentDate.month=f;this.selectedDate.year=this.currentDate.year=a
}else{this.selectedDate.date=this.currentDate.date=k}break;case"today":var g=new Date();
this.selectedDate=this.currentDate=this.getSelectedDate(g);default:break}var b=new Date(this.selectedDate.year,this.selectedDate.month,this.selectedDate.date);
this.selectedDate.day=b.getDay();this.changeToSelectedDate();if(i=="today"){this.closeCalendar()
}}else{this.closeCalendarQuick();this.calendarlinkEl.toggleClassName("activated")
}},changeMonth:function(i){Event.stop(i);var e=Event.findElement(i,"a");var g=e.getHrefId();
var b=this.currentDate.month;var c=this.currentDate.year;var f=this.currentDate.day;
var a=1;var d=new Date();switch(g){case"prev":b=this.getPrevMonth().month;c=this.getPrevMonth().year;
if(b==d.getMonth()&&c==d.getFullYear()){a=d.getDate()}var h=new Date(c,b,a);f=h.getDay();
break;case"next":b=this.getNextMonth().month;c=this.getNextMonth().year;if(b==d.getMonth()&&c==d.getFullYear()){a=d.getDate()
}var h=new Date(c,b,a);f=h.getDay();break;default:break}this.currentDate.date=a;
this.currentDate.month=b;this.currentDate.year=c;this.currentDate.day=f;this.createMonthView();
this.displayWorkshopsOnCal()},selectDate:function(a){Event.findElement(a,"td").addClassName("down")
},getSelectedDate:function(a){return{date:a.getDate(),day:a.getDay(),month:a.getMonth(),year:a.getFullYear()}
},clickOffMore:function(a){if($(Event.element(a)).up("#more")!=this.moredropdownEl){this.closeMore()
}},closeMore:function(){this.moredropdownEl.hide()},zebraStripe:function(b){var a=$A();
if(this.currentcat==""){a=b.select("li")}else{b.select("li").each(function(d,c){if(d.hasClassName(this.currentcat)){a[a.length]=d
}}.bind(this))}a.each(function(d,c){d.addClassName((c%2==1)?"odd":"even")})},displayNoWorkshopsText:function(b){var a=false;
var c=this.currentcat;if(c==""){if(b.select("li").length>0){a=true}}else{b.select("li").each(function(e,d){if(e.hasClassName(c)||e.hasClassName("specialevent")){a=true
}})}if(!a){b.next("div.noworkshops").show()}},changeToSelectedDate:function(){this.createWeekView();
this.createMonthView();this.createDateView();this.displayWorkshops();this.displayWorkshopsOnCal();
this.currentDate=this.getSelectedDate(new Date(this.selectedDate.year,this.selectedDate.month,this.selectedDate.date))
},getPrevMonth:function(){var b=(this.currentDate.month>0)?this.currentDate.month-1:11;
var a=(b==11)?this.currentDate.year-1:this.currentDate.year;return{month:b,year:a}
},getNextMonth:function(){var b=(this.currentDate.month<11)?this.currentDate.month+1:0;
var a=(b==0)?this.currentDate.year+1:this.currentDate.year;return{month:b,year:a}
},openCalendar:function(a){Event.stop(a);this.calendarwrapperEl.show();this.dateviewnavEl.addClassName("off");
this.calendarlinkEl.toggleClassName("activated");var b={sprop3:this.calendartitle};
AC.Tracking.trackClick(b,this,"o",this.calendartitle);(this.calendarlinkEl.hasClassName("activated"))?Event.observe(document.body,"click",this.clickOffCalendar.bind(this)):this.closeCalendarQuick()
},clickOffCalendar:function(a){if($(Event.element(a)).up("#storecalendar-calendarwrapper")!=this.calendarwrapperEl){this.closeCalendarQuick();
this.calendarlinkEl.toggleClassName("activated")}},closeCalendarQuick:function(){this.calendarwrapperEl.hide();
this.dateviewnavEl.removeClassName("off");Event.stopObserving(document.body,"click")
},closeCalendar:function(){setTimeout(function(){new Effect.Fade(this.calendarwrapperEl,{duration:0.5,afterFinish:function(){this.calendarlinkEl.toggleClassName("activated");
this.closeCalendarQuick()}.bind(this)})}.bind(this),300)},getMonthLength:function(b,a){return(b==1&&((a%4==0&&a%100!=0)||a%400==0))?29:this.monthLengths[b]
},sendReq:function(e){var b=$$("html")[0],d=b.readAttribute("lang");var a="/retail/scripts/concierge_data.php?type=coe&store="+this.storeNumber+"&locale="+d,c=new Ajax.Request(a,{method:"POST",parameters:e,onComplete:this.acknowledgeComplete.bind(this)})
},acknowledgeComplete:function(c){var b=c.responseText;var k=new Function("return "+b)();
if(k){var h=k;this.workshops=[];for(var e=0,a;a=h[e];e++){if(a.category.toLowerCase().match(/workshop|event/)){for(var d=0,g;
g=a.coeItemList[d];d++){if(g.imageurl!="icon_personalprojects"+".png"){if(a.category.toLowerCase().match(/event/)){g.tags="specialevent,"+g.tags
}this.workshops.push(g)}}}}function f(l,i){var n=l.startTime.substring(l.startTime.indexOf(" ")+1,l.startTime.length).split(":"),j=i.startTime.substring(i.startTime.indexOf(" ")+1,i.startTime.length).split(":"),o=((parseInt(n[0])*60)+parseInt(n[1])),m=((parseInt(j[0])*60)+parseInt(j[1]));
return(o-m)}this.workshops=this.workshops.sort(f);this.initWorkshops();this.displayWorkshops();
this.displayWorkshopsOnCal();this.calendar.removeClassName("loading")}},scopedEval:function(stringValue){try{return(function(){return eval("("+stringValue+")")
})()}catch(e){return null}},newDate:function(b,c,a){return new Date(b,c,a)},initWorkshops:function(){this.workshopElements=$A();
var c=Builder.node("img",{width:"140",height:"100"});var b=930,a="Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras metus nisl, semper eget, ultrices sit amet, ultricies ut, ipsum. Integer sit amet dui. Donec nulla odio, sodales ac, malesuada nec, tristique id, lacus. Mauris nisl nulla, rhoncus id, hendrerit vel, hendrerit nec, orci. Phasellus molestie nulla id leo. Donec nec massa. Vivamus non urna vel risus aliquet accumsan. Vivamus auctor tellus id leo. Nunc euismod, nibh quis gravida ultricies, massa tortor vestibulum magna, non tristique velit lacus et pede. Fusce viverra tempus felis. Aliquam auctor. Ut ac mi in odio fermentum vulputate. Quisque ornare euismod dolor. Curabitur in magna in arcu sodales venenatis. Nullam ac magna.",d=this.getTruncationLength(this.weekviewEl,a,b),e=false;
this.workshops.each(function(r,s){var z=r.startTime.substring(0,r.startTime.indexOf(" ")).split("-"),D=r.startTime.substring(r.startTime.indexOf(" ")+1,r.startTime.length).split(":"),v=new Date(z[0],parseInt(z[1]-1),z[2]),i=r.endTime.substring(0,r.endTime.indexOf(" ")).split("-"),o=r.endTime.substring(r.endTime.indexOf(" ")+1,r.endTime.length).split(":"),n=new Date(i[0],parseInt(i[1]-1),i[2]);
v.setHours(D[0],D[1],D[2]);n.setHours(o[0],o[1],o[2]);var q=new Date(v.getFullYear(),v.getMonth(),v.getDate());
var j=this.inititemEl.cloneNode(true);var f="vevent "+this.firstcat;f+=" "+r.tags.toLowerCase().gsub(/\s+/,"").gsub(/,/," ");
j.addClassName(f);var u=j.down(".dtstart"),k=j.down(".dtend");u.innerHTML=v.toFormattedTime();
k.innerHTML=n.toFormattedTime();u.writeAttribute({title:v.toJSON()});k.writeAttribute({title:n.toJSON()});
var A=j.down(".summary span");A.innerHTML=r.name;var C=j.down(".description");var y=r.description.unescapeHTML();
if(r.tags.toLowerCase().match(/specialevent/)){C.innerHTML=y;if(r.imageurl!=null){var p=c.cloneNode(true);
Element.writeAttribute(p,{src:r.imageurl,alt:r.name});Element.addClassName(p,"right");
A.insert({before:p})}}else{if(r.tags.toLowerCase().match(/one to one/)){var h=j.down(".conciergelink");
h.innerHTML=this.signintext;h.writeAttribute({href:"http://onetoone.apple.com/",title:this.signintext+" "+r.name});
var B=j.down("h6 span");var m=j.down(".onetoonelink");m.innerHTML=this.learnmoretext;
head=$$("html")[0],lang=head.readAttribute("lang");switch(lang){case"it-IT":m.writeAttribute({href:"http://www.apple.com/it/retail/onetoone/",title:this.learnmoretext});
break;case"de-CH":m.writeAttribute({href:"http://www.apple.com/chde/retail/onetoone/",title:this.learnmoretext});
break;case"fr-CH":m.writeAttribute({href:"http://www.apple.com/chfr/retail/onetoone/",title:this.learnmoretext});
break;case"de-DE":m.writeAttribute({href:"http://www.apple.com/de/retail/onetoone/",title:this.learnmoretext});
break;case"fr-FR":m.writeAttribute({href:"http://www.apple.com/fr/retail/onetoone/",title:this.learnmoretext});
break;case"fr-CA":m.writeAttribute({href:"http://www.apple.com/ca/fr/retail/onetoone/",title:this.learnmoretext});
break;case"en-CA":m.writeAttribute({href:"http://www.apple.com/ca/retail/onetoone/",title:this.learnmoretext});
break;case"ja-JP":m.writeAttribute({href:"http://www.apple.com/jp/retail/onetoone/",title:this.learnmoretext});
break;case"en-GB":m.writeAttribute({href:"http://www.apple.com/uk/retail/onetoone/",title:this.learnmoretext});
break;default:m.writeAttribute({href:"http://www.apple.com/retail/onetoone/",title:this.learnmoretext});
break}B.innerHTML=this.onetoonetext;Element.addClassName(B,"one-to-one-subhead");
var g='... <a class="morelink" href="#workshop_'+s+'" title="'+this.readmoretext+" "+r.name+'">'+this.readmoretext+"</a>";
var t=g.length-(5+this.readmoretext.length);truncateTo=d+t;var l=y.truncateDesc(truncateTo,g);
C.innerHTML=l;var w=C.down(".morelink")||false;if(w){Event.observe(w,"click",function(F){Event.stop(F);
C.innerHTML=r.description;var G=C.up("li");G.addClassName("open")}.bindAsEventListener(this))
}e=true}else{var x=j.down(".conciergelink");if(r.status!=null&&(r.status.toLowerCase()==="reserve"||r.status.toLowerCase()==="waitlist")){var E=(r.status.toLowerCase()==="reserve")?this.reservetext:this.waitlisttext;
x.innerHTML=E;x.writeAttribute({href:r.workshopURL,title:E+" "+r.name})}else{j.removeChild(x)
}var g='... <a class="morelink" href="#workshop_'+s+'" title="'+this.readmoretext+" "+r.name+'">'+this.readmoretext+"</a>";
var t=g.length-(5+this.readmoretext.length);truncateTo=d+t;var l=y.truncateDesc(truncateTo,g);
C.innerHTML=l;var w=C.down(".morelink")||false;if(w){Event.observe(w,"click",function(F){Event.stop(F);
C.innerHTML=r.description;var G=C.up("li");G.addClassName("open")}.bindAsEventListener(this))
}e=true}}this.workshopElements[s]={dateClass:q.valueOf(),element:j}}.bind(this))
},getTruncationLength:function(b,h,d){var g=document.createElement("span");g.id="ellipsisSpan";
g.style.whiteSpace="nowrap";var f=document.createTextNode(h);g.appendChild(f);b.appendChild(g);
var c=h.length;if(g.offsetWidth>d){var a=0;var e=Math.floor((h.length*d)/g.offsetWidth);
f.deleteData(e-1,h.length-e);if(g.offsetWidth<d){var a=e;while(g.offsetWidth<(d)&&a<h.length){f.appendData(h.charAt(a));
a++}}else{while(g.offsetWidth>d){f.deleteData(f.length-1,1)}}c=f.length}Element.remove(g);
return c},getTruncationLengthOriginal:function(b,f,d){var e=Builder.node("span",{id:"ellipsisSpan",style:"white-space:nowrap"},[f]);
b.insert(e);var c=f.length;if(e.offsetWidth>d){var a=1;e.innerHTML="";while(e.offsetWidth<(d)&&a<f.length){e.innerHTML=f.substr(0,a);
a++}c=e.firstChild.data.length}Element.remove(e);return c},displayWorkshops:function(){this.weekviewlistsEl.each(function(d,a){var c=$w(d.className)[0];
var b=this.workshopElements.findAll(function(e){return e.dateClass==c});b.each(function(f,e){d.appendChild(f.element)
})}.bind(this));this.initStripes()},displayWorkshopsOnCal:function(){this.workshops.each(function(f,b){var e=f.startTime.substring(0,f.startTime.indexOf(" ")).split("-"),a=f.startTime.substring(f.startTime.indexOf(" ")+1,f.startTime.length).split(":"),d=new Date(e[0],parseInt(e[1]-1),e[2]),c,g;
d.setHours(a[0],a[1],a[2]);c=d.getFullYear()+"_"+d.getMonth()+"_"+d.getDate();g=$(c)||false;
if(g&&f.tags.toLowerCase().match(/'specialevent'/)){g.addClassName("event")}}.bind(this))
}});String.prototype.truncateDesc=function(b,a){a=a||"...";b-=a.length;return(this.length>b)?this.substring(0,this.lastIndexOf(" ",b)).replace(/\W*$/,"")+a:this
};Date.prototype.toFormattedTime=function(){var a=this.getHours(),c=this.getMinutes().toPaddedString(2),b=$$("html")[0],d=b.readAttribute("lang");
switch(d){case"it-IT":case"de-CH":case"fr-CH":case"de":case"fr-FR":case"de-DE":return(a)+":"+c;
break;case"fr-CA":return a+" h "+((c==="00")?"":c);break;default:a=(a==0)?24:a;
return((a>12)?a-12:a)+":"+c+" "+((a>=12)?"pm":"am");break}};Element.addMethods({getHrefId:function(a){return a.readAttribute("href").split("#")[1]
}});
