/**
 * Site Control
 * Forum Controller
 *
 * @version		1.1
 * @modified	Nov 7, 2008
 *
 * @license		Proprietary
 * @author		Alvis Tang <alvis.sty [at] gmail.com>
 * @copyright	Author
 */
$j(window).ready(function(){
	/* Load site information */
	$j.post('./action.php', {
		action: 'load'
	}, function(jsonObj){
		if (!jsonObj.newsletter) makeSubscription();
		
		updates = jsonObj.updates;
		//if (isMain) $j(window).scroll(calculateSpace).resize(calculateSpace);
		
		availableCount = 20;
		currentMenu = 0;
		
		makeRoation();
		calculateSpace(true);
		rotateUpdates();
	}, 'json');
	
	/* poll = $j('#mainPoll');
	isMain = poll.length;
	if (isMain) {
		pollEnd = poll.offset()['top'] + poll.height() + 52;
		onlineStart = $j('#online').offset()['top'] - 2;
	}*/
});

var member = document.cookie.search(/cdb_auth/g) >= 0;
var onArticle = false;
var onMenu = false;

/* Space Calculator */
var calculateSpace = function(ready){
	//if (!isMain) 
	return false;
	/*
	 var scrollY = 0;
	 if (typeof window.pageYOffset == "number") scrollY = window.pageYOffset;
	 else if (document.documentElement && document.documentElement.scrollTop) scrollY = document.documentElement.scrollTop;
	 else if (document.body && document.body.scrollTop) scrollY = document.body.scrollTop;
	 else if (window.scrollY) scrollY = window.scrollY;
	 
	 var windowHeight = $j(window).height();
	 var availableHeight = Math.max(Math.min(windowHeight + scrollY, onlineStart-1) - Math.max(scrollY, pollEnd+1) - 26, 0);
	 availableCount = Math.max(parseInt((availableHeight - 297) / 40), 0);
	 for (i = 0; i < updates.length; i++)
	 $j(updatesElementArticle[i]).css('display', i < availableCount ? '' : 'none');
	 var extraMargin = parseInt(Math.max((availableHeight - availableCount * 40 - 297) / 2, 0));
	 updatesElementHeadingParagraph.css('padding-top', extraMargin);
	 updatesElementHeadingParagraph.css('padding-bottom', extraMargin);
	 updatesElement.css('margin-top', Math.max(Math.min(windowHeight + scrollY, onlineStart) - availableCount * 40 - extraMargin * 2 - pollEnd - 315, 0));
	 */
	if (ready == true || (availableCount && currentUpdateId >= availableCount * 2 - 1)) {
		/* Store current position */
		currentUpdateId = parseInt(Math.random() * (availableCount ? availableCount : updates.length)) * 2;
		currentUpdate = parseInt(currentUpdateId / 2);
		
		updateArticle(); /* Show selection */
	}
}

/* Rotation Initiator */
var makeRoation = function(){
	/* Reference */
	/*
	$j('#mainPortal').mouseover(onMenu).mouseout(onPortal);
	menu = $j('#portalMenu').css('display', 'block');
	menuElement = menu.find('li[id]').mouseover(enterMenu).mouseout(leaveMenu);
	*/
	headUpdates = $j('#headR1 .updates').removeClass('hidden');
	updatesElement = $j('#mainUpdates');
	updatesElementArticle = updatesElement.children('div').mouseover(enterArticle).mouseout(leaveArticle);
	updatesElementThumb = updatesElement.find('img.current');
	updatesElementHeading = updatesElement.find('a.heading');
	updatesElementHeadingParagraph = updatesElement.find('p.heading');
	updatesElementAnchor = updatesElement.find('a.current');
	/*
	for (i = 0; i < menuElement.length; i++) 
		menuElement[i].mid = i;
	*/
	for (i = 0; i < updatesElementArticle.length; i++) 
		updatesElementArticle[i].aid = i;
	
	/* Start rotation */
	setInterval('rotateUpdates()', 4000);
	//setInterval('rotateMenu()', 8000);
}

/* Subscription Link Builder */
var makeSubscription = function(){
	$j('#subscription').removeClass('hidden');
	$j('#subscription a').click(function(){
		$j('#subscription a').addClass('hidden');
		$j('#subscription input').removeClass('hidden').val('輸入電郵地址');
		return false;
	});
	$j('#subscription input').focus(function(){
		$j(this).val('')
	}).blur(function(){
		$j(this).addClass('hidden');
		$j('#subscription a').removeClass('hidden');
	}).keypress(function(e){
		if (e.keyCode == 13) subscribe();
	});
}

/* News Letter Subscriber */
var subscribe = function(){
	var email = $j('#subscription input').val();
	if (email.search(/[^@'"]+@[^@'"]+\.[^@\'"]+/g) != 0 && document.cookie.search(/cdb_auth/g) == -1) {
		alert('這不是正確的電郵地址');
		$j('#subscription a').addClass('hidden');
		$j('#subscription input').removeClass('hidden').focus();
	} else $j.post('/action', {
		section: 'newsletter',
		action: 'subscribe',
		email: email
	}, function(){
		alert('已成功申請訂閱，我們將每天向您發送最新業界信息。')
	});
};

/* Updates Carousel */
var rotateUpdates = function(){
	headUpdates.children('a').remove();
	var article = updates[parseInt(Math.random() * updates.length)]
	headUpdates.append($j('<a />').attr('href', 'http://www.hkepc.com/?id=' + article['id']).text(article['heading'] + ' ' + article['subhead']));
	
	/*if (isMain && !onArticle) {
		if (availableCount && currentUpdateId >= availableCount * 2) currentUpdateId = 0;
		
		if (currentUpdate != parseInt(currentUpdateId / 2)) {*/
			//currentUpdate = parseInt(currentUpdateId / 2); /* Store current position */
			//updateArticle(); /* Show selection */
		/*}
		
		currentUpdateId++;
	}*/
}

/* Updates Portal */
var rotateMenu = function(){
	if (isMain && !onMenu) {
		currentMenu++;
		if (currentMenu == 3) currentMenu = 0;
		updateMenu();
	}
}

/* Selection Updater (Update List) */
var updateArticle = function(){
	/* Show selected article */
	updatesElementArticle.removeClass('active');
	$j(updatesElementArticle[currentUpdate]).addClass('active');
	
	/* Set attribute */
	var image = $j('<img/>').load(function(){
		updatesElementThumb.attr('src', 'http://www.hkepc.com/database/images/thumbs/300x225.' + updates[currentUpdate]['thumb']);
		updatesElementHeading.html(updates[currentUpdate]['heading'] + '<br/>' + updates[currentUpdate]['subhead']);
		updatesElementAnchor.attr('href', 'http://www.hkepc.com/?id=' + updates[currentUpdate]['id']).attr('title', updates[currentUpdate]['heading'] + ' ' + updates[currentUpdate]['subhead']);
	}).attr('src', 'http://www.hkepc.com/database/images/thumbs/300x225.' + updates[currentUpdate]['thumb']);
}

/* Selection Updater (Portal Menu) */
var updateMenu = function(){
	/* Show selected menu */
	menuElement.removeClass('active');
	$j(menuElement[currentMenu]).addClass('active');
	$j('#portal .portalContent').removeClass('active');
	$j('#portal .' + $j(menuElement[currentMenu])[0].id).addClass('active');
}

/* Mouseover Event Handler (Update List) */
var enterArticle = function(){
	onArticle = true;
	currentUpdate = this.aid;
	currentUpdateId = this.aid * 2;
	updateArticle();
}

/* Mouseout Event Handler (Update List) */
var leaveArticle = function(){
	onArticle = false;
}

/* Mouseover Event Handler (Portal Menu) */
var enterMenu = function(){
	onMenu = true;
	currentMenu = this.mid;
	updateMenu();
}

/* Mouseover Event Handler (Portal Menu) */
var onPortal = function(){
	onMenu = true;
}

/* Mouseout Event Handler (Portal Menu) */
var leaveMenu = function(){
	onMenu = false;
}
