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