
/**
 * CMenu (Classic Menu)
 *
 * Modified version for the BonusThemes.com template Blogic
 * http://www.bonusthemes.com
 *
 * @version 1.3
 * @copyright Creative Pulse 2008-2009
 * @link http://www.creativepulse.eu/goto/cmenu
 */

function CMenu(aa){if(typeof aa.iname!='string'){alert('CMenu initialization error: Instance name is missing');
return;
}
this.iname=aa.iname;
var ba=navigator.userAgent.toLowerCase().match(/msie (\d(.\d*)?)/);
var ca=ba&&ba[1]&&ba[1]<7;
this.hide_timeout=typeof aa.hide_timeout!='number'?500:aa.hide_timeout;
this.mi_layers=typeof aa.mi_layers!='number'?1:aa.mi_layers;
if(this.mi_layers<1)this.mi_layers=1;
this.mi_empty_normal_class=typeof aa.mi_empty_normal_class!='string'?'':aa.mi_empty_normal_class;
this.mi_empty_hover_class=typeof aa.mi_empty_hover_class!='string'?'':aa.mi_empty_hover_class;
this.mi_full_normal_class=typeof aa.mi_full_normal_class!='string'?'':aa.mi_full_normal_class;
this.mi_full_hover_class=typeof aa.mi_full_hover_class!='string'?'':aa.mi_full_hover_class;
this.rounded_corners=typeof aa.rounded_corners!='boolean'?true:aa.rounded_corners;
this.transparency=typeof aa.transparency!='boolean'?true:aa.transparency;
if(this.transparency){this.transparency_ie6=typeof aa.transparency_ie6!='boolean'?false:aa.transparency_ie6;
if(!this.transparency_ie6&&ca)this.transparency=false;
}
if(this.transparency){this.min_opacity=typeof aa.min_opacity!='number'?0:aa.min_opacity;
if(this.min_opacity<0)this.min_opacity=0;
else if(this.min_opacity>100)this.min_opacity=100;
this.max_opacity=typeof aa.max_opacity!='number'?0:aa.max_opacity;
if(this.max_opacity<0)this.max_opacity=0;
else if(this.max_opacity>100)this.max_opacity=100;
}
this.panel_offset1_x=typeof aa.panel_offset1_x!='number'?0:aa.panel_offset1_x;
this.panel_offset1_y=typeof aa.panel_offset1_y!='number'?0:aa.panel_offset1_y;
this.panel_offset2_x=typeof aa.panel_offset2_x!='number'?0:aa.panel_offset2_x;
this.panel_offset2_y=typeof aa.panel_offset2_y!='number'?0:aa.panel_offset2_y;
if(!this.rounded_corners){this.panel_offset2_x=0;
this.panel_offset2_y=0;
}
this.itemborder_class=typeof aa.itemborder_class!='string'?'':aa.itemborder_class;
this.separator_class=typeof aa.separator_class!='string'?'':aa.separator_class;
this.panel_class=typeof aa.panel_class!='string'?'':aa.panel_class;
this.panel_tl_class=typeof aa.panel_tl_class!='string'?'':aa.panel_tl_class;
this.panel_tc_class=typeof aa.panel_tc_class!='string'?'':aa.panel_tc_class;
this.panel_tr_class=typeof aa.panel_tr_class!='string'?'':aa.panel_tr_class;
this.panel_ml_class=typeof aa.panel_ml_class!='string'?'':aa.panel_ml_class;
this.panel_mr_class=typeof aa.panel_mr_class!='string'?'':aa.panel_mr_class;
this.panel_bl_class=typeof aa.panel_bl_class!='string'?'':aa.panel_bl_class;
this.panel_bc_class=typeof aa.panel_bc_class!='string'?'':aa.panel_bc_class;
this.panel_br_class=typeof aa.panel_br_class!='string'?'':aa.panel_br_class;
this.ch_create=typeof aa.ch_create=='undefined'?null:aa.ch_create;
this.ch_mouseover=typeof aa.ch_mouseover=='undefined'?null:aa.ch_mouseover;
this.ch_mouseout=typeof aa.ch_mouseout=='undefined'?null:aa.ch_mouseout;
this.ch_panel_show=typeof aa.ch_panel_show=='undefined'?null:aa.ch_panel_show;
this.ch_panel_hide=typeof aa.ch_panel_hide=='undefined'?null:aa.ch_panel_hide;
this.ch_state_change=typeof aa.ch_state_change=='undefined'?null:aa.ch_state_change;
this.z_index=typeof aa.z_index=='undefined'?null:aa.z_index;
this.animate=typeof aa.animate!='undefined'||typeof aa.anim_step!='undefined'||typeof aa.anim_interval!='undefined';
if(typeof aa.animate=='boolean'&&!aa.animate)this.animate=false;
if(this.animate){this.anim_step=typeof aa.anim_step!='number'?30:aa.anim_step;
if(this.anim_step<=0||this.anim_step>100)this.anim_step=1;
this.anim_interval=typeof aa.anim_interval!='number'?100:aa.anim_interval;
}
this.side=typeof aa.side!='string'?'':aa.side.replace(/^\s+|\s+$/g,'').toLowerCase();
if(this.side!='left'&&this.side!='right'&&this.side!='up'&&this.side!='down')this.side='right';
if(this.side=='up'||this.side=='down'){this.edge_min=-1;
this.edge_max=-1;
var da=typeof aa.edge_min!='string'?null:this.wdg_from_ids(aa.edge_min);
var ea=typeof aa.edge_max!='string'?null:this.wdg_from_ids(aa.edge_max);
if(da||ea){if(!ea)ea=da;
else if(!da)da=ea;
this.edge_min=0;
var fa=da;
while(fa){this.edge_min+=fa.offsetLeft;
fa=fa.offsetParent;
}
this.edge_max=ea.offsetWidth;
var fa=ea;
while(fa){this.edge_max+=fa.offsetLeft;
fa=fa.offsetParent;
}}}
this.orientation=typeof aa.orientation!='string'?'':aa.orientation.replace(/^\s+|\s+$/g,'').toLowerCase();
if((this.side=='left'||this.side=='right')&&this.orientation!='up'&&this.orientation!='down')this.orientation='down';
else if((this.side=='up'||this.side=='down')&&this.orientation!='left'&&this.orientation!='right')this.orientation='right';
this.direction=this.side.charAt(0)+this.orientation.charAt(0);
this.last_inst_id=0;
this.menuitems=new Array();
this.registry=new Array();
this.timer_hide=0;
this.vis_mi=null;
this.wdg_base=document.getElementsByTagName('body')[0];
}
CMenu.prototype.wdg_from_ids=function(ga){ga=ga.split(',');
for(var i=0,len=ga.length;
i<len;
i++){var ha=document.getElementById(ga[i].replace(/^\s+|\s+$/g,''));
if(ha)return ha;
}
return null;
}
CMenu.prototype.registry_add=function(mi){this.registry.push(mi);
return this.registry.length-1;
}
CMenu.prototype.add_item=function(ia){ia.base=this;
ia.parent=this;
ia.iname=typeof ia.id!='string'?'':ia.id;
var mi=new CMenuItem(ia,true);
this.menuitems.push(mi);
return mi;
}
CMenu.prototype.run=function(){for(var i=0,len=this.menuitems.length;
i<len;
i++)this.menuitems[i].run();
}
CMenu.prototype.handle_mouseover=function(ja,e){if(this.timer_hide>0){clearTimeout(this.timer_hide);
this.timer_hide=0;
}
var mi=this.registry[ja];
if(this.vis_mi){var ka=new Array();
mi.query_panels(ka,true);
var la=new Array();
this.vis_mi.query_panels(la,false);
while(true){var ma=la.shift();
var na=ka.shift();
if(!ma)break;
if(!na||ma!=na){ma.hide_now();
while(ma=la.shift())ma.hide_now();
break;
}}}
this.vis_mi=mi;
mi.handle_mouseover(e);
}
CMenu.prototype.handle_mouseout=function(oa,e){if(this.timer_hide==0)this.timer_hide=setTimeout('document["'+this.iname+'"].hide_process('+oa+')',this.hide_timeout);
var mi=this.registry[oa];
mi.handle_mouseout(e);
}
CMenu.prototype.handle_click=function(pa){var mi=this.registry[pa];
mi.handle_click();
}
CMenu.prototype.hide_process=function(qa){var mi=this.registry[qa];
mi.hide_process();
}
function CMenuItem(ra,sa){this.is_header=sa;
this.base=ra.base;
this.parent=ra.parent;
this.iname=typeof ra.iname!='string'?'':ra.iname;
this.link=typeof ra.link!='string'?'':ra.link;
this.caption=typeof ra.caption!='string'?'':ra.caption;
this.selection=typeof ra.selection!='number'?0:ra.selection;
this.type=typeof ra.type!='string'?'':ra.type;
if(this.type!='text'&&this.type!='link'&&this.type!='link_new'&&this.type!='link_popup'&&this.type!='separator'){if(this.link!=''&&this.caption!='')this.type='link';
else if(this.caption!='')this.type='text';
else this.type='separator';
}
this.panel_inner=null;
this.panel_outer=null;
this.panel_x=0;
this.panel_y=0;
this.panel_outer_w=0;
this.panel_outer_h=0;
this.panel_inner_w=0;
this.panel_inner_h=0;
this.panel_ch_x=0;
this.panel_ch_y=0;
this.panel_ch_min_w=0;
this.anim_progress=0;
this.anim_speed=0;
this.anim_timer=0;
this.menuitems=new Array();
this.state_mouseover=false;
this.state_panelopen=false;
if(this.iname==''){this.wdg=document.createElement('div');
if(typeof ra.id!='undefined')this.wdg.id=ra.id;
var ta=this.parent.panel_inner;
if(this.base.itemborder_class!=''&&ta.childNodes.length>0){var ib=document.createElement('div');
ta.appendChild(ib);
ib.className=this.base.itemborder_class;
}
ta.appendChild(this.wdg);
ta=this.wdg;
for(var i=2;
i<=this.base.mi_layers;
i++){obj=document.createElement('div');
ta.appendChild(obj);
obj.className='l'+i;
ta=obj;
}
if(this.type=='separator'){if(this.base.separator_class!='')this.wdg.className=this.base.separator_class;
}
else{if(this.caption!=''){var ua=document.createElement('div');
ua.innerHTML=this.caption;
ua.className='text';
ta.appendChild(ua);
}
if(this.type=='link'||this.type=='link_new'||this.type=='link_popup')this.wdg.style.cursor='pointer';
this.h_state_change();
}}
else{this.wdg=document.getElementById(this.iname);
}
this.reg_id=this.base.registry_add(this);
this.wdg.setAttribute('base_iname',this.base.iname);
this.wdg.setAttribute('reg_id',this.reg_id);
this.wdg.onmouseover=function(e){document[this.getAttribute('base_iname')].handle_mouseover(this.getAttribute('reg_id'),e);
}
this.wdg.onmouseout=function(e){document[this.getAttribute('base_iname')].handle_mouseout(this.getAttribute('reg_id'),e);
}
this.wdg.onclick=function(){document[this.getAttribute('base_iname')].handle_click(this.getAttribute('reg_id'));
}
if(this.base.ch_create!=null)this.base.ch_create(this);
}
CMenuItem.prototype.last_child=function(va){while(va.firstChild)va=va.firstChild;
return va;
}
CMenuItem.prototype.isMouseEnterOrLeave=function(wa,e){if(e.type!='mouseout'&&e.type!='mouseover')return false;
var xa=e.relatedTarget||(e.type=='mouseout'?e.toElement:e.fromElement);
while(xa&&xa!=wa)xa=xa.parentNode;
return xa!=wa;
}
CMenuItem.prototype.add_item=function(ya){if(!this.panel_outer){this.panel_outer=document.createElement('div');
this.base.wdg_base.appendChild(this.panel_outer);
this.panel_outer.style.position='absolute';
this.panel_outer.style.overflow='hidden';
if(this.base.z_index!=null)this.panel_outer.style.zIndex=this.base.z_index;
if(this.base.rounded_corners){var za=document.createElement('table');
this.panel_outer.appendChild(za);
za.setAttribute('cellSpacing',0);
za.setAttribute('cellPadding',0);
var Aa=document.createElement('tbody');
za.appendChild(Aa);
var tr=document.createElement('tr');
Aa.appendChild(tr);
var Ba=document.createElement('td');
tr.appendChild(Ba);
if(this.base.panel_tl_class!='')Ba.className=this.base.panel_tl_class;
var Ca=document.createElement('td');
tr.appendChild(Ca);
if(this.base.panel_tc_class!='')Ca.className=this.base.panel_tc_class;
var Da=document.createElement('td');
tr.appendChild(Da);
if(this.base.panel_tr_class!='')Da.className=this.base.panel_tr_class;
var tr=document.createElement('tr');
Aa.appendChild(tr);
var Ea=document.createElement('td');
tr.appendChild(Ea);
if(this.base.panel_ml_class!='')Ea.className=this.base.panel_ml_class;
var Fa=document.createElement('td');
tr.appendChild(Fa);
Fa.setAttribute('nowrap','nowrap');
var Ga=document.createElement('td');
tr.appendChild(Ga);
if(this.base.panel_mr_class!='')Ga.className=this.base.panel_mr_class;
var tr=document.createElement('tr');
Aa.appendChild(tr);
var Ha=document.createElement('td');
tr.appendChild(Ha);
if(this.base.panel_bl_class!='')Ha.className=this.base.panel_bl_class;
var Ia=document.createElement('td');
tr.appendChild(Ia);
if(this.base.panel_bc_class!='')Ia.className=this.base.panel_bc_class;
var Ja=document.createElement('td');
tr.appendChild(Ja);
if(this.base.panel_br_class!='')Ja.className=this.base.panel_br_class;
this.panel_inner=document.createElement('div');
Fa.appendChild(this.panel_inner);
}
else{this.panel_inner=document.createElement('div');
this.panel_outer.appendChild(this.panel_inner);
}
if(this.base.panel_class!='')this.panel_inner.className=this.base.panel_class;
}
ya.base=this.base;
ya.parent=this;
var mi=new CMenuItem(ya,false);
this.menuitems.push(mi);
this.h_state_change();
return mi;
}
CMenuItem.prototype.run=function(){if(this.panel_outer){this.panel_outer.style.position='absolute';
this.panel_outer.style.visibility='hidden';
this.panel_outer.style.left='0px';
this.panel_outer.style.top='0px';
this.panel_outer.style.display='block';
this.panel_outer_w=this.panel_outer.offsetWidth;
this.panel_outer_h=this.panel_outer.offsetHeight;
this.panel_inner_w=this.panel_inner.offsetWidth;
this.panel_inner_h=this.panel_inner.offsetHeight;
this.panel_outer.style.display='none';
this.panel_outer.style.visibility='visible';
}
for(var i=0,len=this.menuitems.length;
i<len;
i++)this.menuitems[i].run();
}
CMenuItem.prototype.query_panels=function(ar,Ka){if(Ka&&this.anim_speed<0)this.anim_speed=this.base.anim_step;
if(this.panel_outer)ar.unshift(this);
if(!this.is_header)this.parent.query_panels(ar,Ka);
}
CMenuItem.prototype.handle_timer=function(){this.anim_timer=0;
this.anim_progress+=this.anim_speed;
var La=this.anim_speed>0?Math.ceil(this.anim_progress):Math.floor(this.anim_progress);
if(La<=0){this.panel_hide();
this.anim_speed=0;
}
else{this.panel_show();
if(La>100)La=100;
this.animateit(La);
if(La<100)this.anim_timer=setTimeout('document["'+this.base.iname+'"].registry['+this.reg_id+'].handle_timer()',this.base.anim_interval);
else this.anim_speed=0;
}}
CMenuItem.prototype.animateit=function(Ma){if(this.base.transparency){var Na=Math.round((Ma/100)*(this.base.max_opacity-this.base.min_opacity)+this.base.min_opacity);
this.panel_outer.style.opacity=Na/100;
this.panel_outer.style.filter='alpha(opacity='+Na+')';
}
var h=Math.round(this.panel_outer_h*Ma/100);
switch(this.base.direction){case 'dl':case 'dr':case 'ld':case 'rd':this.panel_outer.style.height=h+'px';
break;
case 'ul':case 'ur':case 'lu':case 'ru':this.panel_outer.style.top=(this.panel_y+this.panel_outer_h-h)+'px';
this.panel_outer.style.height=h+'px';
this.panel_outer.scrollTop=this.panel_outer_h-h;
break;
}}
CMenuItem.prototype.hide_process=function(){if(this.panel_outer){if(this.base.animate&&this.anim_progress>1){if(this.anim_speed==0)this.anim_progress=100-this.base.anim_step;
this.anim_speed=-this.base.anim_step;
if(this.anim_timer==0)this.anim_timer=setTimeout('document["'+this.base.iname+'"].registry['+this.reg_id+'].handle_timer()',this.base.anim_interval);
}
else{this.panel_hide();
}}
if(!this.is_header)this.parent.hide_process();
}
CMenuItem.prototype.hide_now=function(){if(this.anim_timer>0){clearTimeout(this.anim_timer);
this.anim_timer=0;
}
this.anim_speed=0;
this.anim_progress=0;
if(this.panel_outer)this.panel_hide();
}
CMenuItem.prototype.handle_mouseover=function(e){if(!this.isMouseEnterOrLeave(this.wdg,e||window.event))return;
if(this.base.ch_mouseover!=null)this.base.ch_mouseover(this);
if(this.panel_outer){if(this.panel_ch_x==0&&this.panel_ch_y==0){var x=0,y=0,obj=this.wdg,x2=0;
while(obj){x+=obj.offsetLeft;
y+=obj.offsetTop;
obj=obj.offsetParent;
}
switch(this.base.direction){case 'ul':if(this.is_header){x+=this.wdg.offsetWidth-this.panel_outer_w;
y-=this.panel_outer_h;
}
else{y+=this.wdg.offsetHeight-this.panel_outer_h;
x-=this.panel_outer_w;
if(this.base.edge_min>-1&&x<this.base.edge_min){x+=this.panel_outer_w+this.wdg.offsetWidth;
if(x+this.panel_outer_w>this.base.edge_max)x=this.base.edge_max-this.panel_outer_w;
}}
break;
case 'ur':if(this.is_header){y-=this.panel_outer_h;
}
else{y+=this.wdg.offsetHeight-this.panel_outer_h;
x+=this.wdg.offsetWidth;
if(this.base.edge_max>-1&&x+this.panel_outer_w>this.base.edge_max){x-=this.wdg.offsetWidth+this.panel_outer_w;
if(x<this.base.edge_min)x=this.base.edge_min;
}}
break;
case 'dl':if(this.is_header){x+=this.wdg.offsetWidth-this.panel_outer_w;
y+=this.wdg.offsetHeight;
}
else{x-=this.panel_outer_w;
if(this.base.edge_min>-1&&x<this.base.edge_min){x+=this.panel_outer_w+this.wdg.offsetWidth;
if(x+this.panel_outer_w>this.base.edge_max)x=this.base.edge_max-this.panel_outer_w;
}}
break;
case 'dr':if(this.is_header){y+=this.wdg.offsetHeight;
}
else{x+=this.wdg.offsetWidth;
if(this.base.edge_max>-1&&x+this.panel_outer_w>this.base.edge_max){x-=this.wdg.offsetWidth+this.panel_outer_w;
if(x<this.base.edge_min)x=this.base.edge_min;
}}
break;
case 'lu':x-=this.panel_outer_w;
y+=this.wdg.offsetHeight-this.panel_outer_h;
break;
case 'ld':x-=this.panel_outer_w;
break;
case 'ru':x+=this.wdg.offsetWidth;
y+=this.wdg.offsetHeight-this.panel_outer_h;
break;
case 'rd':x+=this.wdg.offsetWidth;
break;
}
this.panel_x=x;
this.panel_y=y;
if(this.is_header){this.panel_x+=this.base.panel_offset1_x;
this.panel_y+=this.base.panel_offset1_y;
}else{
this.panel_x+=this.base.panel_offset2_x;
this.panel_y+=this.base.panel_offset2_y;
}}else{
this.panel_x=this.panel_ch_x;
this.panel_y=this.panel_ch_y;
}
if(this.panel_ch_min_w>0&&this.panel_outer_w<this.panel_ch_min_w)this.panel_inner.style.width=(this.panel_inner_w+this.panel_ch_min_w-this.panel_outer_w)+'px';
this.panel_outer.style.left= this.panel_x -99 +'px';
this.panel_outer.style.top=this.panel_y+'px';
this.panel_show();
if(this.base.animate&&this.anim_progress<100){if(this.anim_speed==0){this.anim_progress=1;
this.animateit(1);
}
this.anim_speed=this.base.anim_step;
if(this.anim_timer==0)this.anim_timer=setTimeout('document["'+this.base.iname+'"].registry['+this.reg_id+'].handle_timer()',this.base.anim_interval);
}}
this.state_mouseover=true;
this.h_state_change();
}
CMenuItem.prototype.handle_mouseout=function(e){if(!this.isMouseEnterOrLeave(this.wdg,e||window.event))return;
if(this.base.ch_mouseout!=null)this.base.ch_mouseout(this);
this.state_mouseover=false;
this.h_state_change();
}
CMenuItem.prototype.handle_click=function(){if(this.link!=''){switch(this.type){case 'link':window.location=this.link;
break;
case 'link_new':window.open(this.link,'_blank');
break;
case 'link_popup':window.open(this.link,'','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550');
break;
}}}
CMenuItem.prototype.panel_show=function(){if(this.panel_outer.style.display!='block'){if(this.base.ch_panel_show!=null)this.base.ch_panel_show(this);
this.panel_outer.style.height='1px';
this.panel_outer.style.display='block';
this.state_panelopen=true;
this.h_state_change();
}}
CMenuItem.prototype.panel_hide=function(){if(this.panel_outer.style.display!='none'){if(this.base.ch_panel_hide!=null)this.base.ch_panel_hide(this);
this.panel_outer.style.display='none';
this.state_panelopen=false;
this.h_state_change();
}}
CMenuItem.prototype.h_state_change=function(){if(this.base.ch_state_change!=null)this.base.ch_state_change(this);
if(!this.is_header){if(this.type!='separator'){var Oa='mi'+(this.panel_outer?'_full':'_empty')+(this.state_mouseover||this.state_panelopen?'_hover':'_normal')+'_class';
this.wdg.className=this.base[Oa];
}}}
