(function(a){a.widget=function(n,p){var l=new a.errors();
var m=p.territory||"GB";
var h=new a.api(n,l,p);
this.cinemas=function(q){a.extend(k,q)
};
this.films=function(q){a.extend(f,q)
};
this.dates=function(q){a.extend(e,q)
};
this.performances=function(q){a.extend(j,q)
};
this.init=function(){l.hide();
i.push(new a.widget.cinemas(k));
i.push(new a.widget.films(f));
i.push(new a.widget.dates(e));
i.push(new a.widget.performances(j));
d.territory=m;
i.sort(function(r,q){return r.get_settings().order-q.get_settings().order
});
a.each(i,function(q,s){s.get_listTarget().change(c);
var r=s.get_settings().filter;
if(r.length>0){o[s.get_paramName()]=r;
if(r.length===1&&q>0){g(q,false)
}}});
g(0,true)
};
var c=function(s){var q;
a.each(i,function(t,u){if(u.get_listTarget().get(0).id===s.target.id){q=t
}});
var r=i[q].get_settings();
if(r.onSelect&&typeof r.onSelect=="function"){r.onSelect(a(s.target).find("option:selected").text())
}i[q].get_listTarget().find("option[value='']").remove();
d[i[q].get_paramName()]=a(s.target).find("option:selected").val();
i[q].displayFields(a(s.target).find("option:selected").data("details"));
g(q+1,true)
};
var g=function(q,r){a.each(i,function(s,t){if(s>q){t.resetList(i[q].get_labels().choose)
}if(s>q-1){i[s].hideDisplay();
delete d[i[s].get_paramName()]
}});
i[q].populateList(h,r,a.extend({},o,d))
};
var i=[];
var o={};
var d={};
var k={};
var f={};
var e={};
var j={}
};
var b=function(d){var f=a.extend({filter:[],full:true,defaultFirst:false,displayFields:true},d.settings);
var i=a.extend({choose:"Select a "+d.paramName,empty:"No "+d.paramName+"s available"},d.labels);
var h={};
h.get_listTarget=function(){return d.listTarget
};
h.get_paramName=function(){return d.paramName
};
h.get_displayTarget=function(){return d.displayTarget
};
h.get_settings=function(){return f
};
h.get_labels=function(){return i
};
var g=function(j){d.listTarget.empty();
e(j)
};
h.resetList=g;
var e=function(j){d.listTarget.append(a("<option></option>").attr("value","").text(j))
};
h.labelList=e;
var c=function(){d.displayTarget.hide()
};
h.hideDisplay=c;
h.displayFields=function(j){if(j&&f.displayFields){h.writeFields(j,d.displayTarget);
d.displayTarget.show()
}};
return h
};
a.widget.cinemas=function(c){var d=b({listTarget:a("#cineworld_cinemas"),displayTarget:a("#cineworld_selected_cinema"),paramName:"cinema",settings:a.extend({order:1},c.settings),labels:c.labels});
d.writeFields=c.writeFields||function(e,f){f.find(".address").text(e.address);
f.find(".postcode").text(e.postcode);
f.find(".telephone").text(e.telephone);
f.find(".link").attr("href",e.cinema_url)
};
d.populateList=function(e,f,g){e.fetchCinemas(a.extend({full:d.get_settings().full},g),function(i){d.get_listTarget().empty();
var h=[];
a.each(i.cinemas,function(){var j=a("<option></option>").attr("value",this.id).text(this.name);
j.data("details",this);
if(d.get_settings().favourite&&d.get_settings().favourite===this.id){if(d.get_labels().otherGroup){h.unshift(a("<optgroup></optgroup>").attr("label",d.get_labels().otherGroup))
}h.unshift(j);
if(d.get_labels().favouriteGroup){h.unshift(a("<optgroup></optgroup>").attr("label",d.get_labels().favouriteGroup))
}}else{h.push(j)
}});
if(h.length===0){d.labelList(d.get_labels().empty)
}else{if(h.length>1){d.labelList(d.get_labels().choose)
}}a.each(h,function(){d.get_listTarget().append(this)
});
if(h.length===1){if(f){d.get_listTarget().change()
}else{d.displayFields(i.cinemas[0])
}}else{if(h.length>1&&d.get_settings().defaultFirst){d.get_listTarget().get(0).selectedIndex=1;
d.get_listTarget().change()
}}})
};
return d
};
a.widget.films=function(c){var e=b({listTarget:a("#cineworld_films"),displayTarget:a("#cineworld_selected_film"),paramName:"film",settings:a.extend({order:2},c.settings),labels:c.labels});
var d=a.extend({poster:"http://www.cineworld.com/assets/images/poster_placeholder.jpg",still:"http://www.cineworld.com/assets/images/still_placeholder.jpg"},c.assets);
e.writeFields=c.writeFields||function(m,j){j.find(".title").text(m.title);
var i=d.poster;
if(m.poster_url!==undefined){i=m.poster_url
}j.find("img.large").attr("src",i);
var n=d.still;
if(m.still_url!==undefined){n=m.still_url
}j.find("img.still").attr("src",n);
j.find("img").attr("alt",m.title);
var h="";
if(m.classification!==undefined){h=m.classification
}j.find(".classification").text(h);
var f="";
if(m.advisory!==undefined){f=m.advisory
}j.find(".advisory").text(f);
var l="";
var g=false;
if(m.film_url!==undefined){l=m.film_url
}else{g=true
}var k=j.find(".link");
k.attr("href",l);
if(g){k.addClass("disabled").click(function(){return false
})
}else{k.removeClass("disabled").unbind("click")
}};
e.populateList=function(f,g,h){f.fetchFilms(a.extend({full:e.get_settings().full},h),function(j){e.get_listTarget().empty();
var i=[];
a.each(j.films,function(){var k=a("<option></option>").attr("value",this.edi).text(this.title);
k.data("details",this);
if(e.get_settings().favourite&&e.get_settings().favourite===this.edi){if(e.get_labels().otherGroup){i.unshift(a("<optgroup></optgroup>").attr("label",e.get_labels().otherGroup))
}i.unshift(k);
if(e.get_labels().favouriteGroup){i.unshift(a("<optgroup></optgroup>").attr("label",e.get_labels().favouriteGroup))
}}else{i.push(k)
}});
if(i.length===0){e.labelList(e.get_labels().empty)
}else{if(i.length>1){e.labelList(e.get_labels().choose)
}}a.each(i,function(){e.get_listTarget().append(this)
});
if(i.length===1){if(g){e.get_listTarget().change()
}else{e.displayFields(j.films[0])
}}else{if(i.length>1&&e.get_settings().defaultFirst){e.get_listTarget().get(0).selectedIndex=1;
e.get_listTarget().change()
}}})
};
return e
};
a.widget.dates=function(e){var h=b({listTarget:a("#cineworld_dates"),displayTarget:a("#cineworld_selected_date"),paramName:"date",settings:a.extend({order:3},e.settings),labels:e.labels});
h.writeFields=e.writeFields||function(i,j){j.text(f(d(i)))
};
h.populateList=function(i,j,k){i.fetchDates(k,function(n){h.get_listTarget().empty();
var m=false;
var l=[];
a.each(n.dates,function(){var o=a("<option></option>").attr("value",this).text(f(d(this)));
o.data("details",this);
if(h.get_settings().favourite&&h.get_settings().favourite===this){if(h.get_labels().otherGroup){l.unshift(a("<optgroup></optgroup>").attr("label",h.get_labels().otherGroup))
}l.unshift(o);
if(h.get_labels().favouriteGroup){l.unshift(a("<optgroup></optgroup>").attr("label",h.get_labels().favouriteGroup))
}}else{l.push(o)
}});
if(l.length===0){h.labelList(h.get_labels().empty)
}else{if(l.length>1){h.labelList(h.get_labels().choose)
}}a.each(l,function(){h.get_listTarget().append(this)
});
if(l.length===1){if(j){h.get_listTarget().change()
}else{h.displayFields(n.dates[0])
}}else{if(l.length>1&&h.get_settings().defaultFirst){h.get_listTarget().get(0).selectedIndex=1;
h.get_listTarget().change()
}}})
};
var d=function(i){return new Date(parseInt(i.substr(0,4),10),parseInt(i.substr(4,2),10)-1,parseInt(i.substr(6,2),10),0,0,0,0)
};
var g=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
var c=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var f=function(i){return g[i.getDay()]+" "+i.getDate()+" "+c[i.getMonth()]
};
return h
};
a.widget.performances=function(c){var g=a("#cineworld_legend");
var f=a("#cineworld_accessibility");
var d=a.extend({showRegular:true,showAccessibility:false},c.legend);
var e=b({listTarget:a("#cineworld_performances"),displayTarget:a("#cineworld_selected_performance"),paramName:"performance",settings:a.extend({order:4},c.settings),labels:c.labels});
e.populateList=function(h,i,j){h.fetchPerformances(j,function(n){e.get_listTarget().empty();
var k=false;
var l=false;
var m=false;
a.each(n.performances,function(){var q;
var p="";
if(d.showAccessibility){if(this.ad&&this.subtitled){m=true;
p='&nbsp;<em class="accessibility">(AD/S)</em>'
}else{if(this.ad){l=true;
p='&nbsp;<em class="accessibility">(AD)</em>'
}if(this.subtitled){k=true;
p='&nbsp;<em class="accessibility">(S)</em>'
}}}if(this.available){var o=this.booking_url+"&key="+h.get_key();
if(h.get_campaignCode()){o+="&campaignCode="+h.get_campaignCode()
}anchor=a("<a></a>").attr("class",this.type+" available").attr("href",o).html(this.time+p);
if(e.get_settings().onSelect&&typeof e.get_settings().onSelect=="function"){anchor.click(function(){e.get_settings().onSelect(a(this).text())
})
}q=a("<li></li>").append(anchor)
}else{q=a("<li></li>").append(a("<span></span>").attr("class","unavailable").html(this.time+p))
}e.get_listTarget().append(q)
});
g.empty();
a.each(n.legends,function(){if(this.code!=="reg"||d.showRegular){g.append(a("<li></li>").attr("class",this.code).text(this.description))
}});
if(d.showAccessibility&&f){f.empty();
if(l){f.append(a("<li></li>").text("(AD) Audio Described"))
}if(k){f.append(a("<li></li>").text("(S) Subtitled"))
}if(m){f.append(a("<li></li>").text("(AD/S) Audio Described and Subtitled"))
}}})
};
return e
};
a.api=function(e,g,d){var i=g;
var f=a.extend({local:false,serverAddress:"http://www.cineworld.com",apiRoot:"/api/quickbook",cinemasPath:"/cinemas",filmsPath:"/films",datesPath:"/dates",performancesPath:"/performances"},d);
var h={key:e};
this.get_key=function(){return e
};
this.get_campaignCode=function(){return f.campaignCode
};
this.fetchCinemas=function(j,k){c(f.cinemasPath,j,k)
};
this.fetchFilms=function(j,k){c(f.filmsPath,j,k)
};
this.fetchDates=function(j,k){c(f.datesPath,j,k)
};
this.fetchPerformances=function(j,k){c(f.performancesPath,j,k)
};
var c=function(j,k,l){i.hide();
if(f.before&&typeof f.before=="function"){f.before()
}a.ajax({url:(f.local?"":f.serverAddress)+f.apiRoot+j,type:"GET",data:a.extend(k,h),dataType:"jsonp",complete:function(){if(f.after&&typeof f.after=="function"){f.after()
}},success:function(m){if(m.errors){i.show(m.errors)
}else{l(m)
}}})
}
};
a.errors=function(){var d=this;
var c=a("#cineworld_errors");
this.hide=function(){c.find(".list").empty();
c.hide()
};
this.show=function(f){var e=c.find(".list");
a.each(f,function(){e.append("<li>"+this+"</li>")
});
c.fadeIn("slow")
}
}
})(jQuery);
