﻿function TicketManager(){this.FrameTemplate="<iframe id='frame_{FrameID}' class='afisha-id-iframe' src='{CommandURL}?command={Action}&ReturnURL={ReturnURL}{AdditionalParams}' Style='display: none; ' scrolling='no' frameborder='0' allowTransparency='true' onload='onFrameLoad()'></iframe>"}function onFrameLoad(){document.getElementById("afishaWidgetLoader").style.display="none"}TicketManager.prototype={FrameID:null,CommandURL:null,ReturnURL:null,CookieDomain:null,widgets:null,orderKeyParam:"AFISHA_PARAM_ORDERKEY",InitDialog:function(b,a){var c=document.getElementById(ticketManager.FrameID);c.style.position="fixed";c.style.width=b;c.style.height=a;c.style.padding="9px";c.style.left="50%";c.style.top="50%";c.style.marginLeft="-"+(parseInt(b)/2+16)+"px";c.style.marginTop="-"+(parseInt(a)/2+6)+"px";c.style.display="block";c.style.boxShadow="0 0 30px -5px #000";c.style.MozBoxShadow="0 0 30px -5px #000";c.style.webkitBoxShadow="0 0 30px -5px #000";c.style.border="none";c.style.overflowY="auto";c.style.overflowX="hidden";c.style.zIndex="65010";c.style.background="url("+ticketManager.getStaticBase()+"i/iframe-bg_800x540.png) no-repeat 0 0"},Execute:function(f){if(typeof p=="undefined"){var p=false;var r=navigator.userAgent;var o=r.indexOf("MSIE ");if(o!=-1){var p=parseFloat(r.substring(o+5,r.indexOf(";",o)))<=6}}if(p){notSupported();return false}switch(f.Name){case"command":ticketManager.Execute({Name:"hide"});if(f.Args.AdditionalParams!=null){var w=new Array();for(var q=0;q<f.Args.AdditionalParams.length;q++){var c=new Array();c.push(f.Args.AdditionalParams[q].name);c.push(f.Args.AdditionalParams[q].value);w.push(c.join("="))}if(w!=null&&w.length>0){w="&"+w.join("&")}}var l=ticketManager.FrameTemplate.replace("{FrameID}",ticketManager.FrameID).replace("{CommandURL}",ticketManager.CommandURL).replace("{Action}",f.Args.Action).replace("{AdditionalParams}",w);if(typeof(logoutRedirecUrl)!="undefined"){l=l.replace("{ReturnURL}",escape(logoutRedirecUrl))}else{if(f.Args.ReturnURL){l=l.replace("{ReturnURL}",escape(f.Args.ReturnURL))}else{l=l.replace("{ReturnURL}",escape(ticketManager.ReturnURL))}}var v=document.createElement("div");v.style.cssText="position:absolute;top:0;left:144px;height:72px;width:640px;background:#fff";var m=document.createElement("div");m.style.cssText="position:absolute;top:477px;left:144px;height:45px;width:640px;background:#fff";var j=new Image();j.src=ticketManager.getStaticBase()+"i/best-tickets2.png";j.style.cssText="margin-top:165px; margin-left:144px;";var u=new Image();u.src=ticketManager.getStaticBase()+"i/ticket-loader.gif";u.style.cssText="position:absolute;top:343px;left:448px;";var d=document.createElement("div");d.appendChild(j);var e=document.createElement("div");e.setAttribute("id","afishaWidgetLoader");e.style.cssText="position:absolute; width:784px; height:522px; text-align:center; background:#bcbfc6 url("+ticketManager.getStaticBase()+"i/iframe-loading-bg.png) repeat-y";e.appendChild(v);e.appendChild(m);e.appendChild(d);e.appendChild(u);var b=document.createElement("div");b.appendChild(e);b.innerHTML+=l;b.setAttribute("id",ticketManager.FrameID);var t=document.createElement("div");t.setAttribute("id","afishaOverlay");t.style.cssText="position:fixed; top:0; left:0; z-index:9999; width:100%; height:100%; background: rgba(0,0,0, 0.44)";var k=document.getElementsByTagName("body")[0];k.style.cssText+=";overflow:hidden";k.appendChild(t);k.appendChild(b);break;case"setStyle":var n=document.getElementById("frame_"+ticketManager.FrameID);if(f.Args){for(var q in f.Args){n.style[q]=f.Args[q]}}n.style.display="block";if(typeof(f.Args.width)!="undefined"){n.style.left=(document.body.clientWidth-parseInt(f.Args.width))/2}if(typeof(f.Args.height)!="undefined"){n.style.top=(document.body.clientHeight-parseInt(f.Args.height))/2}break;case"getUrl":var n=document.getElementById("frame_"+ticketManager.FrameID);n.src=f.Args.URL+"#"+escape(location.href);break;case"redirect":var s="";if(location.href.indexOf("#")>-1){s=location.href.split("#")[1]}if(UrlRemoveHash(location.href)!=f.Args.RedirectURL){var g=f.Args.RedirectURL;if(s.length>0){g=g+"#"+s}location.replace(g)}else{var g=getUrlWithoutHash(f.Args.RedirectURL);if(s.length>0){g=g+"#"+s}location=g}break;case"refresh":location.reload();break;case"setCookie":if(f.Args.Expires){exdate=new Date();exdate.setDate(exdate.getDate()+1*f.Args.Expires);document.cookie=f.Args.Name+"="+escape(f.Args.Value)+((f.Args.Expires==null)?"":";expires="+exdate.toGMTString())+(ticketManager.CookieDomain?";domain="+ticketManager.CookieDomain:"")+";path=/"}else{document.cookie=f.Args.Name+"="+escape(f.Args.Value)+(ticketManager.CookieDomain?";domain="+ticketManager.CookieDomain:"")+";path=/"}break;case"hide":var a=document.getElementById(ticketManager.FrameID);if(a&&a.parentNode){a.parentNode.removeChild(a)}var h=document.getElementById("afishaOverlay");if(h&&h.parentNode){h.parentNode.removeChild(h)}break;case"package":for(var q in f.Args){ticketManager.Execute(f.Args[q])}break;case"open":ticketManager.openWidget(f.Args.key,f.Args.movieName,f.Args.cityName);break;case"cinemaSchedule":ticketManager.cinemaSchedule(f.Args.key,f.Args.cinemaID);break;case"close":document.getElementById(ticketManager.FrameID).style.display="none";ticketManager.removeOrderKeyParam();document.getElementById("afishaOverlay").style.display="none";ticketManager.removeOrderKeyParam();document.getElementsByTagName("body")[0].style.cssText=document.getElementsByTagName("body")[0].style.cssText.replace(/;?overflow(-[xy])?:\s*hidden/g,"");break}},removeOrderKeyParam:function(){var b=ticketManager.getUrlVar(ticketManager.orderKeyParam);if(b==null||b==""){return}var a=location.href;a=a.replace("?"+ticketManager.orderKeyParam+"="+b,"");a=a.replace("&"+ticketManager.orderKeyParam+"="+b,"");location.href=a},getUrlVars:function(){var d=[],c;var a=window.location.href.slice(window.location.href.indexOf("?")+1).split("&");for(var b=0;b<a.length;b++){c=a[b].split("=");d.push(c[0]);d[c[0]]=c[1]}return d},getUrlVar:function(a){return ticketManager.getUrlVars()[a]},getWidgetByUid:function(b){for(var a=0;a<ticketManager.widgets.length;a++){if(ticketManager.widgets[a].Uid==b){return ticketManager.widgets[a]}}return null},setMovieWidget:function(h,f,c,a,b,i,j){var e=ticketManager.getWidgetByUid(j);if(e.isContentAttached){return}e.isContentAttached=true;var d="widget"+j;var g=ticketManager.createWidgetFrame(d,b,i);e.parentNode.insertBefore(g,e);ticketManager.renderIframe(d,f)},setCinemaWidget:function(g,d,e,a,h,i){var b=ticketManager.getWidgetByUid(i);if(b.isContentAttached){return}b.isContentAttached=true;var c="widget"+i;var f=ticketManager.createWidgetFrame(c,a,h);b.parentNode.insertBefore(f,b);ticketManager.renderIframe(c,d)},renderIframe:function(a,d){for(var b=0;b<window.frames.length;b++){try{if(window.frames[b].frameElement.name==a){window.frames[b].frameElement.style.display="";window.frames[b].document.write(d);window.frames[b].document.close();break}}catch(c){}}},createWidgetFrame:function(c,d,b){var a=document.createElement("iframe");a.name=c;a.style.width=d+"px";a.style.height=b+"px";a.className=c;a.allowTransparency=true;a.frameBorder=0;a.style.border="none";a.scrolling="no";return a},movieSchedule:function(b,a){ticketManager.openWidget(ticketManager.getRichKey(),b,a)},openWidget:function(b,c,a){ticketManager.Execute({Name:"command",Args:{Action:"Widget",ReturnURL:"",AdditionalParams:[{name:"WidgetKey",value:b},{name:"name",value:encodeURIComponent(c).replace("'","")},{name:"cityName",value:encodeURIComponent(a).replace("'","")},{name:"url",value:encodeURIComponent(window.location.href)},{name:"title",value:encodeURIComponent(document.title)}]}});ticketManager.InitDialog("784px","522px");ticketManager.Execute({Name:"setStyle",Args:{width:"784px",height:"522px"}})},openWidgetV2:function(b,c,a){ticketManager.Execute({Name:"command",Args:{Action:"Widget",ReturnURL:"",AdditionalParams:[{name:"WidgetKey",value:b},{name:"name",value:encodeURIComponent(c).replace("'","")},{name:"cityName",value:encodeURIComponent(a).replace("'","")},{name:"url",value:encodeURIComponent(window.location.href)},{name:"title",value:encodeURIComponent(document.title)}]}});ticketManager.InitDialog("784px","522px");ticketManager.Execute({Name:"setStyle",Args:{width:"784px",height:"522px"}})},hallPlan:function(c,a,b){ticketManager.Execute({Name:"command",Args:{Action:"HallPlan",ReturnURL:"",AdditionalParams:[{name:"WidgetKey",value:ticketManager.getRichKey()},{name:"cinemaID",value:c},{name:"movieID",value:a},{name:"time",value:b}]}});ticketManager.InitDialog("784px","522px");ticketManager.Execute({Name:"setStyle",Args:{width:"784px",height:"522px"}})},hallPlanV2:function(b,a,c){ticketManager.Execute({Name:"command",Args:{Action:"HallPlanV2",ReturnURL:"",AdditionalParams:[{name:"WidgetKey",value:ticketManager.getRichKey()},{name:"cinemaObjectID",value:b},{name:"movieObjectID",value:a},{name:"time",value:c}]}});ticketManager.InitDialog("784px","522px");ticketManager.Execute({Name:"setStyle",Args:{width:"784px",height:"522px"}})},cinemaSchedule:function(a,b){ticketManager.Execute({Name:"command",Args:{Action:"CinemaSchedule",ReturnURL:"",AdditionalParams:[{name:"WidgetKey",value:a},{name:"cinemaID",value:b},{name:"url",value:encodeURIComponent(window.location.href)},{name:"title",value:encodeURIComponent(document.title)}]}});ticketManager.InitDialog("784px","522px");ticketManager.Execute({Name:"setStyle",Args:{width:"784px",height:"522px"}})},addEvent:function(c,a,b){if(typeof c.attachEvent!="undefined"){c.attachEvent("on"+a,b)}else{if(typeof c.addEventListener!="undefined"){c.addEventListener(a,b,false)}else{}}},getRichKey:function(){var a=document.getElementsByTagName("rb:rich");if(a.length>0){return a[0].getAttribute("key")}},sale:function(a){ticketManager.Execute({Name:"command",Args:{Action:"SaleComplete",ReturnURL:"",AdditionalParams:[{name:"OrderKey",value:a}]}});ticketManager.InitDialog("784px","522px");ticketManager.Execute({Name:"setStyle",Args:{width:"784px",height:"522px",display:"block"}})},load:function(){if(arguments.callee.done){return}arguments.callee.done=true;var b=document.createElement("div");b.innerHTML="";b.setAttribute("id","afishaWidgetContainer");b.innerHTML="";document.body.appendChild(b);ticketManager.updateWidgets();var c=ticketManager.getBaseDomain();ticketManager.FrameID="afishaWidgetContainer";ticketManager.CommandURL=c+"CrossDomainInteraction/DoCommand";ticketManager.ReturnURL=window.location.href;var a=ticketManager.getUrlVar(ticketManager.orderKeyParam);if(a==null||a==""){return}ticketManager.sale(a)},getTagsNames:function(){var e=new Array();var d=null;for(var b=0;b<arguments.length;b++){d=document.getElementsByTagName(arguments[b]);for(var c=0;c<d.length;c++){if(d[c].isScriptAttached){continue}e.push(d[c])}}return e},sortByWidgetID:function(b,a){var d=b.getAttribute("key");var c=a.getAttribute("key");if(d<c){return -1}if(d>c){return 1}return 0},globalWidgetUid:0,updateWidgets:function(){ticketManager.widgets=ticketManager.getTagsNames("rb:ticket","rb:movie","rb:cinema");ticketManager.widgets.sort(ticketManager.sortByWidgetID);var f=ticketManager.getBaseDomain();var b="";var e=ticketManager.buildWidgetHandlerUrl(f);var c="";for(var a=0;a<ticketManager.widgets.length;a++){var d=ticketManager.widgets[a];if(d.isScriptAttached){continue}d.isScriptAttached=true;var h=d.nodeName.toLowerCase();var g=d.getAttribute("key");d.Uid=ticketManager.globalWidgetUid++;if(c==""){c=g}b=ticketManager.addWidgetParams(g,c,d,d.Uid,b,e,ticketManager.getAddWidgetFunc(h));c=g}if(b.length>0){ticketManager.addWidgetScript(b,e)}},getAddWidgetFunc:function(a){if(a=="rb:ticket"||a=="rb:movie"){return ticketManager.addMovieWidgetParams}if(a=="rb:cinema"){return ticketManager.addCinemaWidgetParams}},addWidgetParams:function(h,c,e,g,b,f,d){var a=d(h,c,e,g,b);if((a+f).length<2000){return a}ticketManager.addWidgetScript(b,f);b="";return d(h,c,e,g,b)},addCinemaWidgetParams:function(f,c,b,e,d){var a=ticketManager.addParam("cinemaID",b.getAttribute("cinemaID"))+ticketManager.addParam("widgetIndex",e);if(d.length>0&&f==c){return d+"|"+a}return d+"@"+ticketManager.addParam("widgetkey",f)+a},addMovieWidgetParams:function(h,d,c,g,f){var e="";if(c.getAttribute("cityID")!=null&&c.getAttribute("cityID")!=""){e=ticketManager.addParam("cityID",c.getAttribute("cityID"))}var a="";if(c.getAttribute("movieID")!=null&&c.getAttribute("movieID")!=""){a=ticketManager.addParam("movieID",c.getAttribute("movieID"))}var b=ticketManager.addParam("name",c.getAttribute("movieName"))+a+e+ticketManager.addParam("cityName",c.getAttribute("cityName"))+ticketManager.addParam("widgetIndex",g);if(f.length>0&&h==d){return f+"|"+b}return f+"@"+ticketManager.addParam("widgetkey",h)+b},addParam:function(a,b){return"{"+a+"}"+encodeURIComponent(ticketManager.prepareParam(b))},prepareParam:function(a){if(a==null||typeof(a)!="string"){return a}return a.replace(new RegExp("[{]|[}]|[|]|[@]|[,]","g"),"")},addWidgetScript:function(b,c){var a=document.createElement("script");a.type="text/javascript";a.src=c+"&widgetParams="+b;document.body.appendChild(a)},buildWidgetHandlerUrl:function(a){return a+"widgethandler/v3/?url="+encodeURIComponent(window.location.href)+"&title="+encodeURIComponent(document.title)+"&version="+new Date().valueOf()},getCookie:function(b){var c,a,e,d=document.cookie.split(";");for(c=0;c<d.length;c++){a=d[c].substr(0,d[c].indexOf("="));e=d[c].substr(d[c].indexOf("=")+1);a=a.replace(/^\s+|\s+$/g,"");if(a==b){return unescape(e)}}return null},getBaseDomain: function() {return 'http://widget.kassa.rambler.ru/';},getStaticBase: function() {return 'http://s1.kassa.rl0.ru/1202201723/widget/';},logError:function(e,b,a){var c="description="+encodeURIComponent(e)+"&url="+encodeURIComponent(b)+"&line="+encodeURIComponent(a)+"&parentUrl="+encodeURIComponent(document.location.href)+"&userAgent="+encodeURIComponent(navigator.userAgent);var d=ticketManager.getBaseDomain();new Image().src=d+"CrossDomainInteraction/logError/?"+c},init:function(){try{if(window.addEventListener){window.addEventListener("error",function(d,c,b){ticketManager.logError(d,c,b)},false)}else{if(window.attachEvent){window.attachEvent("onerror",function(d,c,b){ticketManager.logError(d,c,b)})}else{window.onerror=ticketManager.logError}}}catch(a){}if(!document.attachEvent){ticketManager.load();return}window.attachEvent("onload",ticketManager.load)}};var ticketManager=new TicketManager();ticketManager.init();


