/**
 * Main script for the BonusThemes.com Holiday Template
 *
 * @package bt_holiday
 * @version 1.0
 * @copyright BonusThemes.com 2009
 * @link http://www.bonusthemes.com/goto/bt_holiday
 */


function bt_add_event(obj, event, func) {
	if (obj.addEventListener)
		obj.addEventListener(event, func, false);
	else if (obj.attachEvent)
		obj.attachEvent('on' + event, func);
}


// CMenu handlers

function holiday_get_wdg(wdg_center) {
	return {
		left: wdg_center.previousSibling.nodeType == 1 ? wdg_center.previousSibling : wdg_center.previousSibling.previousSibling,
		center: wdg_center,
		right: wdg_center.nextSibling.nodeType == 1 ? wdg_center.nextSibling : wdg_center.nextSibling.nextSibling
	}
}

function holiday_ch_create(mi) {
	if (mi.is_header) {
		var wdg = holiday_get_wdg(mi.wdg);
		wdg.left.style.cursor = 'pointer';
		wdg.center.style.cursor = 'pointer';
		wdg.right.style.cursor = 'pointer';
	}
}

function holiday_ch_mouseover(mi) {
	if (document.page_loaded && mi.is_header) {
		var wdg = holiday_get_wdg(mi.wdg);

		mi.panel_ch_x = -wdg.left.offsetWidth + 7;
		mi.panel_ch_y = mi.wdg.offsetHeight - 4;

		var obj = mi.wdg;
		mi.panel_ch_x += obj.offsetLeft;
		obj = obj.offsetParent;
		while (obj) {
			mi.panel_ch_x += obj.offsetLeft;
			mi.panel_ch_y += obj.offsetTop;
			obj = obj.offsetParent;
		}
		mi.panel_ch_min_w = wdg.left.offsetWidth + wdg.center.offsetWidth + wdg.right.offsetWidth;

		if (typeof mi.td_center_class == 'undefined') {
			mi.td_left_class = wdg.left.className;
			mi.td_center_class = wdg.center.className;
			mi.td_right_class = wdg.right.className;
		}

		if (mi.td_center_class == 'cmenu_hd_norm_c' || mi.td_center_class == 'cmenu_hd_sel_c') {
			wdg.left.className = 'cmenu_hd_hover_l';
			wdg.center.className = 'cmenu_hd_hover_c';
			wdg.right.className = 'cmenu_hd_hover_r';
		}
		else {
			wdg.left.className = 'cmenu_hd_hover_sub_l';
			wdg.center.className = 'cmenu_hd_hover_sub_c';
			wdg.right.className = 'cmenu_hd_hover_sub_r';
		}
	}
}

function holiday_menu_close(mi) {
	if (document.page_loaded) {
		var wdg = holiday_get_wdg(mi.wdg);
		if (typeof mi.td_center_class != 'undefined') {
			wdg.left.className = mi.td_left_class;
			wdg.center.className = mi.td_center_class;
			wdg.right.className = mi.td_right_class;
		}
	}
}

function holiday_ch_mouseout(mi) {
	if (mi.is_header && mi.menuitems.length == 0)
		holiday_menu_close(mi);
}

function holiday_ch_panel_hide(mi) {
	if (mi.is_header)
		holiday_menu_close(mi);
}


// page initialization

function holiday_page_init() {
	document.page_loaded = true;

	if (document['cmenu_items']) {
		document['mc'] = new CMenu({
			iname: 'mc',

			edge_min: 'pgside4',

			side: 'down',
			orientation: 'right',

			animate: true,
			anim_step: 10,
			anim_interval: 30,

			transparency: true,
			transparency_ie6: false,

			min_opacity: 0,
			max_opacity: 100,

			ch_create: holiday_ch_create,
			ch_mouseover: holiday_ch_mouseover,
			ch_mouseout: holiday_ch_mouseout,
			ch_panel_hide: holiday_ch_panel_hide,

			panel_offset1_x: 0,
			panel_offset1_y: 0,
			panel_offset2_x: 0,
			panel_offset2_y: 0,

			itemborder_class: 'cmenu_itemborder',
			separator_class: 'cmenu_separator',
			panel_class: 'cmenu_panel',
			panel_tl_class: 'cmenu_tl',
			panel_tc_class: 'cmenu_tc',
			panel_tr_class: 'cmenu_tr',
			panel_ml_class: 'cmenu_ml',
			panel_mr_class: 'cmenu_mr',
			panel_bl_class: 'cmenu_bl',
			panel_bc_class: 'cmenu_bc',
			panel_br_class: 'cmenu_br',

			shadow: true,

			panel_shadow_class: 'cmenu_panel',
			panel_shadow_tl_class: 'cmenu_shadow_tl',
			panel_shadow_tc_class: 'cmenu_shadow_tc',
			panel_shadow_tr_class: 'cmenu_shadow_tr',
			panel_shadow_ml_class: 'cmenu_shadow_ml',
			panel_shadow_mr_class: 'cmenu_shadow_mr',
			panel_shadow_bl_class: 'cmenu_shadow_bl',
			panel_shadow_bc_class: 'cmenu_shadow_bc',
			panel_shadow_br_class: 'cmenu_shadow_br',

			shadow_offset_x: 5,
			shadow_offset_y: 5,

			min_shadow_opacity: 0,
			max_shadow_opacity: 20,

			mi_empty_normal_class: 'cmenu_mi_empty_normal',
			mi_empty_hover_class: 'cmenu_mi_empty_hover',
			mi_full_normal_class: 'cmenu_mi_full_normal',
			mi_full_hover_class: 'cmenu_mi_full_hover'

		});

		var len = document['cmenu_items'].length;
		if (len > 0) {
			for (var i = 0; i < len; i++) {
				var item = document['cmenu_items'][i];

				if (typeof item.parent_id == 'undefined')
					this[item.id] = document['mc'].add_item(item);
				else
					this[item.id] = this[item.parent_id].add_item(item);
			}
		
			document['mc'].run();
		}
	}
}

bt_add_event(window, 'load', holiday_page_init);


function holiday_fix_sizes() {
	if (navigator.userAgent.toLowerCase().match(/msie (\d(.\d*)?)/)) {
		var tds = document.getElementsByTagName('td');
		for (var i = 0; i < tds.length; i++)
			if (tds[i].className && tds[i].className == 'edgetd')
				tds[i].width = '1%';
	}

	var src = document.getElementById('top_container');
	var trg = document.getElementById('top_side');
	if (src && trg)
		trg.style.height = src.offsetHeight + 'px';

	var vreg0 = document.getElementById('vreg0');
	var vreg1 = document.getElementById('vreg1');
	var vreg2 = document.getElementById('vreg2');
	if (vreg0 && vreg1 && vreg2) {
		var vreg0_y = 0, obj = vreg0;
		while (obj) {
			vreg0_y += obj.offsetTop;
			obj = obj.offsetParent;
		}
	
		var vreg1_y = 0, obj = vreg1;
		while (obj) {
			vreg1_y += obj.offsetTop;
			obj = obj.offsetParent;
		}
	
		var vreg2_y = 0, obj = vreg2;
		while (obj) {
			vreg2_y += obj.offsetTop;
			obj = obj.offsetParent;
		}
	
		var offset = 5;
		var diff = vreg0_y - vreg2_y + offset;
		if (diff > 0)
			vreg1.style.height = (vreg2_y - vreg1_y + diff) + 'px';
	}

	if (document.page_loaded)
		clearInterval(document.holiday_fxsz_timer);
}
document.holiday_fxsz_timer = setInterval('holiday_fix_sizes()', 500);

var goto_top_type = -1;
var goto_top_itv = 0;

function goto_top_timer() {
	var y = goto_top_type == 1 ? document.documentElement.scrollTop : document.body.scrollTop;
	var moveby = 15;

	y -= Math.ceil(y * moveby / 100);
	if (y < 0)
		y = 0;

	if (goto_top_type == 1)
		document.documentElement.scrollTop = y;
	else
		document.body.scrollTop = y;

	if (y == 0) {
		clearInterval(goto_top_itv);
		goto_top_itv = 0;
	}
}

function goto_top() {
	if (goto_top_itv == 0) {
		if (document.documentElement && document.documentElement.scrollTop)
			goto_top_type = 1;
		else if (document.body && document.body.scrollTop)
			goto_top_type = 2;
		else
			goto_top_type = 0;

		if (goto_top_type > 0)
			goto_top_itv = setInterval('goto_top_timer()', 50);
	}
}
