// TabViewSlot.js
var TabViewSlot=Class.create(VisualSlot,{'focus_on':function($what){this.tab_view.activate($what);},'handle_panel_update':function(event){if(hasattr(event,'memo')&&hasattr(event.memo,'panel')){var panel=event.memo.panel;if(panel.readAttribute('rel')){var updater=new Ajax.Updater(panel.readAttribute('id'),panel.readAttribute('rel'),{evalScripts:true});}}},'handle_tabview_state_change':function(event){event.stop();if(hasattr(event,'memo')&&hasattr(event.memo,'panel')){var panel=event.memo.panel;if(panel.hasClassName('panel')&&!panel.hasClassName('sub-panel')){if(typeof(getattr(panel,'identify',false))==typeof(function(){})){fire(this.id+':state:changed',{'focus_url':panel.identify()});}}}},'chastise':function($super){$super();var handler=this.handle_tabview_state_change.bindAsEventListener(this);this.target.observe('tabview:state:changed',handler);this.target.observe('tabview:panel:update',this.handle_panel_update.bindAsEventListener(this));this.tab_view=new TabView(this.target,{'ids':{'tab':'tab-','panel':''}},false);this.target.select('.panel').each(function($target){this.tab_view=new TabView($target,{'classNames':{'tab':'sub-tab','panel':'sub-panel','tabActive':'selected'}},false);});}});

// AjaxWrapper.js
var AjaxWrapper=Class.create({'handle_ajax_response':function(transport){var data=transport.responseText.evalJSON(true);if(!data||!hasattr(data,'status')){}
else{if(data.status=='success'){this.reset();this.focusFirstElement();}
var summary_target=this.select('.summary').first();if(summary_target){summary_target.update();if(hasattr(data,'message')){summary_target.update(data.message);}}
var errors_target=this.select('.errors').first();if(errors_target){errors_target.update();if(hasattr(data,'errors')){data.errors.each(function(error_message){errors_target.insert('<li class="error">'+error_message+'</li>');});}}}},'handle_ajax_submit':function(event){event.stop();var target=event.target;var url=greentv.globals.paths.url_root+target.readAttribute('action');var params=target.serialize(true);new Ajax.Request(url,{'parameters':params,'onComplete':this.handle_ajax_response.bind(target)});}});

// StickyChat.js
var StickyChat=Class.create(VisualSlot,{'__all__':['join','leave','post','verify','monitor'],'loaded':false,'activity_section_height':0,'attempts':0,'MAX_ATTEMPTS':2,'DELAY':0.5,'DEFAULT_CHANNEL':'Chat','default_channel_id':null,'active_channel':null,'channels':new Hash(),'draw_panels':new Hash(),'one_on_one_requests':new Array(),'templates':{'action_msg':new Template('<p class="para#{user_type} #{flag}">\
          <img src="/++resource++greentv/img/misc/small_user_icon.gif" />\
          <span class="by#{user_type}">\
            #{user}\
            #{action}\
          </span>\
        </p>'),'msg':new Template('<p class="para#{user_type} #{flag}">\
          <span class="at">\
            #{on}\
          </span>\
          <span class="by#{user_type}">\
            #{user}:\
          </span>\
          <span class="content">\
            #{content}\
          </span>\
        </p>'),'default_chat_room_button':new Template('<li id="ccb-#{id}">\
          <a id="ccb-open-#{id}" href="set_active" title="#{title}">\
            #{title}\
          </a>\
        </li>'),'active_chat_room_button':new Template('<li id="ccb-#{id}">\
          <a id="ccb-open-#{id}" href="set_active" title="#{title}">\
            #{title}\
          </a>\
          <a id="ccb-close-#{id}" href="close" title="Close #{title}">\
            [x]\
          </a>\
        </li>'),'chat_window':new Template('<div id="cw-#{id}" class="chat-window">\
          <div id="cw-live-#{id}" class="live">\
            <div id="cw-history-#{id}" class="history" style="border-bottom:1px solid #666666"></div>\
          </div>\
        </div>'),'chat_users':new Template('<ul id="chat-users-#{id}"></ul>'),'user':new Template('<li class="chat-user-#{id}">\
          <img src="/++resource++greentv/img/misc/small_user_icon.gif" />\
          #{display_name}\
        </li>'),'discussion':new Template('<li id="chat-od-#{id}">\
          <a href="set_active" title="#{title}">\
            #{title}\
          </a>\
        </li>')},'_ensure_two_digits':function(int_){if(int_<10){return'0'+int_;}
return int_;},'_encode_title_to_id':function(title){var encrypted=title.encrypt_to_safe_selector();return'chat-'+encrypted;},'_decode_id_to_title':function(id){return id.sub('chat-','').decrypt_from_safe_selector();},'_encode_msg':function(msg){return msg;},'_decode_msg':function(msg){return msg.activateLinks(true,'_blank');},'display_users':function(channel_id){var channel=this.channels.get(channel_id);var users=channel.get('users');var target=$('chat-users-'+channel_id);if(target){target.update();}
else{$('chat-users').insert(this.templates.chat_users.evaluate({'id':channel_id}));}
users.each(function(user){this.append_user(channel_id,user.key,user.value);}.bind(this));},'append_user':function(channel_id,user_id,user_display_name){var target=$('chat-users-'+channel_id);if(target){var encoded_user_id=this._encode_title_to_id(user_id);var exists_already=target.select('.chat-user-'+encoded_user_id).size();if(!exists_already){target.insert(this.templates.user.evaluate({'id':encoded_user_id,'display_name':user_display_name}));var user_element=target.select('.chat-user-'+encoded_user_id).first();var handler=this.handle_open_one_on_one.bindAsEventListener(this,user_id);user_element.observe('click',handler);}
else{warn('user exists already!');}}
else{warn('no such channel!');}},'remove_user':function(channel_id,user_id){var container=$('chat-users-'+channel_id);if(container){var encoded_user_id=this._encode_title_to_id(user_id);var target=container.select('.chat-user-'+encoded_user_id).first();if(target){target.stopObserving();target.remove();}
else{warn('no such user!');}}
else{warn('no such channel!');}},'remove_from_other_discussions':function(channel_id,channel_title){var target=$('chat-od-'+channel_id);if(target){target.stopObserving();target.remove();}},'add_to_other_discussions':function(channel_id,channel_title){var container=$('chat-other-discussions');var od_exists=$('chat-od-'+channel_id);var active_exists=$('ccb-'+channel_id);if(!(od_exists||active_exists)){container.insert(this.templates.discussion.evaluate({'id':channel_id,'title':channel_title}));$('chat-od-'+channel_id).observe('click',this.handle_open_room.bindAsEventListener(this,channel_title));}},'set_active_channel':function(channel_id){if(this.active_channel){$$('#cw-'+this.active_channel,'#chat-users-'+this.active_channel).invoke('hide');$$('#cw-'+channel_id,'#chat-users-'+channel_id).invoke('show');}
this.active_channel=channel_id;var channel=this.channels.get(channel_id);var title=channel.get('title');$('chat-heading').update(title);},'show_panel':function(panel_name){var panels=this.draw_panels;var show_panel,hide_panel;panels.keys().each(function(key){var panel=panels.get(key);if(panel_name==key){show_panel=panel;}
else{hide_panel=panel;}});hide_panel.hide();hide_panel.element.up().hide();show_panel.element.up().show();show_panel.slideIn();},'get_chat_history':function(channel_id){new Ajax.Request('@@get_chat_history.ajax',{'parameters':{'channel_id':channel_id},'onSuccess':function(transport){var response=transport.responseText;var target=$('cw-history-'+channel_id);var posts=response.evalJSON(true);var control=new Date();var c_month=control.getMonth();var c_day=control.getDate();target.update('');log(posts);posts.each(function(post){var on;var date=new Date();date.setTime(post.on);var month=date.getMonth();var day=date.getDate();var h=date.getHours();var m=date.getMinutes();on=h.toTwoDigitString()+':'+m.toTwoDigitString();if(month!=c_month||day!=c_day){on=day.toTwoDigitString()+'/'+month.toTwoDigitString()+' '+on;}
this.post(Object.extend(post,{'target_window':'history','on':on,'timestamp':post.on}));}.bind(this));}.bind(this),'onFailure':function(transport){warn('failed to get chat history for '+channel_title+'\n'+transport.responseText);}});},'open':function(channel_title){var channel_id=this._encode_title_to_id(channel_title);var exists_already=this.channels.get(channel_id,false);if(exists_already){this.set_active_channel(channel_id);}
else{var params={};if(channel_title==this.DEFAULT_CHANNEL){this.default_channel_id=channel_id;}
else{params['slot_id']=channel_id;}
var slot=new ChatSlot(channel_id,channel_title);new Ajax.Request('@@get_online_users.ajax',{'parameters':params,'onSuccess':function(transport){var response=transport.responseText;var user_data=response.evalJSON(true);var info=new Hash();var users=new Hash();user_data.each(function(user){users.set(user[0],user[1]);});info.set('users',users);info.set('title',channel_title);info.set('slot',slot);this.channels.set(channel_id,info);var data={'id':channel_id,'title':channel_title};if(channel_id==this.default_channel_id){$('chat-active-rooms').insert(this.templates.default_chat_room_button.evaluate(data));}
else{$('chat-active-rooms').insert(this.templates.active_chat_room_button.evaluate(data));}
$('chat-windows').insert(this.templates.chat_window.evaluate(data));var live_scroller=new Scroller('cw-live-'+channel_id,{'duration':250});var history_scroller=new Scroller('cw-history-'+channel_id,{'duration':250});this.remove_from_other_discussions(channel_id,channel_title);this.display_users(channel_id);this.set_active_channel(channel_id);$('ccb-open-'+channel_id).observe('click',this.handle_set_active_channel.bindAsEventListener(this,channel_id));if(channel_id!=this.default_channel_id){$('ccb-close-'+channel_id).observe('click',this.handle_close_room.bindAsEventListener(this,channel_title));}
observe(channel_id+':requested',this.handle_slot_event);this.get_chat_history(channel_id);if(channel_id==this.default_channel_id){new Ajax.Request('@@get_current_discussions.ajax',{'onSuccess':function(transport){var response=transport.responseText;var target=$('chat-other-discussions');var channels=response.evalJSON(true);channels.each(function(channel_id){var channel_title=this._decode_id_to_title(channel_id);this.add_to_other_discussions(channel_id,channel_title);}.bind(this));fire('chat:loaded',{});}.bind(this),'onFailure':function(transport){warn('failed to get chat history for '+channel_title+'\n'+transport.responseText);}});}
else{this.handle_resize();}}.bind(this),'onFailure':function(transport){if(this.attempts<this.MAX_ATTEMPTS){this.attempts+=1;this.open(channel_id);}
else{this.attempts=0;warn(transport.responseText);}}.bind(this)});}},'close':function(channel_title){var channel_id=this._encode_title_to_id(channel_title);var channel=this.channels.get(channel_id);var slot=channel.get('slot');slot.unregister();this.target.select('#ccb-open-'+channel_id,'#ccb-close-'+channel_id).invoke('stopObserving');stopObserving(channel_id+':requested');this.target.select('#ccb-'+channel_id,'#cw-'+channel_id,'#chat-users-'+channel_id).invoke('remove');this.add_to_other_discussions(channel_id,channel_title);if(channel_id==this.active_channel){this.set_active_channel(this.default_channel_id);}
this.channels.unset(channel_id);},'join':function(params){var keys=Object.keys(params);if(keys.include('user')&&typeof(params.user)==typeof([])&&params.user.length==2){var user_id=params.user[0];var user_display_name=params.user[1];var channel_ids;if(keys.include('chat_channels')){var chat_channels=params.chat_channels;channel_ids=this.channels.keys().findAll(function(key){return chat_channels.include(key);});}
else{channel_ids=[this.default_channel_id];}
channel_ids.each(function(channel_id){var channel=this.channels.get(channel_id);var users=channel.get('users');if(!users.keys().include(user_id)){users.set(user_id,user_display_name);var target=$('cw-live-'+channel_id);if(target){target.insert(this.templates.action_msg.evaluate({'user':user_display_name,'action':'joined'}));target.scroller.down();}
this.append_user(channel_id,user_id,user_display_name);}}.bind(this));}},'leave':function(params){var keys=Object.keys(params);if(keys.include('user')&&typeof(params.user)==typeof([])&&params.user.length==2){var user_id=params.user[0];var user_display_name=params.user[1];var channel_ids;if(keys.include('chat_channels')){var chat_channels=params.chat_channels;channel_ids=this.channels.keys().findAll(function(key){return chat_channels.include(key);});}
else{channel_ids=this.channels.keys();}
channel_ids.each(function(channel_id){var channel=this.channels.get(channel_id);var users=channel.get('users');if(users.keys().include(user_id)){users.unset(user_id);var target=$('cw-live-'+channel_id);if(target){target.insert(this.templates.action_msg.evaluate({'user':user_display_name,'action':'left'}));target.scroller.down();}
this.remove_user(channel_id,user_id);}}.bind(this));}},'post':function(params){var keys=Object.keys(params);if(keys.include('on')&&keys.include('user')&&keys.include('content')){var on=params.on;var user=params.user;var data={'content':this._decode_msg(params.content)};if(data['content'].indexOf(this.username)>-1){data['flag']='mentioned';}
var target_window='live';if(keys.include('target_window')){target_window=params.target_window;}
if(typeof(on)==typeof(0)){var date=new Date();date.setTime(on);var h=date.getHours();var m=date.getMinutes();data['on']=h.toTwoDigitString()+':'+m.toTwoDigitString();data['timestamp']=on+'';}
else{data['on']=on;data['timestamp']=params.timestamp+'';}
if(typeof(user)==typeof([])&&user.length==2){data['user']=user[1];if(data['user']==this.username){data['user_type']='-this-user';}}
else{warn('invalid user for chat post: '+user);}
var channel_id;if(keys.include('channel')){channel_id=params.channel;}
else{channel_id=this.default_channel_id;}
var target=$('cw-'+target_window+'-'+channel_id);if(target){if(data['content'].startsWith('/me ')){data['action']=data['content'].sub('/me ','');target.insert(this.templates.action_msg.evaluate(data));}
else{target.insert(this.templates.msg.evaluate(data));fire('chat:post:added',{'id':data.timestamp,'channel':channel_id});}
target.scroller.down();log('finished');target.childElements().last().highlight();}
else{warn('no channel for: '+channel_id);}}
else{warn('invalid event: '+keys);}},'stick':function(params){},'send':function(raw_msg){var content=this._encode_msg(raw_msg);var date=new Date();var timestamp=date.getTime();var slots=[this.active_channel];var params={'content':content,'on':timestamp,'channel':this.active_channel};fire('broadcast:requested',{'name':'slotevent','method':'post','slots':slots,'params':params});},'monitor':function(params){var keys=Object.keys(params);if(keys.include('action')&&keys.include('channels')){var action=params.action;params.channels.each(function(channel_id){var channel_title=this._decode_id_to_title(channel_id);if(action=='open'){this.add_to_other_discussions(channel_id,channel_title);}
else if(action=='close'){this.remove_from_other_discussions(channel_id,channel_title);}}.bind(this));}
else{warn('Invalid params: '+keys);}},'verify':function(params){var keys=Object.keys(params);if(keys.include('initiating_user')&&keys.include('target_user')&&keys.include('channel_title')){var channel_title=params.channel_title;var channel_id=this._encode_title_to_id(channel_title);var target_user=params.target_user[0];if(this.channels.keys().include(channel_id)){if(this.one_on_one_requests.include(target_user)){this.set_active_channel(channel_id);this.one_on_one_requests=this.one_on_one_requests.without(target_user);}}
else{if(this.one_on_one_requests.include(target_user)){this.open(channel_title);this.one_on_one_requests=this.one_on_one_requests.without(target_user);}
else{$('chat-messages').insert(this.templates.verify_request.evaluate({'id':channel_id,'name':params.initiating_user[1]}));var container=$('chat-vr-'+channel_id);var accept=container.select('a.accept').first();accept.observe('click',this.handle_accept.bindAsEventListener(this,channel_id,channel_title));var refuse=container.select('a.refuse').first();refuse.observe('click',this.handle_refuse.bindAsEventListener(this,channel_id));}}}},'handle_login_logout':function(event){var keys=Object.keys(event);if(keys.include('memo')){var memo=event.memo;keys=Object.keys(memo);if(keys.include('params')&&keys.include('action')){if(memo.action=='login'){this.join(memo.params);}
else if(memo.action=='logout'){this.leave(memo.params);}}}},'handle_submit':function(event){event.stop();var input=$('chat-input');var content=input.getValue();input.clear();this.send(content);},'handle_input_keyup':function(event){if(event.keyCode==13){this.handle_submit(event);}},'handle_show_users':function(event){event.stop();var target=$('chat-show-users');target.hide();target=$('chat-change-room');target.show();this.show_panel('users');},'handle_change_room':function(event){event.stop();var target=$('chat-change-room');target.hide();target=$('chat-show-users');target.show();this.show_panel('rooms');},'handle_close_room':function(event,channel_title){event.stop();this.close(channel_title);},'handle_open_room':function(event,channel_title){event.stop();this.open(channel_title);},'handle_open_discussion':function(event){var channel_title=event.memo['title'];this.open(channel_title);fire('broadcast:requested',{'name':'slotevent','slots':['activity-viewer'],'method':'display','params':{'action':'discussed','subject':['video/'+event.memo['id'],channel_title]}});},'handle_set_active_channel':function(event,channel_id){event.stop();this.set_active_channel(channel_id);},'handle_open_one_on_one':function(event,user_id){if(!this.one_on_one_requests.include(user_id)){this.one_on_one_requests.push(user_id);}
fire('broadcast:requested',{'name':'chatrequest','target':user_id});},'handle_accept':function(event,channel_id,channel_title){this.handle_refuse(event,channel_id);this.open(channel_title);},'handle_refuse':function(event,channel_id){event.stop();var container=$('chat-vr-'+channel_id);container.select('a.accept','a.refuse').invoke('stopObserving');container.remove();},'handle_loaded':function(event){this.loaded=true;if(this.activity_section_height){this.handle_resize();}},'handle_resize':function(event){if(event){this.activity_section_height=event.memo.activity_section_height;}
if(this.loaded){this.target.setStyle({'height':this.activity_section_height+'px'});var chat_window_height=this.activity_section_height-this.chat_heading_bar.getHeight()-this.chat_messages.getHeight()-this.chat_form_container.getHeight()-10;if(Prototype.Browser.IE){chat_window_height+=this.chat_form_container.getHeight();chat_window_height-=this.chat_heading_bar.getHeight();}
var cwh_style={'height':chat_window_height+'px'};this.target.select('#chat-windows .live').invoke('setStyle',cwh_style);this.chat_drawer_container.setStyle(cwh_style);var chat_header_bar_height=this.chat_drawer_header_bar.getHeight();this.chat_form_container.setStyle({'height':chat_header_bar_height+'px'})
var chat_bottom_button_height=this.chat_drawer_bottom_button.getHeight();var chat_drawer_height=chat_window_height-chat_header_bar_height-chat_bottom_button_height;this.chat_drawers.invoke('setStyle',{'height':chat_drawer_height+'px'});this.rewidth_drawers();}},'rewidth_drawers':function(){var chat_drawer_width=this.chat_drawer_bottom_button.getWidth();this.draw_panels.each(function(pair){var panel=pair.value;var is_open=false;if(panel.wrapper.offsetWidth>0){is_open=true;}
panel.element.up().setStyle({'width':chat_drawer_width+'px'});if(is_open){panel.show();}
else{panel.hide();}});},'show_any_neccessary_scrollbars':function(params){var windows=$('chat-windows');if(!windows.visible()){windows.show();}
windows.select('.live').each(function(target){target.setStyle({'overflowX':'hidden','overflowY':'auto'});target.scroller.down();});$('chat-drawer-container').select('.chat-drawer').each(function(target){if(target.getWidth()){target.setStyle({'overflowX':'hidden','overflowY':'auto'});}});},'hide_all_scrollbars':function(params){log('StickyChat.hide_all_scrollbars');$('chat-windows').select('.live').each(function(target){target.setStyle({'overflowX':'hidden','overflowY':'hidden'});});$('chat-drawer-container').select('.chat-drawer').invoke('setStyle',{'overflowX':'hidden','overflowY':'hidden'});},'chastise':function($super){var target=$('chat-messages');this.templates['verify_request']=new Template('<div id="chat-vr-#{id}">\
          <p>\
            #{name} '+target.readAttribute('msg')+'\
          </p>\
          <span>\
            <a class="accept" href="accept" title="'+target.readAttribute('accept')+'">\
              '+target.readAttribute('accept')+'\
            </a>\
          </span>\
          <span>\
            <a class="refuse" href="refuse" title="'+target.readAttribute('refuse')+'">\
              '+target.readAttribute('refuse')+'\
            </a>\
          </span>\
        </div>');$super();this.chat_heading_bar=$('chat-heading-bar');this.chat_messages=$('chat-messages');this.chat_form_container=$('chat-form-container');this.chat_drawer_container=$('chat-drawer-container');this.chat_drawers=this.chat_drawer_container.select('.chat-drawer');this.chat_drawer_header_bar=$('chat-drawer-header-bar');this.chat_drawer_bottom_button=$('chat-drawer-bottom-button');var input=new SearchInput('chat-input','',true);$('chat-form').observe('submit',this.handle_submit.bindAsEventListener(this));if(Prototype.Browser.IE){$('chat-input').observe('keyup',this.handle_input_keyup.bindAsEventListener(this));}
var transition=Fx.Transitions.expoInOut;var slider=new HackedDrawerSlider('chat-user-container',{'mode':'horizontal','transition':transition});slider.show();this.draw_panels.set('users',slider);slider=new HackedDrawerSlider('chat-rooms',{'mode':'horizontal','transition':transition});slider.hide();slider.element.up().hide();this.draw_panels.set('rooms',slider);$('chat-show-users').observe('click',this.handle_show_users.bindAsEventListener(this));$('chat-change-room').observe('click',this.handle_change_room.bindAsEventListener(this));},'initialize':function($super,target,methods){this.username=greentv.globals.user.id;var handle_login_logout=this.handle_login_logout.bindAsEventListener(this);observe('user:loggedin',handle_login_logout);observe('user:loggedout',handle_login_logout);observe('discussion:requested',this.handle_open_discussion.bindAsEventListener(this));observe('activity:resized',this.handle_resize.bindAsEventListener(this));observe('chat:loaded',this.handle_loaded.bindAsEventListener(this));this.open(this.DEFAULT_CHANNEL);$super(target,methods);}});

// GuidedChat.js
var GuidedChat=Class.create(StickyChat,{'handle_open_profile':function(event,user_id){log('Open profile for: '+user_id);},'_handle_resize':function(){fire('watch:called',{'method':'resize_accordion'});},'start_guided_session':function(target,channel_title){log('start_guided_session: '+channel_title);this.open(channel_title);$('activity').insert({'bottom':this.templates.guide_notice});var close_session_link=$$('#activity .close-session').first();var leave_session_handler=this.handle_leave_guided_session.bindAsEventListener(this,channel_title,target);close_session_link.observe('click',leave_session_handler);fire('player:guiding:started',{'guid':this._encode_title_to_id(channel_title)});this._handle_resize();},'stop_guided_session':function(channel_title){log('stop_guided_session: '+channel_title);fire('player:guiding:stopped',{'guid':this._encode_title_to_id(channel_title)});$$('.close-session').first().stopObserving();$('guide-notice').remove();this._handle_resize();this.close(channel_title);},'receive_verify_guided_session':function(params){log('receive_verify_guided_session');var keys=Object.keys(params);if(keys.include('initiating_user')&&keys.include('target_user')&&keys.include('channel_title')){var channel_title=params.channel_title;var channel_id=this._encode_title_to_id(channel_title);var target_user=params.target_user[0];if(this.channels.keys().include(channel_id)){if(this.one_on_one_requests.include(target_user)){this.set_active_channel(channel_id);this.one_on_one_requests=this.one_on_one_requests.without(target_user);}}
else{if(this.one_on_one_requests.include(target_user)){this.one_on_one_requests=this.one_on_one_requests.without(target_user);}
else{$('chat-messages').insert(this.templates.verify_guide_request.evaluate({'id':channel_id,'name':params.initiating_user[1]}));log($('chat-vr-'+channel_id));var container=$('chat-vr-'+channel_id);var accept=container.select('a.accept').first();accept.observe('click',this.handle_accept_guided_session.bindAsEventListener(this,params.initiating_user[0],channel_id,channel_title));var refuse=container.select('a.refuse').first();refuse.observe('click',this.handle_refuse_guided_session.bindAsEventListener(this,channel_id));}}}},'receive_accept_guided_session':function(params){log('receive_accept_guided_session');var keys=Object.keys(params);if(keys.include('initiating_user')&&keys.include('target_user')&&keys.include('channel_title')){this.start_guided_session(params.target_user,params.channel_title);}},'receive_leave_guided_session':function(params){log('receive_leave_guided_session');var keys=Object.keys(params);if(keys.include('channel_title')){this.stop_guided_session(params.channel_title);}},'handle_leave_guided_session':function(event,channel_title,target){log('handle_leave_guided_session with '+target[0]);var channel_id=this._encode_title_to_id(channel_title);if(this.channels.get(channel_id)){fire('broadcast:requested',{'name':'guideevent','action':'leave_guided_session','target':target[0]});}},'handle_accept_guided_session':function(event,target_user,channel_id,channel_title){log('handle_accept_guided_session');this.handle_refuse_guided_session(event,channel_id);fire('broadcast:requested',{'name':'guideevent','action':'accept_guided_session','target':target_user});},'handle_refuse_guided_session':function(event,channel_id){log('handle_refuse_guided_session');event.stop();var container=$('chat-vr-'+channel_id);container.select('a.accept','a.refuse').invoke('stopObserving');container.remove();},'handle_request_guided_session':function(event,user_id){log('handle_request_guided_session');if(!this.one_on_one_requests.include(user_id)){this.one_on_one_requests.push(user_id);}
fire('broadcast:requested',{'name':'guideevent','action':'verify_guided_session','target':user_id});},'append_user':function(channel_id,user_id,user_display_name){var target=$('chat-users-'+channel_id);if(target){var encoded_user_id=this._encode_title_to_id(user_id);var exists_already=target.select('.chat-user-'+encoded_user_id).size();if(!exists_already){target.insert(this.templates.user.evaluate({'id':encoded_user_id,'display_name':user_display_name}));var pm=target.select('.chat-user-'+encoded_user_id+' .user-pm').first();var profile=target.select('.chat-user-'+encoded_user_id+' .user-profile').first();var guide=target.select('.chat-user-'+encoded_user_id+' .user-guide').first();pm.observe('click',this.handle_open_one_on_one.bindAsEventListener(this,user_id));profile.observe('click',this.handle_open_profile.bindAsEventListener(this,user_id));guide.observe('click',this.handle_request_guided_session.bindAsEventListener(this,user_id));}
else{warn('user exists already!');}}
else{warn('no such channel!');}},'remove_user':function(channel_id,user_id){var container=$('chat-users-'+channel_id);if(container){var encoded_user_id=this._encode_title_to_id(user_id);var target=container.select('.chat-user-'+encoded_user_id).first();if(target){target.stopObserving();target.remove();}
else{warn('no such user!');}}
else{warn('no such channel!');}},'initialize':function($super,target,methods,$username){$super(target,methods,$username);this.__all__.push('receive_verify_guided_session');this.__all__.push('receive_accept_guided_session');this.__all__.push('receive_leave_guided_session');this.templates.user=new Template('<li class="chat-user-#{id}">\
          <img src="/++resource++greentv/img/misc/pm.gif" class="user-pm" alt="Start One-to-One chat with User" title="Start One-to-One chat with User" /><img src="/++resource++greentv/img/misc/profile.gif" class="user-profile" alt="User Profile" title="User Profile" /><img src="/++resource++greentv/img/misc/guide.gif" class="user-guide" alt="Watch what I\'m Watching" title="Watch what I\'m Watching" />\
          #{display_name}\
        </li>');this.templates.guide_notice='<div id="guide-notice" style="height:30px;">\
          <img src="/++resource++greentv/img/misc/warning_box_right.gif" style="float:right" />\
          <img src="/++resource++greentv/img/misc/close_session.gif" class="close-session" alt="Close Guided Session" style="float:right; margin:6px 5px 0px 0px" />\
          <img src="/++resource++greentv/img/misc/warning_box_left.gif" style="float:left" />\
          <div style="border:3px solid #cb3a36; height:100%; border-left:0px; border-right:0px; margin:0px 6px;">\
            <img src="/++resource++greentv/img/misc/warning_small.gif" alt="Warning" style="margin:3px 0px 0px 5px" />\
            You are in a Guided Session\
          </div>\
        </div>';this.templates.msg=new Template('<p class="para#{user_type} #{flag} #{timestamp}">\
          <span class="at">\
            #{on}\
          </span>\
          <span class="by#{user_type}">\
            #{user}:\
          </span>\
          <span class="content">\
            #{content}\
          </span>\
        </p>');var messages=$('chat-messages');this.templates.verify_guide_request=new Template('<div id="chat-vr-#{id}">\
          <p>\
            #{name} '+messages.readAttribute('gsmsg')+'\
          </p>\
          <span>\
            <a class="accept" href="accept" title="'+messages.readAttribute('accept')+'">\
              '+messages.readAttribute('accept')+'\
            </a>\
          </span>\
          <span>\
            <a class="refuse" href="refuse" title="'+messages.readAttribute('refuse')+'">\
              '+messages.readAttribute('refuse')+'\
            </a>\
          </span>\
        </div>');}});

// WatchSlot.js
var WatchSlot=Class.create(VisualSlot,{'breadcrumb':new Template('<span class="breadcrumb">\
        <a href="#{url}" title="#{label}">\
          #{label}\
        </a>\
      </span>'),'final_breadcrumb':new Template('<span class="final breadcrumb">\
        #{label}\
      </span>'),'accordion':null,'sections':new Hash({'activity':0,'connections':1,'chat':2}),'resized_before':false,'_get_activity_margin':function(){var margin=0;var elements=this.activity.childElements();elements.reverse();elements=elements.without(this.activity.down('div#activity-messages'),this.activity.down('div.accordion'));log(elements);elements.each(function(element){margin+=element.getHeight();margin+=3;});return margin;},'switch_focus_to_connections_viewer_if_appropriate':function(params){if(this.accordion.previousClick==0){this.focus_on('connections');}},'focus_on':function($id){var n=this.sections.get($id);if(n!=undefined){this.accordion.showThisHideOpen(n);var target_label=$($id+'-bar').select('.section-head-label').first();this.section_head_labels.each(function(target){if(target==target_label){if(!target.hasClassName('selected')){target.addClassName('selected');}}
else{if(target.hasClassName('selected')){target.removeClassName('selected');}}});}},'update_breadcrumbs':function(params){var breadcrumbs=params.focus;var target=this.breadcrumbs;target.update();var stub;var crumb;var url='';breadcrumbs.each(function(d,i){var type=d['type'];var value=d['id'];var label=d['title'].toTitleCase(true);if(i==0){stub='';url=value;}
else{stub=' / ';url=url+'/'+value;}
if(i<breadcrumbs.length-1){crumb=stub+this.breadcrumb.evaluate({'url':url,'label':label});}
else{crumb=stub+this.final_breadcrumb.evaluate({'label':label});}
target.insert(crumb);}.bind(this));},'handle_breadcrumb_click':function(event){event.stop();var target=event.findElement('a');if(target){var url=target.readAttribute('href');url=url.sub(greentv.globals.paths.url_root,'');if(url!='home'&&url!='home/channels'){url=url.sub('home/channels/','');}
fire('player:state:changed',{'option_type':'update_listings','listings_url':url});}
fire('nav:state:changed',{'focus_url':'watch'});},'handle_accordion_state_change':function(event){log('WatchSlot.accordion_state_change');log(event);event.stop();var i=event.memo.index;if(i!=1&&!greentv.globals.user.is_authenticated){fire('login:required',{'action':'not_authorised'});}
var activity_sections=this.activity_sections;var label=this.sections.each(function(section,section_index){var activity_section=activity_sections[section_index];if(section.value==i){if(Prototype.Browser.IE){activity_section.setStyle('position:relative');}
if(section.value<2){fire(section.key+'-viewer:called',{'method':'show_any_neccessary_scrollbars'});}
else{fire(section.key+':called',{'method':'show_any_neccessary_scrollbars'});}
fire('watch:state:changed',{'focus_url':section.key});}
else{if(Prototype.Browser.IE){activity_section.setStyle('position:absolute');}
if(section.value<2){fire(section.key+'-viewer:called',{'method':'hide_all_scrollbars'});}
else{fire(section.key+':called',{'method':'hide_all_scrollbars'});}}});},'handle_resize':function(event){if(!hasattr(event,'memo')||!hasattr(event.memo,'activity')){warn('@@Watch Slot - invalid resize event');}
var dims=event.memo;this.activity.setStyle(dims.activity);this.resize_accordion({'player_height':dims.player.height});if(!this.resized_before){this.resized_before=true;this.resize_accordion.bind(this).delay(2);}},'resize_accordion':function(params){log('WatchSlot.resize_accordion');var player_height=false;if(params){player_height=getattr(params,'player_height',false);}
if(!player_height){player_height=this.player.getHeight();}
var combined_activity_heads_height=0;this.activity_heads.each(function(target){combined_activity_heads_height+=target.getHeight();});var activity_section_height=parseInt(player_height)-combined_activity_heads_height-8;activity_section_height-=this._get_activity_margin();fire('activity:resized',{'activity_section_height':activity_section_height});this.accordion.handleResize({});},'chastise':function($super){this.player=$('player');this.activity=$('activity');this.breadcrumbs=$('breadcrumbs');this.activity_heads=this.target.select('#activity > .accordion > .section-head');this.activity_sections=this.target.select('#activity > .accordion > .section');this.section_head_labels=this.target.select('.section-head-label');this.reveal(this.activity);this.accordion=new Accordion(this.activity_heads,this.activity_sections,{'opacity':false});if(Prototype.Browser.IE){this.activity_sections.slice(1).invoke('setStyle','position:absolute');}
this.activity.observe('accordion:state:changed',this.handle_accordion_state_change.bindAsEventListener(this));this.breadcrumbs.observe('click',this.handle_breadcrumb_click.bindAsEventListener(this));$super();},'initialize':function($super,target,methods){var ms=greentv.globals.message_strings;this.home_label=ms['home'];this.channels_label=ms['channels'];observe('window:resized',this.handle_resize.bindAsEventListener(this));$super(target,methods);}});

// greentv.js
var greentv={'globals':{},'get_globals':function(key){if(key&&hasattr(this.globals,key)){return this.globals[key];}
else{return this.globals;}},'get_screen':function(){return screen;},'get_browser':function(){return Prototype.Browser;}};

// EngageSlot.js
var EngageSlot=Class.create(TabViewSlot,new AjaxWrapper(),{'video':null,'email_video':function(params){if(hasattr(params,'id')&&hasattr(params,'title')){this.video=params;var title=this.email_form.select('.video-title').first();title.update(params.title);var hidden_input=$('email-video-id');hidden_input.setAttribute('value',params.id);this.email_form.show();}
else{warn('EngageSlot.email_video got invalid params');}},'handle_listings_requested':function(event){event.stop();fire('player:state:changed',{'option_type':'update_listings','listings_url':''});},'handle_display_login_join_panel':function(params){if(params&&hasattr(params,'action')){this.not_authorised_message.hide();switch(params.action){case'login':this.login_form_input.focus.delay(1);break;case'signup':this.signup_form_input.focus.delay(1.5);break;case'not_authorised':this.not_authorised_message.show();this.login_form_input.focus.delay(1.5);break;}}},'handle_login':function(event){event.stop();this.login_form_errors.hide();new Ajax.Request('@@login.ajax',{'parameters':this.login_form.serialize(true),'onSuccess':function(){window.location.reload(true);},'on401':function(){this.login_form_errors.show();}.bind(this)});},'handle_signup':function(event){event.stop();this.signup_form_errors.update();this.signup_form.select('.asterix').invoke('hide');new Ajax.Request('@@signup.ajax',{'parameters':this.signup_form.serialize(true),'onComplete':function(transport){var response=transport.responseText;var data=response.evalJSON(true);if(data&&hasattr(data,'status')){if(data.status=='success'){$('signup-success-message').show();this.signup_form_container.hide();}
else{this.signup_form_errors.show();this.signup_form_errors.update(data.message);data.fieldnames.each(function(fieldname){$('signup-form-'+fieldname+'-asterix').show();});}}
log('***');log(data);}.bind(this)});},'chastise':function($super){$super();this.invite_form=$('invite-form');this.email_form=$('email-form');var handle_ajax=this.handle_ajax_submit.bindAsEventListener(this);if(this.invite_form){this.invite_form.observe('submit',handle_ajax);}
if(this.email_form){this.email_form.observe('submit',handle_ajax);this.email_form.hide();}
this.not_authorised_message=$('not-authorised-message');this.login_form=$('login-form');this.login_form_input=$('login-form-login');this.login_form_errors=$('login-form-errors');this.signup_form=$('signup-form');this.signup_form_input=$('signup-form-login');this.signup_form_errors=$('signup-form-errors');this.signup_form_container=$('signup-form-container');if(this.login_form){this.login_form.observe('submit',this.handle_login.bindAsEventListener(this));}
if(this.signup_form){this.signup_form.observe('submit',this.handle_signup.bindAsEventListener(this));}
this.target.select('a.browse-videos').invoke('observe','click',this.handle_listings_requested.bindAsEventListener(this));},'initialize':function($super,target){$super(target);}});

// ChatSlot.js
var ChatSlot=Class.create({'register':function(){fire('slot:registered',this);},'unregister':function(){fire('slot:unregistered',this);},'get_state':function(){return null;},'initialize':function(id,title){this.id=id;this.register();}});

// initialize.js
observe('dom:loaded',function(){var client=new Client('root');});

// ConnectionsViewer.js
var ConnectionsViewer=Class.create(VisualSlot,{'flag':'odd','scroller':null,'current_focus':'','connections':new Hash(),'msg':new Template('<li class="connection #{odd_or_even}">\
        <img src="/++resource++greentv/img/misc/small_user_icon.gif" />\
        <span class="by">\
          #{user}\
        </span>\
        <br />\
        <span class="action">\
          #{action_label}:\
        </span>\
        <div class="connection-details">\
          <a href="#{url}"\
              title="#{open_label} #{title}"\
              target="_blank">\
            #{title}\
          </a>\
          <div class="connection-description">\
            #{description}\
          </div>\
        </div>\
        <span class="subject">\
          <a href="#{focus_url}"\
              title="#{play_label} #{subject_title}"\
              class="connection-video-link">\
            #{to_label}:\
            #{subject_title}\
          </a>\
        </span>\
      </li>'),'focus':function(params){var keys=Object.keys(params);if(keys.include('video')&&keys.include('connections')){if(typeof(params.connections)==typeof(new Hash())){this.connections=params.connections;var video_data=params.video;if(this.current_focus){stopObserving(this.current_focus.video_id+'connection:triggered');}
observe(video_data.video_id+'connection:triggered',this.handle_triggered_connections);this.target.update();this.current_focus=video_data;}
else{warn('Invalid connections - must be a Hash: '+typeof(params.connections));}}
else{warn('Invalid - need "video" in params: '+keys);}},'insert':function(msg){this.target.insert(msg);this.target.scroller.down();},'write_connections':function(event){var write=this.write_connection.bind(this);var timecodes=event.memo.timecodes;timecodes.each(function(t){var connections=this.connections.get(t);if(connections){connections.each(write);}
else{warn('No connections: '+t+' :(')}}.bind(this));},'write_connection':function(connection){var keys=Object.keys(connection);if(keys.include('user')&&keys.include('url')&&keys.include('description')&&keys.include('title')){var flag='odd';var all_connections=this.target.childElements();var last_connection=all_connections.last();if(last_connection&&last_connection.hasClassName('odd')){flag='even';}
var data=Object.extend(connection,{'action_label':this.connected_label,'to_label':this.to_label,'play_label':this.play_label,'open_label':this.open_label,'focus_url':'video/'+this.current_focus.video_id,'subject_title':this.current_focus.video_title,'odd_or_even':flag});this.insert(this.msg.evaluate(data));}
else{warn('Invalid - connection must include title, url & description: '+keys);}},'show_any_neccessary_scrollbars':function(params){this.target.setStyle({'overflow':'auto'});this.target.scroller.down();},'hide_all_scrollbars':function(params){this.target.setStyle({'overflow':'hidden'});},'handle_click':function(event){var connection=event.findElement('li.connection');var connection_details_div=event.findElement('div.connection-details');if(connection_details_div){log('its a connection link');var connection_link=connection_details_div.down();log(connection_link.readAttribute('href'));fire('broadcast:requested',{'name':'slotevent','slots':['activity-viewer'],'method':'display','params':{'action':'connected','subject':['video/'+this.current_focus.video_id,this.current_focus.video_title],'external_url':connection_link.readAttribute('href'),'external_title':connection_link.readAttribute('title')}});}
else{var video_link=event.findElement('a.connection-video-link');if(video_link){event.stop();var focus_url=video_link.readAttribute('href');if(focus_url){focus_url=focus_url.sub(greentv.globals.paths.url_root,'');var parts=focus_url.split('/');if(parts.length==2&&parts.first()=='video'){fire('player:state:changed',{'option_type':'play_video','video_data':{'video_id':parts.last()}});}}}}},'handle_resize':function(event){if(!hasattr(event,'memo')||!hasattr(event.memo,'activity_section_height')){warn('@@ Connections Viewer - Invalid resize event');return;}
var h=event.memo.activity_section_height-26;this.target.setStyle({'height':h+'px'});this.target.scroller.down();},'chastise':function($super){this.target.observe('click',this.handle_click.bindAsEventListener(this));var scroller=new Scroller(this.target,{'duration':250});$super();},'initialize':function($super,target,methods){var ms=greentv.globals.message_strings;this.connected_label=ms['connected'];this.to_label=ms['to'];this.play_label=ms['play'];this.open_label=ms['open'];this.handle_triggered_connections=this.write_connections.bindAsEventListener(this);observe('activity:resized',this.handle_resize.bindAsEventListener(this));$super(target);}});

// HackedDrawerSlider.js
var HackedDrawerSlider=Class.create(Slider,{'initialize':function($super,el,options){$super(el,options);this.options.onBeforeStart=function(){this.wrapper.setStyle({'overflow':'hidden'});}.bind(this);this.options.onComplete=function(){if(this.options.mode=='vertical'){this.wrapper.setStyle({'overflowX':'auto','overflowY':'hidden'});}
else{this.wrapper.setStyle({'overflowY':'auto','overflowX':'hidden'});}}.bind(this);},'horizontal':function(){this.margin='marginLeft';this.layout='width';this.offset=this.element.offsetWidth;if(this.wrapper.getWidth()-1>this.offset){this.offset=this.wrapper.getWidth()-1;}
return this.finish();}});

// Player.js
var Player=Class.create(VisualSlot,{'guiding_methods':['play','pause','stop','seek','set_guided_state'],'flash':null,'guiding_on':false,'guiding_slots':new Hash(),'slot_counter':0,'latest_set_guided_state_request':{},'load':function(params){if(hasattr(params,'url')){this.flash.invoke_('load_',params.url);}
else{warn('Player can\'t load (no url in params) '+params);}},'unload':function(){this.flash.invoke_('unload_');},'play':function(){this.flash.invoke_('play_');},'pause':function(){this.flash.invoke_('pause_');},'stop':function(){this.flash.invoke_('stop_');},'seek':function(params){if(hasattr(params,'pos')){this.flash.invoke_('seek_',params.pos);}
else{warn('Player can\'t seek (no pos in params) '+params);}},'get_volume':function(){log('volume: '+this.flash.invoke_('get_volume')*100);},'set_volume':function(params){if(hasattr(params,'vol')){this.flash.invoke_('set_volume',parseFloat(params.vol)/100.0);}
else{warn('Player can\'t set volume (no vol in params) '+params);}},'get_mute':function(){log('mute: '+this.flash.invoke_('get_mute'));},'set_mute':function(params){if(hasattr(params,'should_mute')){this.flash.invoke_('set_mute',params.should_mute);}
else{warn('Player can\'t set mute (no should_mute flag in params) '+params);}},'get_size':function(){log('size: '+Object.toJSON(this.flash.invoke_('get_size')));},'set_size':function(params){var keys=Object.keys(params);if(keys.include('x')&&keys.include('y')){this.flash.invoke_('set_size',params.x,params.y);}
else{warn('Player can\'t set size (either no x or no y in params) '+params);}},'get_position':function(){log('position: '+this.flash.invoke_('get_position'));},'get_progress':function(){log('progress: '+this.flash.invoke_('get_progress'));},'get_duration':function(){log('duration: '+this.flash.invoke_('get_duration'));},'get_playstate':function(){log('state: '+this.flash.invoke_('get_state'));},'handle_fullscreen_entered':function(event){this.flash.handle_enter_fullscreen();},'handle_fullscreen_exited':function(event){window.resizeBy(-2,0);window.resizeBy(2,0);this.flash.handle_exit_fullscreen(this.flash.getDimensions());},'proxy_guiding_slot_event':function(event){var memo=event.memo;var slot_match=memo.slots.find(function(slot){return this.guiding_slots.keys().include(slot)}.bind(this));if(slot_match){this.handle_public_broadcast_event(event);}},'handle_guiding_started':function(event){if(hasattr(event,'memo')){var guid=getattr(event.memo,'guid',false);if(guid){this.guiding_slots.set(guid,guid);observe(guid+':requested',this.proxy_guiding_slot_event.bindAsEventListener(this));if(this.slot_counter<1){this.expose(this.guiding_methods);this.guiding_on=true;}
this.slot_counter+=1;}
else{warn('@@ no guid...');}}
else{warn('Invalid event - needs memo');}},'handle_guiding_stopped':function(event){if(hasattr(event,'memo')){var guid=getattr(event.memo,'guid',false);if(guid){stopObserving(guid+':requested');this.slot_counter-=1;if(this.slot_counter<1){this.__all__=this.__all__.without(this.guiding_methods);this.guiding_on=false;}
this.guiding_slots.unset(guid);}
else{warn('@@ no guid...');}}
else{warn('Invalid event - needs memo');}},'resize_player':function(params){this.flash.handle_resize(params);},'handle_resize':function(event){if(!hasattr(event,'memo')||!hasattr(event.memo,'player')){warn('@@Watch Slot - invalid resize event');}
this.target.setStyle(event.memo.player);this.resize_player(this.target.getDimensions());},'handle_play_video':function(params){var video=params.video_id;new Ajax.Request('@@view.ajax',{'parameters':{'video':video}});new Ajax.Request('@@get_connections.ajax',{'parameters':{'video':video},'onSuccess':function(transport){var response=transport.responseText;var connections=new Hash(response.evalJSON(true));var timecodes=connections.keys();this.flash.store_connection_timecodes(timecodes);fire('connections-viewer:called',{'method':'focus','params':{'video':params,'connections':connections}});if(timecodes){fire('watch:called',{'method':'switch_focus_to_connections_viewer_if_appropriate','params':{}});}}.bind(this)});var subject_url='video/'+params.video_id;var subject_title=params.video_title;fire('broadcast:requested',{'name':'slotevent','slots':['activity-viewer'],'method':'display','params':{'action':'watched','subject':[subject_url,subject_title]}});},'broadcast_if_guiding':function(params){var focus=getattr(params,'focus',false);if(focus){var params;var last=focus.last();if(last.type=='video'){params={'option_type':'play_video','video_data':{'video_id':last.id}};}
else{params={'option_type':'update_listings','listings_url':focus.pluck('id').join('/')};}
var test_params=Object.extend({'external_guided_request':true},params);var double_check=this.latest_set_guided_state_request;var not_the_same=$H(test_params).find(function(item){return double_check[item.key]!=item.value;});if(not_the_same){not_the_same=$H(this.latest_set_guided_state_request).find(function(item){return test_params[item.key]!=item.value;});}
if($H(this.latest_set_guided_state_request).size()!=$H(test_params).size()){not_the_same=true;}
if(not_the_same){fire('broadcast:requested',{'name':'slotevent','slots':this.guiding_slots.keys(),'recipients':'others','method':'set_guided_state','params':params});}}
else{var action=getattr(params,'action',false);if(action){fire('broadcast:requested',{'name':'slotevent','slots':this.guiding_slots.keys(),'recipients':'others','method':action,'params':{'pos':getattr(params,'pos',0)}});}}},'set_guided_state':function(params){this.latest_set_guided_state_request=params;fire('player:state:changed',Object.extend(params,{'external_guided_request':true}));},'parse_state':function($state){var external_guided_request=!!(hasattr($state,'external_guided_request')&&$state.external_guided_request);if(external_guided_request&&!this.guiding_on){return $state;}
else if(hasattr($state,'option_type')){switch($state.option_type){case'play_video':if(hasattr($state,'video_data')){var params=$state.video_data;if(hasattr(params,'title')){this.flash.play_individual_video(params);}
else if(hasattr(params,'video_id')){new Ajax.Request(this.url_root+'@@get_video_data.ajax',{'parameters':params,'onSuccess':function(transport){var response=transport.responseText;var video_data=response.evalJSON(true);this.flash.play_individual_video(video_data);}.bind(this)});}}
else{warn('state must have video_data');}
break;case'update_listings':if(hasattr($state,'listings_url')){var url=$state.listings_url;if(url!='home'&&url!='home/channels'){url=url.sub('home/channels/','');}
this.flash.show_listings(url);}
else{warn('state must have listings_url');}
break;case'search':if(hasattr($state,'fulltext')){this.flash.request_search($state.fulltext);}
else{warn('state must have fulltext');}
break;default:return;break;}
fire('nav:state:changed',{'focus_url':'watch'});}
return $state;},'initialize':function($super,target,methods){this.url_root=greentv.globals.paths.url_root;this.flash=$('flash');observe('player:fullscreen:entered',this.handle_fullscreen_entered.bindAsEventListener(this));observe('player:fullscreen:exited',this.handle_fullscreen_exited.bindAsEventListener(this));observe('player:guiding:started',this.handle_guiding_started.bindAsEventListener(this));observe('player:guiding:stopped',this.handle_guiding_stopped.bindAsEventListener(this));observe('window:resized',this.handle_resize.bindAsEventListener(this));$super(target,methods);}});

// FooterSlot.js
var FooterSlot=Class.create(TabViewSlot,{'handle_change_language':function(event){event.stop();var a=event.findElement('a');var site_id=a.readAttribute('href');var current_url=window.location.href;var params={};if(current_url.indexOf('?')>-1){var parts=current_url.split('?');current_url=parts[0];params=parts.slice(1).join('?').toQueryParams();}
Object.extend(params,{'site_id':site_id});var target_url=current_url+'?'+Object.toQueryString(params);if(typeof(getattr(window.location,'replace',false))==typeof(function(){})){window.location.replace(target_url);}
else{window.location.href=target_url;}},'chastise':function($super){var click_handler=this.handle_change_language.bindAsEventListener(this);this.target.select('.flags > a').invoke('observe','click',click_handler);$super();},'initialize':function($super,target){$super(target);}});

// NavSlot.js
var NavSlot=Class.create(VisualSlot,{'sections':new Hash({'watch':0,'engage':1,'act':2,'footer':3}),'focus_on':function($id){var n=this.sections.get($id);if(n!=undefined){this.accordion.showThisHideOpen(n);}},'handle_accordion_state_change':function(event){log('NavSlot.handle_accordion_state_change')
event.stop();var i=event.memo.index;var label=this.sections.find(function(item){return item.value==i;});log(label.key);fire('nav:state:changed',{'focus_url':label.key});},'handle_resize':function(event){if(!hasattr(event,'memo')||!hasattr(event.memo,'main_section')){warn('@@ NavSlot - Invalid resize event');return;}
this.main_sections.invoke('setStyle',event.memo.main_section);this.accordion.handleResize({});},'initialize':function($super,$target,$methods,$accordion,$main_sections){this.accordion=$accordion;this.main_sections=$main_sections
$super($target,$methods);this.target.observe('accordion:state:changed',this.handle_accordion_state_change.bindAsEventListener(this));observe('window:resized',this.handle_resize.bindAsEventListener(this));}});

// Client.js
var Client=Class.create(ChasteEnvironment,{'target':null,'request_params':{},'flash_loaded':false,'super_initialized':false,'images_preloaded':false,'unpackable_preload_image_stubs':new Array('watch/top','watch/bottom','act/bar','engage/bar','info/bar'),'resize_executer':null,'IE_RESIZE_DELAY':0.2,'MINIMUM_VIEWPORT_WIDTH':700,'MINIMUM_VIEWPORT_HEIGHT':500,'MINIMUM_REMAINING_WIDTH_AS_FRACTION':0.3,'MINIMUM_REMAINING_PIXEL_WIDTH':200,'PLAYER_ASPECT_RATIO':743/424,'WIDTH_LEEWAY':15,'DEBUG_ONLY_max_resize_attempts':0,'_get_flash_capabilities':function(){var v=deconcept.SWFObjectUtil.getPlayerVersion();if(v.major>9||(v.major==9&&(v.minor>0||v.rev>=97))){return'full';}
if(v.major>7||(v.major==6&&(v.minor>0||v.rev>=65))){return'xi';}
return null;},'_get_current_resize_dimensions':function(){var viewport_dimensions=document.viewport.getDimensions();var root_dimensions={'width':'100%','height':'100%'};var mw=this.MINIMUM_VIEWPORT_WIDTH;var mh=this.MINIMUM_VIEWPORT_HEIGHT;if(viewport_dimensions.width<mw){viewport_dimensions.width=mw;root_dimensions.width=mw+'px';}
if(viewport_dimensions.height<mh){viewport_dimensions.height=mh;root_dimensions.height=mh+'px';}
this.target.setStyle(root_dimensions);var w=viewport_dimensions.width-16;var h=viewport_dimensions.height-9;var top_offset=this.player.cumulativeOffset().top;var bottom_offset=160;var available_height=h-(top_offset+bottom_offset);var desired_height=available_height;var desired_width=available_height*this.PLAYER_ASPECT_RATIO;var remaining_width=w-(desired_width+this.WIDTH_LEEWAY);if(remaining_width/w<this.MINIMUM_REMAINING_WIDTH_AS_FRACTION){remaining_width=w*this.MINIMUM_REMAINING_WIDTH_AS_FRACTION;}
if(remaining_width<this.MINIMUM_REMAINING_PIXEL_WIDTH){remaining_width=this.MINIMUM_REMAINING_PIXEL_WIDTH;}
if(w-(desired_width+this.WIDTH_LEEWAY)<remaining_width){desired_width=w-(remaining_width+this.WIDTH_LEEWAY);desired_height=desired_width/this.PLAYER_ASPECT_RATIO;}
return{'viewport':viewport_dimensions,'root':root_dimensions,'main_section':{'height':(desired_height+4)+'px'},'player':{'height':desired_height+'px','width':desired_width+'px'},'activity':{'width':(remaining_width+21)+'px'}};},'_proxy_focus_on_watch_section':function(event){if(!hasattr(event,'memo')||(hasattr(event.memo,'name')&&event.memo.name=='slotuserevent')){return false;}
if(hasattr(event,'memo')&&hasattr(event.memo,'method')){var filter_methods=['broadcast_if_guiding','update_breadcrumbs'];if(filter_methods.include(event.memo.method)){return false;}}
fire('nav:state:changed',{'focus_url':'watch'});},'_complete_resize':function(){this.resizing=false;if(this.resize_in_buffer){this.handle_resize();}},'_execute_resize':function(){try{fire('window:resized',this._get_current_resize_dimensions());}
finally{this._complete_resize.bind(this).delay(0.5);}},'handle_resize':function(event){if(this.resizing){this.resize_in_buffer=true;}
else{this.resizing=true;this.resize_in_buffer=false;this._execute_resize.bind(this).defer();}},'handle_flash_loaded':function(){if(!this.flash_loaded){this.flash_loaded=true;this.flash=$('flash');if(Prototype.Browser.WebKit){if(this.images_preloaded){this.complete_initialization();}}
else{if(this.super_initialized&&this.images_preloaded){this.complete_initialization();}}}
else{warn('flash loaded called more than once');}},'handle_super_initialized':function(){if(!this.super_initialized){this.super_initialized=true;if(this.flash_loaded&&this.images_preloaded){this.complete_initialization();}}
else{warn('handle_super_initialized called more than once');}},'handle_images_preloaded':function(){if(!this.images_preloaded){this.images_preloaded=true;if(Prototype.Browser.WebKit){if(this.flash_loaded){this.complete_initialization();}}
else{if(this.flash_loaded&&this.super_initialized){this.complete_initialization();}}}
else{warn('handle_images_preloaded called more than once');}},'handle_login_required':function(event){fire('nav:state:changed',{'focus_url':'engage/engage-profile'});var params=getattr(event,'memo',{});fire('engage:called',{'method':'handle_display_login_join_panel','params':params});},'handle_logout_requested':function(event){new Ajax.Request('@@logout.ajax',{'onSuccess':function(transport){window.location.reload(true);},'onFailure':function(transport){log(transport.responseText);warn('logout failed');}});},'reveal_fallback':function(){$('fallback-wrapper').removeClassName('hide-to-begin-with');$('express-install-wrapper').update();},'reveal_express_install':function(){$('express-install-wrapper').removeClassName('hide-to-begin-with');this.embed_flash(true);},'process_request_params':function(){var params=this.request_params;if(hasattr(params,'flag')){var flag=params.flag;if(flag=='not_found'){fire('nav:state:changed',{'focus_url':'footer/footer-not-found'});}
else if(flag=='search'&&hasattr(params,'fulltext')&&params.fulltext){$('search-fulltext').value=params.fulltext;fire('top-nav:called',{'method':'handle_search'});}
else if(flag=='set_focus'&&hasattr(params,'url')){new PeriodicalExecuter(function(pe){fire('player:state:changed',{'option_type':'update_listings','listings_url':params.url});pe.stop();},0.5);}
else if(flag=='video'&&hasattr(params,'video_data')){new PeriodicalExecuter(function(pe){fire('player:state:changed',{'option_type':'play_video','video_data':params['video_data']});pe.stop();},0.5);}}},'initialize_slots':function(){var footer=new FooterSlot('footer');var act=new TabViewSlot('act');var engage=new EngageSlot('engage');var sticky_chat=new GuidedChat('chat');var connections_viewer=new ConnectionsViewer('connections-viewer');var activity_viewer=new ActivityViewer('activity-viewer');var player=new Player('player');var watch=new WatchSlot('watch');var nav=new NavSlot('nav',[],this.nav_accordion,this.main_sections);var top_nav=new TopNavSlot('top-wrapper');map('discussion:requested','nav:state:changed',{'focus_url':'watch/chat'});},'complete_initialization':function(){this.initialize_slots();this.handle_resize({});this.process_request_params();fire('client:initialized',{});fire('state:changed',{});},'chastise':function(){this.player=$('player');this.activity=$('activity');this.activity_viewer=$('activity-viewer');this.watch_section=$('watch-section');this.watch_section_container=this.watch_section.up('div.section');this.main_sections=$$('#nav li.main-nav > .section > ul');var heads=$$('#nav > li > div.section-head');var sections=$$('#nav > li > div.section');this.nav_accordion=new Accordion(heads,sections,{'opacity':false,'start':'custom'});var dims=this._get_current_resize_dimensions();this.main_sections.invoke('setStyle',dims.main_section);this.watch_section_container.setStyle(dims.main_section);this.player.setStyle(dims.player);this.activity.setStyle(dims.activity);var combined_activity_heads_height=0;this.target.select('#activity > .accordion > .section-head').each(function(target){combined_activity_heads_height+=target.getHeight();});var activity_section_height=parseInt(dims.player.height)-combined_activity_heads_height-8;this.activity_viewer.setStyle({'height':activity_section_height+'px'});Event.observe(window,'resize',this.handle_resize.bindAsEventListener(this));},'embed_flash':function(express_install_required){var bg_colour='#000000';if(express_install_required){bg_colour='#ffffff';}
var so=new SWFObject('/++resource++greentv/swf/client.swf','flash','100%','100%','9.0.97',bg_colour);so.addParam('swliveconnect','true');so.addParam('allowScriptAccess','always');so.addParam('allowfullscreen','true');so.addParam('wmode','opaque');so.addParam('quality','autohigh');if(express_install_required){so.useExpressInstall('/++resource++base/swf/expressinstall.swf');so.setAttribute('xiRedirectUrl',window.location.href);so.write('xi-flash-container');}
else{so.write('flash-container');}},'preload_images':function(){var images=new Array();var prefix=greentv.globals.paths['static']+'nav_bars/';var suffixes=new Array('left','middle','right');this.unpackable_preload_image_stubs.each(function(src){suffixes.each(function(suffix){images.push(prefix+src+'_'+suffix+'.gif');})});var preloader=new ImagePreloader('image',images);},'request_page':function(){new Ajax.Request('@@page.ajax',{'method':'get','parameters':this.request_params,'onSuccess':function(transport){this.target.update(transport.responseText);this.chastise();this.embed_flash(false);}.bind(this),'onFailure':function(){this.reveal_fallback();}.bind(this)});},'initialize':function($super,target){this.target=$(target);observe('flash:loaded',this.handle_flash_loaded.bind(this));observe('image:preloading:completed',this.handle_images_preloaded.bind(this));observe('chaste-environment:initialized',this.handle_super_initialized.bind(this));observe('fallback:requested',this.reveal_fallback.bind(this));observe('watch:called',this._proxy_focus_on_watch_section);observe('player:called',this._proxy_focus_on_watch_section);observe('login:required',this.handle_login_required.bindAsEventListener(this));observe('logout:requested',this.handle_logout_requested.bindAsEventListener(this));switch(this._get_flash_capabilities()){case'full':this.request_page();this.preload_images();var requires_prickly=greentv.globals.user.is_authenticated;$super(requires_prickly);greentv.client=this;break;case'xi':this.reveal_express_install();break;default:this.reveal_fallback();break;}}});

// ActivityViewer.js
var ActivityViewer=Class.create(VisualSlot,{'__all__':['display'],'msg':new Template('<li class="activity-message">\
        <img src="/++resource++greentv/img/misc/small_user_icon.gif" />\
        <span class="by">\
          #{user}\
        </span>\
        <span class="action">\
          #{action_label}\
        </span>\
        <a href="#{discuss_url}"\
            title="#{discuss_label} #{subject_title}"\
            class="activity-message-discuss-link">\
          #{discuss_icon_button_markup}\
        </a>\
        <span class="action">\
          #{preposition_label}\
        </span>\
        <span class="subject">\
          <a href="#{focus_url}"\
              title="#{play_label} #{subject_title}"\
              class="activity-message-video-link">\
            #{subject_title}\
          </a>\
        </span>\
        <span class="to-label">\
          #{to_label}\
        </span>\
        <span class="external-resource">\
          <a href="#{external_url}"\
              title="#{open_label} #{external_title}"\
              target="_blank">\
            #{external_title}\
          </a>\
        </span>\
        <span class="at-label">\
          #{at_label}\
        </span>\
        <span class="at">\
          #{at}\
        </span>\
      </li>'),'viewer_ids':['watched','connected','discussed'],'accordion':null,'viewers':new Hash(),'_cache_viewer':function(id){var target=$(id+'-activity-viewer');if(target){var scroller=new Scroller(target,{'duration':250});this.viewers.set(id,target);}
else{warn('Viewer element not in DOM: '+id);}},'display':function(params){var keys=Object.keys(params);if(keys.include('action')&&keys.include('user')&&keys.include('subject')){var action=params.action;if(this.viewers.keys().include(action)){var viewer=this.viewers.get(action);var d=new Date();var HH=d.getHours().toTwoDigitString();var MM=d.getMinutes().toTwoDigitString();var data={'action':action,'action_label':this.message_strings[action],'at':HH+':'+MM,'at_label':this.message_strings['at'],'play_label':this.message_strings['play'],'discuss_label':this.message_strings['discuss'],'open_label':this.message_strings['open']};var user=params.user;if(typeof(user)==typeof([])&&user.length==2){Object.extend(data,{'user':user[1]});}
else{Object.extend(data,{'user':user});}
var subject=params.subject;if(typeof(subject)==typeof([])&&subject.length==2){Object.extend(data,{'focus_url':subject[0],'subject_title':subject[1]});}
else{warn('User must be an array with 2 items');}
if(keys.include('external_url')&&keys.include('external_title')){Object.extend(data,{'external_url':params.external_url,'external_title':params.external_title,'to_label':this.message_strings['to']});}
if(action=='discussed'){Object.extend(data,{'discuss_url':'discuss/'+subject[0],'discuss_icon_button_markup':'<img src="/++resource++greentv/img/misc/discuss_icon_button.gif" />','preposition_label':this.message_strings['on']});}
viewer.insert(this.msg.evaluate(data));viewer.scroller.down();}
else{warn('Action not supported - '+action+' must be in '+this.viewers.inspect());}}
else{warn('Invalid params, must container "action", "user" and "what": '+keys);}},'focus_on':function($id){var n=this.viewer_ids.indexOf($id);if(n>-1){this.accordion.showThisHideOpen(n);this.viewers.each(function(target,i){var viewer=target.value;if(i==n){viewer.setStyle({'overflow':'auto'});viewer.scroller.down();}
else{viewer.setStyle({'overflow':'hidden'});}});}},'show_any_neccessary_scrollbars':function(params){var i=this.accordion.previousClick;if(typeof(i)==typeof(0)&&i>-1&&i<this.viewer_ids.length){var target_viewer_id=this.viewer_ids[i];var target_viewer=this.viewers.get(target_viewer_id);target_viewer.setStyle({'overflow':'auto'});target_viewer.scroller.down();}},'hide_all_scrollbars':function(params){this.viewers.values().invoke('setStyle',{'overflow':'hidden'});},'handle_accordion_state_change':function(event){event.stop();var i=event.memo.index;if(i>0&&!greentv.globals.user.is_authenticated){fire('login:required',{'action':'not_authorised'});}
fire('activity-viewer:state:changed',{'focus_url':this.viewer_ids[i]});},'handle_click':function(event){var video_link=event.findElement('a.activity-message-video-link');if(video_link){event.stop();var focus_url=video_link.readAttribute('href');if(focus_url){focus_url=focus_url.sub(greentv.globals.paths.url_root,'');var parts=focus_url.split('/');if(parts.length==2&&parts.first()=='video'){fire('player:state:changed',{'option_type':'play_video','video_data':{'video_id':parts.last()}});}}}
else{var discuss_link=event.findElement('a.activity-message-discuss-link');if(discuss_link){event.stop();var focus_url=discuss_link.readAttribute('href');if(focus_url){focus_url=focus_url.sub(greentv.globals.paths.url_root,'');var parts=focus_url.split('/');if(parts.length==3&&parts.first()=='discuss'){var title=discuss_link.readAttribute('title');if(title){fire('discussion:requested',{'id':parts.last(),'title':title.sub(this.message_strings['discuss']+' ','')});}}}}}},'handle_resize':function(event){if(!hasattr(event,'memo')||!hasattr(event.memo,'activity_section_height')){warn('@@ Activity Viewer - Invalid resize event');return;}
var activity_section_height=event.memo.activity_section_height;this.target.setStyle({'height':activity_section_height+'px'});var combined_activity_viewer_heads_height=27;this.heads.each(function(target){combined_activity_viewer_heads_height+=target.getHeight();});this.section_uls.invoke('setStyle',{'height':(activity_section_height-combined_activity_viewer_heads_height)+'px'});this.accordion.handleResize({});},'chastise':function($super){this.heads=this.target.select('.section-head');this.sections=this.target.select('.section');this.section_uls=this.target.select('.section > .ul-wrapper > ul');this.accordion=new Accordion(this.heads,this.sections,{'opacity':false});var cache=this._cache_viewer.bind(this);var click_handler=this.handle_click.bindAsEventListener(this);this.viewer_ids.each(cache);this.viewer_ids.each(function($id,i){var viewer=this.viewers.get($id);viewer.observe('click',click_handler);viewer.select('span.at').each(function(span){var ts=span.readAttribute('value');if(ts){var date=new Date();date.setTime(ts*1000);var h=date.getHours();var m=date.getMinutes();var HH=h.toTwoDigitString();var MM=m.toTwoDigitString();span.update(HH+':'+MM);}});if(i==0){viewer.scroller.down();}}.bind(this));$super();},'initialize':function($super,$target,$methods){this.message_strings=greentv.globals.message_strings;this.message_strings['discussed']=this.message_strings['joined the discussion'];$super($target,$methods);this.target.observe('accordion:state:changed',this.handle_accordion_state_change.bindAsEventListener(this));observe('activity:resized',this.handle_resize.bindAsEventListener(this));}});

// HighlightChat.js
var HighlightChat=Class.create(GuidedChat,{'highlight_post':function(post_id,channel){new Ajax.Request('@@highlight_post.ajax',{'parameters':{'id':post_id},'onSuccess':function(transport){this.handle_highlight_behaviour(post_id,channel);this.get_chat_history(channel);fire('broadcast:requested',{'name':'slotevent','slots':[channel],'method':'get_chat_history','recipients':'others','params':channel});}.bind(this),'onFailure':function(transport){warn('failed to highlight chat post '+post_id+': '+transport.responseText);}});},'highlight_post_event':function(event,post_id,channel){this.highlight_post(post_id,channel);},'unhighlight_post':function(post_id,channel){new Ajax.Request('@@unhighlight_post.ajax',{'parameters':{'id':post_id},'onSuccess':function(transport){this.handle_highlight_behaviour(post_id,channel);this.get_chat_history(channel);fire('broadcast:requested',{'name':'slotevent','slots':[channel],'method':'get_chat_history','recipients':'others','params':channel});}.bind(this),'onFailure':function(transport){warn('failed to unhighlight chat post '+post_id+': '+transport.responseText);}});},'unhighlight_post_event':function(event,post_id,channel){this.unhighlight_post(post_id,channel);},'handle_highlight_toggle':function(event,target,method){if(method=='hide'){target.select('.highlight-wrapper').first().hide();}else if(method=='show'){target.select('.highlight-wrapper').first().show();}},'handle_highlight_behaviour':function(id,channel){log('handling highlighting');new Ajax.Request('@@is_post_highlighted.ajax',{'parameters':{'id':id},'onSuccess':function(transport){var response=transport.responseText;var data=response.evalJSON(true);var targets=$$('.'+id);targets.each(function(target){var highlight=target.select('.highlight').first();var unhighlight=target.select('.unhighlight').first();if(data==true){highlight.hide();unhighlight.show();highlight.stopObserving();unhighlight.observe('click',this.unhighlight_post_event.bindAsEventListener(this,id,channel));}else if(data==false){unhighlight.hide();highlight.show();unhighlight.stopObserving();highlight.observe('click',this.highlight_post_event.bindAsEventListener(this,id,channel));}else{log('TypeError: Expected boolean value - '+data);}
target.observe('mouseover',this.handle_highlight_toggle.bindAsEventListener(this,target,'show'));target.observe('mouseout',this.handle_highlight_toggle.bindAsEventListener(this,target,'hide'));}.bind(this));}.bind(this),'onFailure':function(transport){warn('failed to get info on chat post '+id+': '+transport.responseText);}.bind(this)});},'init_handle_highlight_behaviour':function(event){log('chat:post:added');var id=event.memo.id;var channel=event.memo.channel;this.handle_highlight_behaviour(id,channel);},'initialize':function($super,target,methods,$username){$super(target,methods,$username);this.__all__.push('get_chat_history');this.templates.msg=new Template('<p class="para#{user_type} #{flag} #{timestamp}" style="display:block">\
          <span class="highlight-wrapper" style="float:right; display: none;">\
            <img src="/++resource++greentv/img/misc/highlight.gif" class="highlight" title="Highlight this post" alt="Highlight this post" />\
            <img src="/++resource++greentv/img/misc/unhighlight.gif" class="unhighlight" title="Un-Highlight this post" alt="Un-Highlight this post" />\
          </span>\
          <span class="at">\
            #{on}\
          </span>\
          <span class="by#{user_type}">\
            #{user}:\
          </span>\
          <span class="content">\
            #{content}\
          </span>\
        </p>');observe('chat:post:added',this.init_handle_highlight_behaviour.bindAsEventListener(this));}});

// TopNavSlot.js
var TopNavSlot=Class.create(VisualSlot,{'_apply_top_nav_changes':function(target,target_bg_colour,img_background_position,ul_bg_img,label_text_color){var img_div,ul,label;target.setStyle({'backgroundColor':target_bg_colour});img_div=target.select('div.rollover-image').first();img_div.setStyle({'backgroundPosition':img_background_position});ul=target.up();if(target==ul.select('li.top-nav').first()){ul.setStyle({'backgroundImage':'url("'+ul_bg_img+'")'});}
if(target.hasClassName('top-nav')){label=target.select('div.label').first();label.setStyle({'color':label_text_color});}
else if(target.hasClassName('drop-down-top-nav')){label=target.select('div.drop-down-label').first();label.setStyle({'color':label_text_color});}},'handle_drop_down_arrow_rollover':function(event){this.over_arrow=true;if(!this.drop_down_nav.visible()){this.drop_down_nav.show();}},'handle_drop_down_arrow_rollout':function(event){this.over_arrow=false;if(!this.over_drop_down_nav&&this.drop_down_nav.visible()){this.drop_down_nav.hide();}},'handle_drop_down_nav_rollover':function(event){this.over_drop_down_nav=true;if(!this.drop_down_nav.visible()){this.drop_down_nav.show();}},'handle_drop_down_nav_rollout':function(event){this.over_drop_down_nav=false;if(!this.over_arrow&&this.drop_down_nav.visible()){this.drop_down_nav.hide();}},'handle_top_nav_rollover':function(event){var target=event.findElement('li');var bg_image='';if(target.hasClassName('top-nav'))
{bg_image='/++resource++greentv/img/top_nav/icon_bar_left_grey.gif';this._apply_top_nav_changes(target,'#DCDCDC','bottom right',bg_image,'#303030');}
else if(target.hasClassName('drop-down-top-nav')){this._apply_top_nav_changes(target,'#DCDCDC','bottom right',bg_image,'#303030');this._apply_top_nav_changes($('drop-down-arrow'),'transparent','bottom',bg_image,'');}
else if(target==this.drop_down_arrow){this._apply_top_nav_changes(target,'transparent','bottom',bg_image,'');}},'handle_top_nav_rollout':function(event){var target=event.findElement('li');var bg_image='';if(target.hasClassName('top-nav')){bg_image='/++resource++greentv/img/top_nav/icon_bar_left_white.gif';this._apply_top_nav_changes(target,'#ffffff','top left',bg_image,'#606060');}
else if(target.hasClassName('drop-down-top-nav')){this._apply_top_nav_changes(target,'#ffffff','top left',bg_image,'#606060');this._apply_top_nav_changes($('drop-down-arrow'),'transparent','top',bg_image,'');}
else if(target==this.drop_down_arrow){this._apply_top_nav_changes(target,'transparent','top',bg_image,'');}},'handle_signup':function(event){event.stop();fire('login:required',{'action':'signup'});},'handle_login':function(event){event.stop();fire('login:required',{'action':'login'});},'handle_logout':function(event){event.stop();fire('logout:requested',{});},'handle_search_keyup':function(event){if(event.keyCode==13){this.handle_search(event);}},'handle_search':function(event){if(hasattr(event,'stop')){event.stop();}
var params=this.search_form.serialize(true);fire('player:state:changed',{'option_type':'search','fulltext':params['fulltext']});},'handle_top_nav':function(event){event.stop();var target=event.findElement('li');var id=target.identify().sub('drop-down-','').sub('top-nav-','');switch(id){case'channels':fire('player:state:changed',{'option_type':'update_listings','listings_url':''});break;case'my-playlists':fire('player:state:changed',{'option_type':'update_listings','listings_url':'my_channels/bookmarks'});break;case'upload':fire('nav:state:changed',{'focus_url':'act/act-publish-videos'});break;case'podcasts':fire('nav:state:changed',{'focus_url':'engage/engage-podcasts'});break;default:warn('Unhandled top nav link: '+id);break;}},'handle_resize':function(event){if(!hasattr(event,'memo')||!hasattr(event.memo,'viewport')){log(event);warn('@@ TopNavSlot - invalid resize event');return;}
var viewport_dimensions=event.memo.viewport;var available_width=viewport_dimensions.width;available_width-=this.default_top_nav_container_left;available_width-=4;var full_available_width=available_width;var search_width=this.top_nav_search.getWidth();var auth_width=this.top_nav_auth.getWidth();available_width-=search_width+auth_width;available_width-=30;var cumulative_elements_width=0;this.normal_top_nav_li_elements.each(function(target){cumulative_elements_width+=target.getWidth();});if(available_width>=cumulative_elements_width){this.normal_top_nav_li_elements.invoke('show');this.drop_down_top_nav_li_elements.invoke('hide');this.drop_down_arrow.hide();this.top_nav_container.setStyle({'width':full_available_width+'px','left':this.default_top_nav_container_left+'px'});}
else{var amount_to_move_left=cumulative_elements_width-available_width;var new_left=this.default_top_nav_container_left-amount_to_move_left;if(new_left<150){new_left=150;}
available_width+=this.default_top_nav_container_left-new_left;full_available_width+=this.default_top_nav_container_left-new_left;this.top_nav_container.setStyle({'width':full_available_width+'px','left':new_left+'px'});if(available_width>=cumulative_elements_width){this.normal_top_nav_li_elements.invoke('show');this.drop_down_top_nav_li_elements.invoke('hide');this.drop_down_arrow.hide();}
else{available_width-=this.drop_down_arrow.getWidth();var drop_down_height=0;this.normal_top_nav_li_elements.each(function(normal_li_element,i){var drop_down_li_element=this.drop_down_top_nav_li_elements[i];var element_width=normal_li_element.getWidth();if(available_width>=element_width){normal_li_element.show();drop_down_li_element.hide();available_width-=element_width;}
else{normal_li_element.hide();drop_down_li_element.show();drop_down_height+=30;}}.bind(this));this.drop_down_arrow.show();var ddnl=this.drop_down_arrow.cumulativeOffset().left+15;this.drop_down_nav.setStyle({'left':ddnl+'px'});this.drop_down_middle_right_image.setStyle({'height':drop_down_height+'px'})
this.drop_down_bottom_images.invoke('setStyle',{'top':(drop_down_height+12)+'px'});}}},'chastise':function($super){this.top_nav_container=$('first-top-container');this.default_top_nav_container_left=this.top_nav_container.cumulativeOffset().left;this.top_nav_search=$('top-nav-search');this.top_nav_auth=$('top-nav-login-logout');this.drop_down_nav=$('drop-down-top-nav-menu');this.normal_top_nav_li_elements=this.top_nav_container.select('li.top-nav');this.drop_down_top_nav_li_elements=this.drop_down_nav.select('li.drop-down-top-nav');this.drop_down_arrow=$('drop-down-arrow');this.search_image=$('search-submit-image');this.search_form=$('search-form');this.search_input=$('search-fulltext');this.drop_down_middle_right_image=$('drop-down-middle-right-image');this.drop_down_bottom_images=$$('#drop-down-bottom-left-image','#drop-down-bottom-middle-image','#drop-down-bottom-right-image');var targets=this.normal_top_nav_li_elements.concat(this.drop_down_top_nav_li_elements);targets.invoke('observe','click',this.handle_top_nav.bindAsEventListener(this));var over=this.handle_top_nav_rollover.bindAsEventListener(this);var out=this.handle_top_nav_rollout.bindAsEventListener(this);targets.push(this.drop_down_arrow);targets.each(function(target){target.observe('mouseover',over);target.observe('mouseout',out);});this.drop_down_arrow.observe('mouseover',this.handle_drop_down_arrow_rollover.bindAsEventListener(this));this.drop_down_arrow.observe('mouseout',this.handle_drop_down_arrow_rollout.bindAsEventListener(this));this.drop_down_nav.observe('mouseover',this.handle_drop_down_nav_rollover.bindAsEventListener(this));this.drop_down_nav.observe('mouseout',this.handle_drop_down_nav_rollout.bindAsEventListener(this));var input=new SearchInput('search-fulltext','',true);var search_handler=this.handle_search.bindAsEventListener(this);this.search_form.observe('submit',search_handler);this.search_image.observe('click',search_handler);this.search_input.observe('keyup',this.handle_search_keyup.bindAsEventListener(this));this.search_input.focus();['signup','login','logout'].each(function(stub){var target=$('top-nav-'+stub+'-link');if(target){var handler=this['handle_'+stub].bindAsEventListener(this);target.observe('click',handler);}}.bind(this));$super();},'initialize':function($super,target,methods){observe('window:resized',this.handle_resize.bindAsEventListener(this));$super(target,methods);}});


