/*  Features Promo
 *  Authored by Kelvin Tse
 *
 *  Copyright 2007 IDG Australia
/*--------------------------------------------------------------------------*/


var iepng_blank = "url('http://demo.idg.com.au/fpromo/blank.gif')";

if (basepath == undefined) { basepath = ''; }
var iepng_htc = "url(" + basepath + "/iepngfix.htc)";

function fpromo(objname,promoImgs,promoTxts,interval,effects) {

	fpromo_obj = document.getElementById(objname);
	
	fpromo_obj.promoDivs = new Array;
	fpromo_obj.promo_sel_id = -1;

	if (interval == undefined) { fpromo_obj.interval = 7500; }
	else { fpromo_obj.interval = interval; }

	loadingimg= new Image(); 
	loadingimg.src="http://demo.idg.com.au/fpromo/fpromo_loadingImg.gif"; 

	var promosInfo = childbyClass('promos',fpromo_obj)[0];
	var promoMenuBg = childbyClass('menu_bg',fpromo_obj)[0];
	ie_fix_pngBg(promoMenuBg);
	var promoitems = promosInfo.getElementsByTagName('a');
	var promos_holder = childbyClass('promos_holder',fpromo_obj)[0];
	var menuholder = childbyClass('menu',fpromo_obj)[0];
	var buttons = childbyClass('buttons',fpromo_obj)[0];
	var readmore = childbyClass('readmore',buttons)[0];
	var btnPrev = childbyClass('prev',buttons)[0];
	var btnNext = childbyClass('next',buttons)[0];
	ie_fix_pngBg(childbyClass('text_bg',readmore)[0]);
	ie_fix_pngBg(childbyClass('arrow',readmore)[0]);
	readmore.id = objname + "_readmore";
	fpromo_obj.readmore = readmore;
	readmore.onclick = fpromo_gotopage;
	var readmoreHl = childbyClass('hl',readmore)[0];
	ie_fix_pngBg(childbyClass('t',readmoreHl)[0]);
	ie_fix_pngBg(childbyClass('a',readmoreHl)[0]);
	readmoreHl.id = objname + "_readmore_hl";
	changeOpac(0, readmoreHl);
	readmore.hlObj = readmoreHl;
	btnPrev.id = objname + "_btnPrev";
	childbyClass('hl',btnPrev)[0];
	btnPrev.childNodes[0].id = objname + "_btnPrev_hl";
	btnPrev.hlObj = btnPrev.childNodes[0];
	changeOpac(0, btnPrev.childNodes[0]);
	btnNext.id = objname + "_btnNext";
	btnNext.childNodes[0].id = objname + "_btnNext_hl";
	changeOpac(0, btnNext.childNodes[0]);
	btnNext.hlObj = btnNext.childNodes[0];
	ie_fix_pngBg(btnPrev); ie_fix_pngBg(childbyClass('l',btnPrev)[0]);
	ie_fix_pngBg(btnNext); ie_fix_pngBg(childbyClass('l',btnNext)[0]);
	readmore.onmouseover = readmore.onmouseout = buttonHover;
	readmore.fpromo_obj = btnNext.fpromo_obj = btnPrev.fpromo_obj = fpromo_obj;
	readmore.origY = findPos(readmore)[1];
	readmore.style.top = '1000px';
	if (promoitems.length < 2) { btnPrev.style.display = btnNext.style.display = "none"; }
	btnPrev.onmouseover = btnPrev.onmouseout = buttonHover;
	btnNext.onmouseover = btnNext.onmouseout = buttonHover;
	btnNext.onclick = function() { prevnextPromo(this.fpromo_obj,1); return false; };
	btnPrev.onclick = function() { prevnextPromo(this.fpromo_obj,-1); return false; };
	fpromo_obj.hoverBg_obj = childbyClass('menu_hover_bg',fpromo_obj)[0];
	for (var i = 0, length = promoitems.length; i < length; i++) {
		promoitem = promoitems[i];
		var promo = new Object;
		promo.url = promoitem.href;
		promo.image = promoImgs[i];
		promo.title = promoitem.innerHTML;
		if (promoitem.title)
			promo.readmore = promoitem.title;
		else
			promo.readmore = "Read more";
		var promoSlide = document.createElement('div');
		promoSlide.url = promo.url;
		promoSlide.onclick = fpromo_gotopage;
		promoSlide.className = "promo";
		promoSlide.id = objname + "_promo_" + i;
		promos_holder.appendChild(promoSlide);
		if (promoTxts[i] != '') {
			var promoText = document.createElement('div');
			promoText.className = "text";
			promoText.innerHTML = promoTxts[i];
			promoSlide.appendChild(promoText);
		}
		var promoImage = document.createElement('img');
		promoImage.src = promo.image;
		promoImage.alt = promo.title;
		promoSlide.appendChild(promoImage);
		promo.promoObj = promoSlide;
		var menuItemDiv = document.createElement('div');
		menuItemDiv.onmouseover = menuItemDiv.onmouseout = fpromo_mitem_sel;
		menuItemDiv.onclick = fpromo_gotopage;
		menuItemDiv.fpromo_obj = fpromo_obj;
		menuItemDiv.id = objname + "_mitem_" + i; menuItemDiv.className = "menu_item";
		menuItemDiv.url = promo.url;
		menuItemDiv.promoObj = promo.promoObj;
		menuItemDiv.promoID = i;
		menuItemDiv.readmoreLabel = promo.readmore;
		menuholder.appendChild(menuItemDiv);
		var bgDiv = document.createElement('div'); bgDiv.className = "bg"; menuItemDiv.appendChild(bgDiv);
		var hlDiv = document.createElement('div'); hlDiv.className = "hl"; menuItemDiv.appendChild(hlDiv); menuItemDiv.hl_obj = hlDiv;
		ie_fix_pngBg(bgDiv); ie_fix_pngBg(hlDiv);
		var overhlDiv = document.createElement('div'); overhlDiv.className = "over_hl"; menuItemDiv.appendChild(overhlDiv);
		var numDiv = document.createElement('div'); numDiv.className = "num_div"; overhlDiv.appendChild(numDiv);
		var numaDiv = document.createElement('div'); numaDiv.className = "num"; numaDiv.innerHTML = i + 1; numDiv.appendChild(numaDiv);
		var titleDiv = document.createElement('div'); titleDiv.className = "title"; titleDiv.innerHTML = promo.title; overhlDiv.appendChild(titleDiv);
		fpromo_obj.promoDivs[i] = menuItemDiv;
	}
	promosInfo.style.display = "none";

	fpromo_obj.fpcont = (childbyClass('fpcont',fpromo_obj))[0];
	fpromo_obj.menu_obj = (childbyClass('menu_container',fpromo_obj))[0];
	fpromo_obj.menu_obj.fpcont = fpromo_obj.fpcont;
	fpromo_obj.menu_inner_obj = (childbyClass('menu',fpromo_obj.menu_obj))[0];
	fpromo_obj.menu_inner_obj.fpromo_obj = fpromo_obj;
	fpromo_obj.menu_inner_obj.onmouseover = fpromo_obj.menu_inner_obj.onmouseout = fpromo_menu_toggle;

	fpromo_obj.fpcont.style.visibility = "visible";
	
	fpromo_obj.onmouseover = function() { stopRotatePromos(this.id); }
	fpromo_obj.onmouseout = function() { resetRotPromos(this.id); }

	this.startRotating = function() { rotatePromos(objname); }
	fpromo_obj.effects = effects;
	
	if (getStyle(fpromo_obj.menu_obj,'display') == 'none') { fpromo_obj.menuDisabled = true; }
	else { fpromo_obj.menuDisabled = false; }

	if (getStyle(fpromo_obj.readmore,'display') == 'none') { fpromo_obj.readmeDisabled = true; }
	else { fpromo_obj.readmeDisabled = false; }

	disableSelection(fpromo_obj);
	//addLoadEvent(function(){ fpromo_init(objname); });
}

function fpromo_init(objname) {
	var fpromo_obj = elem(objname);
	fpromo_obj.fpcont.style.display = "block";
	//if (hoverBg = getStyle(fpromo_obj.hoverBg_obj,'backgroundImage')) fpromo_obj.hoverBg = hoverBg;
	rotatePromos(objname);
}

function rotatePromos(objname) {
	obj = elem(objname);
	prevnextPromo(obj, 1);
	resetRotPromos(objname)
}

function resetRotPromos(objname) {
	obj = elem(objname);
	clearTimeout(obj.rotateTimeout);
	obj.rotateTimeout = setTimeout('rotatePromos("' + objname +'")', obj.interval);
}

function stopRotatePromos(objname) {
	obj = elem(objname);
	clearTimeout(obj.rotateTimeout);
}

function prevnextPromo(obj, dir) {
	if (!obj.hoverBg) {
		if (hoverBg = getStyle(obj.hoverBg_obj,'backgroundImage')) obj.hoverBg = hoverBg;
	}
	if (dir == undefined) { dir = 1; }
	obj.promo_sel_id += dir * 1;
	if (obj.promo_sel_id >= obj.promoDivs.length) { obj.promo_sel_id = 0; }
	if (obj.promo_sel_id < 0) { obj.promo_sel_id = obj.promoDivs.length - 1; }
	if (obj.effects) {
		fpromo_mitem_sel_obj(obj.promoDivs[obj.promo_sel_id]);
	} else {
		fpromo_mitem_sel_obj_nofade(obj.promoDivs[obj.promo_sel_id]);
	}
	resetRotPromos(obj.id)
}

function buttonHover(e)  {
	if (!e) var e = window.event;
	
	if (this.hlObj) {
		if (e.type == 'mouseover') {
			//if (this.fpromo_obj && (this.className == 'readmore')) stopRotatePromos(this.fpromo_obj.id);
			flash(this.hlObj.id);
		} else {
			//if (this.fpromo_obj && (this.className == 'readmore')) resetRotPromos(this.fpromo_obj.id);
			flashStop(this.hlObj.id);
		}
	}
}

function flash(id) {
	obj = elem(id);
	obj.style.display = "block";
	obj.runEnd = function() { opacity(this.id,90,20,3); this.runEnd = function() { flash(this.id); }; }
	opacity(id,obj.style.opacity * 100, 90, 3);
	// changeOpac(30,id);
}

function flashStop(id) {
	obj = elem(id);
	clearTimeout(obj.opacTimeout);
	obj.runEnd = function() { this.style.display = "none"; }
	opacity(id, (obj.style.opacity * 100), 0, 10);
	// changeOpac(0,id);
}

function fpromo_hideReadmore(obj) {
	readmore = obj.fpromo_obj.readmore;
	if (!readmore.objStyleOld) readmore.objStyleOld = readmore.style.display;
	readmore.style.display = "none";
	return readmore;
}

function fpromo_setButtonText(obj) {
	//readmore = fpromo_hideReadmore(obj);
	readmore = obj.fpromo_obj.readmore;
	if (obj.fpromo_obj.readmeDisabled) return;
	if (obj.readmoreLabel == "") return;
	obj.fpromo_obj.promo_sel_id = obj.promoID;
	obj.fpromo_obj.readmore.url = obj.url;
	readmoreTxt = readmore.childNodes[0].childNodes[0];
	readmoreTxtBg = readmore.childNodes[0];
	var textpadding = 18; var arrowWidth = 25;
	var textWidth = fpromo_textWidth(obj.fpromo_obj,obj.readmoreLabel);
	textWidth = textWidth + ((textWidth + 1) % 2);
	readmoreTxt.style.width = textWidth + "px";
	readmoreTxt.innerHTML = obj.readmoreLabel;
	readmore.childNodes[2].style.width = (textWidth + textpadding + arrowWidth) + "px";
	readmore.childNodes[2].childNodes[0].childNodes[0].style.width = (textWidth + textpadding) + "px";
	//readmore.style.display = readmore.objStyleOld;
	if (readmore.origY != undefined) { readmore.style.top = readmore.origY + "px"; readmore.origY = undefined; }
}

function fpromo_mitem_sel(e)  {
	if (!e) var e = window.event;

	if (e.type == 'mouseover') {		
		fpromo_mitem_sel_obj_nofade(this);
		//stopRotatePromos(this.fpromo_obj.id)
	} else {
		//resetRotPromos(this.fpromo_obj.id);
	}
}

function fpromo_mitem_sel_obj_old(selObj) {
	if (selObj.fpromo_obj.menuitem_sel != undefined) {
		if (selObj.fpromo_obj.menuitem_sel == selObj.id) return;
		prev = elem(selObj.fpromo_obj.menuitem_sel);
		prev.className = prev.origClass;
		/* glory for ie */
		//prev.promoObj.style.display = "none";
		// opacity(prev.promoObj.id, 100, 0, 10);
	}
	if (selObj.origClass == undefined) {
		selObj.origClass = selObj.className;
	}
	
	selObj.className = selObj.origClass + ' sel';
	selObj.fpromo_obj.menuitem_sel = selObj.id;
	//selObj.promoObj.style.display = "block";
	changeOpac(0, selObj.promoObj);
	opacity(selObj.promoObj.id, 0, 100, 25);
	fpromo_setButtonText(selObj);
}

function fpromo_mitem_sel_obj(selObj) {
	if (selObj.fpromo_obj.menuitem_sel != undefined) {
		if (selObj.fpromo_obj.menuitem_sel == selObj.id) return;
		prev = elem(selObj.fpromo_obj.menuitem_sel);
		//prev.className = prev.origClass;
		if (!selObj.fpromo_obj.menuDisabled)
			prev.hl_obj.style.left = "-1000px";
		/* glory for ie */
		prev.promoObj.style.zIndex = "1";
		//prev.promoObj.style.display = "none";
		// opacity(prev.promoObj.id, 100, 0, 10);
		selObj.promoObj.prevID = prev.promoObj.id;
		//selObj.promoObj.runEnd = function() { document.getElementById(this.prevID).style.display = 'none'; }
		selObj.promoObj.runEnd = function() { document.getElementById(this.prevID).style.top = '-1000px'; }
	}
	if (selObj.origClass == undefined) {
		selObj.origClass = selObj.className;
	}
	
	//selObj.className = selObj.origClass + ' sel';
	if (!selObj.fpromo_obj.menuDisabled)
		selObj.hl_obj.style.left = "0";
	selObj.fpromo_obj.menuitem_sel = selObj.id;
	//selObj.promoObj.style.display = "block";
	selObj.promoObj.style.top = "0px";
	changeOpac(0, selObj.promoObj);
	selObj.promoObj.style.zIndex = "2";
	opacity(selObj.promoObj.id, 0, 100, 50);
	fpromo_setButtonText(selObj);
}

function fpromo_mitem_sel_obj_nofade(selObj) {
	if (selObj.fpromo_obj.menuitem_sel != undefined) {
		if (selObj.fpromo_obj.menuitem_sel == selObj.id) return;
		prev = elem(selObj.fpromo_obj.menuitem_sel);
		//prev.className = prev.origClass;
		if (!selObj.fpromo_obj.menuDisabled)
			prev.hl_obj.style.left = "-1000px";
		//prev.promoObj.style.display = "none";
		prev.promoObj.style.top = "-1000px";
	}
	if (selObj.origClass == undefined) {
		selObj.origClass = selObj.className;
	}
	
	//selObj.className = selObj.origClass + ' sel';
	if (!selObj.fpromo_obj.menuDisabled)
		selObj.hl_obj.style.left = "0";
	selObj.fpromo_obj.menuitem_sel = selObj.id;
	//selObj.promoObj.style.display = "block";
	selObj.promoObj.style.top = "0px";
	fpromo_setButtonText(selObj);
}

function fpromo_gotopage(e) {
	if (!e) var e = window.event;
	if (this.url)
		location.href = this.url;
	else
		return false;
}

function fpromo_textWidth(obj, text) {
	obj.hoverBg_obj.innerHTML = text;
	return (obj.hoverBg_obj.offsetWidth);
}

function ie_fix_pngBg(obj) {
	obj = elem(obj);
	obj.style.behavior = iepng_htc;
/*
	var bgImg = getStyle(obj,'backgroundImage');
	if (bgImg) {
		obj.style.backgroundImage = bgImg;
		obj.style.behavior = iepng_htc;
	}
*/
}

function fpromo_menu_toggle(e)  {
	if (!e) var e = window.event;
	fpromo_obj = this.fpromo_obj;
	menu_obj = fpromo_obj.menu_obj;
	//var menuCloseX = 561;
	//var menuOpenX = 334;
	var pos = findPos(menu_obj);
	if (e.type == 'mouseover') {
		clearTimeout(menu_obj.slideoutt);
		if (!fpromo_obj.menuCloseX) {
			fpromo_obj.menuCloseX = menu_obj.offsetLeft;
			fpromo_obj.menuOpenX = menu_obj.offsetLeft - 227;
		}
		//slideTo(this, menuOpenX, pos[1]);
		menu_obj.slidein = setTimeout('slideTo("' + menu_obj.id + '", ' + fpromo_obj.menuOpenX + ', ' + pos[1] + ')',250);
	} else {
		clearTimeout(menu_obj.slidein);
		menu_obj.slideoutt = setTimeout('slideTo("' + menu_obj.id + '", ' + fpromo_obj.menuCloseX + ', ' + pos[1] + ')',250);
	}
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
		func();
		}
	}
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		/*
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}*/
	}
	return [curleft,curtop];
}

function slideTo(obj, toX, toY) {
	obj = elem(obj);
	obj.style.left = toX + 'px';
	obj.style.top = toY + 'px';
	/*
	clearTimeout(obj.g_slidet);
	obj.origX = obj.style.left;
	obj.origY = obj.style.top;
	obj.toX = toX;
	obj.toY = toY;
	obj.moving = true;
	_slideTo(obj);
	*/
}
function _slideTo(obj) {
	obj = elem(obj);
	var step = 20;
	var doneX = false;
	var doneY = false;
	var pos = findPos(obj);
	if (Math.abs(obj.toX - pos[0]) < step) {
		obj.style.left = obj.toX + 'px';
		doneX = true;
	}
	if (Math.abs(obj.toY - pos[1]) < step) {
		obj.style.top = obj.toY + 'px';
		doneY = true;
	}
	if (doneX && doneY) { obj.moving = false; return; }
	if (!doneX) {
		if (obj.toX < pos[0]) { dir = -1; } else { dir = 1; }
		obj.style.left = (pos[0] + (dir * step)) + 'px';
	}
	if (!doneY) {
		if (obj.toY < pos[1]) { dir = -1; } else { dir = 1; }
		obj.style.top = (pos[1] + (dir * step)) + 'px';
	}
	obj.g_slidet = setTimeout("_slideTo('" + obj.id + "')",0);
}



function debug(text) {
	debugDiv = elem('fpromo_debug');
	debugDiv.style.display = "block";
	debugDiv.innerHTML = text + "<br/>";
}

function disableSelection(element) {
    element.onselectstart = function() {
        return false;
    };
    element.unselectable = "on";
    element.style.MozUserSelect = "none";
}

