',
container = $('#drop-panel-container'),
contents = $(container).html();
if (isIE8) {
$(container).replaceWith(f+contents+b)
}
}
function dropPanelSetUp(data) {
/* buttons should be a dataobject of strings representing IDs
the hide and show functions are expecting IDs so passing a class will result in a
failure.
click as the action is assumed for now
the data object should look like this:
{ masterlistener:(string[dom id]),
panel:(string[dom id]),
eventgroup1:{ button:(string[dom id]),
content:(string[dom id]),
offset:{x:(int),y:(int)},
on_state_class: ''(string)
},
eventgroup2:{ button:(string[dom id]),
content:(string[dom id]),
offset:{x:(int),y:(int)},
on_state_class: ''(string)
} ... etc
}
The drop panel nodes should be placed so they share the same offset parent as the buttons that activate it.
NOTE: IE8 Got-chya: the ID for the panel is hard coded into the IE8 rouned corners code.
If you have changed the ID for the drop panel and are having trouble with IE8
change the ID in the template string in this function: ie8DropPanel()
*/
var speed = 300,
panel = $('#'+data.panel),
buttons = [];
for (var i=1,eg; eg=data[('eventgroup'+i)]; i++) {
var bp = $('#'+eg.button).position(), //button position
ph = $('#'+eg.button).height(), //button height
panelPos = [bp.top+ph, bp.left, eg.offset];
on_state_class = eg.on_state_class;
buttons.push([$('#'+eg.button),$('#'+eg.content),panelPos,eg.button,on_state_class]);
}
$('#'+data.masterlistener).bind('click',{speed:speed,panel:panel,buttons:buttons},function(event){
var org = event.target,
speed = event.data.speed,
panel = event.data.panel,
buttons = event.data.buttons,
panel_open = isPanelOpen(panel);
for (var i=buttons.length-1, b; b=buttons[i]; i--) {
/*
* b[0] = button DOM object
* b[1] = content DOM object
* b[2] = the display co-ord object:
* [0] = top (int)
* [1] = left (int)
* [2] = offset object
* {x,y}(int,int)
* b[3] = button ID (string)
* b[4] = button 'on' class
*/
var button_id = b[3],
same_content = isSameContent(panel,b[1]);
if ( $(org).attr('id') === button_id || $(org).parents('#'+button_id).attr('id')){
if(!same_content) {
hideAllContent(buttons);
movePanel(panel,b[2]);
if (panel_open) {
showContent(b[1],b[0],b[4]);
} else {
showContent(b[1],b[0],b[4]);
showPanel(panel,speed);
}
} else {
hidePanel(panel,speed,b[4]);
}
}
}
function isPanelOpen(panel) {
return ($(panel).css('display').toLowerCase() === 'block');
}
function isSameContent (panel,content) {
return ($(content, panel).css('display').toLowerCase() === 'block');
}
function movePanel(panel,b) {
// b[0] top, b[1] left, b[2] {x,y}
$(panel).css({
'top': (b[0] + b[2].x)
});
$(panel).css({
'left': (b[1] + b[2].y)
});
}
function showPanel(panel,speed) {
$(panel).slideDown(speed);
}
function hidePanel(panel,speed) {
$(panel).slideUp(speed, function() {hideAllContent(buttons);});
}
function showContent(content, button, btn_class) {
$(content).show();
$(button).addClass(btn_class);
}
function hideContent(content) {
$(content).hide();
}
function hideAllContent(buttons) {
for (var i = buttons.length-1, b; b=buttons[i]; i--) {
$(b[1]).hide();
$(b[0]).removeClass(b[4]);
}
}
})
}
return {
ieRoundedCorners:ieRoundedCorners,
ie8DropPanel:ie8DropPanel,
dropPanelSetUp:dropPanelSetUp
}
})();
var headerNavication = (function($,cw) {
var nav_item_list = $('.cw-header .main-nav ul.main > li'),
channel_id_list = '',
channel,
sub_channel;
var findChannel = function () {
var winloc = isIE ? document.URL.split('/') : document.documentURI.split('/') ,
channel_id = winloc[3],
sub_chanel_id = winloc.length > 5 ? '/'+winloc[4]+'/' : '',
reg_sub_find_id = new RegExp(sub_chanel_id,'ig'),
reg_removed_id = /^nav-/i;
for (var i=nav_item_list.length-1,n; n=nav_item_list[i]; i--) {
if ( channel_id === $(n).children('a').attr('id').replace(reg_removed_id,'') ) {
var list = $(n).children('ul').children('li');
if (sub_chanel_id.length > 0) {
for (var j=list.length-1,l; l=list[j]; j--) {
if (reg_sub_find_id.test($(l).children('a').attr('href'))) {
break;
} else {
l = false;
}
}
}
break;
}
}
findChannel = function () {
return [n,l];
}
return [n,l];
}
var init = (function() {
channel = findChannel()[0] || nav_item_list[0];
sub_channel = findChannel()[1];
if (sub_channel) {
highlightSubChannel();
}
clearNav();
if(isIE) {
cw.ieRoundedCorners();
if(isIE8) {
cw.ie8DropPanel();
}
}
if ($('#handle-header').attr('id')) {
cw.dropPanelSetUp({
masterlistener: 'handle-header',
panel: ('drop-panel-container'),
eventgroup1: {
button: 'btn-newspapers',
content: 'panel-newspapers',
offset: {
x: 5,
y: 0
},
on_state_class: 'newspapers-dropdown-on'
},
eventgroup2: {
button: 'btn-networks',
content: 'panel-networks',
offset: {
x: 5,
y: 0
},
on_state_class: 'networks-dropdown-on'
}
});
}
//need to check state of search radio buttons since firefox doesn't reset to the default checked radio button
if($('.cw-header #radio-btn-yp:checked').attr('id') != null){
$('.cw-header #header-search-form').attr('action','http://canadacom.yellowpages.ca/search/');
$('.cw-header #header-search-string').attr('name','what');
$('.cw-header #radio-btn-yp').siblings('label').removeClass('selected');
$('.cw-header #radio-btn-yp').next().addClass('selected');
}
eventSetUp();
}())
function highlightSubChannel() {
if((document.location+"").indexOf("/sports/football/cfl/") > -1) $(".mainnav-item .cfl").addClass('sub-nav-highlight');
else if((document.location+"").indexOf("/sports/football/grey-cup-2011/") > -1) $(".mainnav-item .cfl").addClass('sub-nav-highlight');
else if((document.location+"").indexOf("/sports/football/nfl/") > -1) $(".mainnav-item .nfl").addClass('sub-nav-highlight');
else $(sub_channel).addClass('sub-nav-highlight');
}
function clearNav() {
clearTabs();
$(channel).children('ul').show();
$(channel).css('background-position', 'bottom right');
}
function eventSetUp() {
$('.cw-header .main-nav ').bind('mouseleave', function(event){
if (isIE) {
if ($(event.relatedTarget).parents('.main-nav').length 0)?"
" + value.substring(0,pos) + "" + value.substring(pos, term.length) + "
" + value.substring(pos + term.length) + "":value.substring(0, term.length) + "
" + value.substring(pos + term.length) + ""; }, scroll: false, selectFirst: false }); });
Source: http://feeds.canada.com/~r/canwest/F56/~3/ttF0WfqiRh0/story.html
earthquake california crimson tide crimson tide wake forest wake forest day light savings time curmudgeon