// JavaScript Document

/* 
	PART PROCESSOR 
	
	this is a scalable system for layering an ajax reload on part of a page. It uses the "rel" and "rev" tags to 
	rel = "part"
	rev = name_of_target_div
	
*/

function initPartLinks() {
	
	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName("a");
	//alert("found "+anchors.length+" links");
	// loop through all anchor tags
	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];

		if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "part")){
			anchor.onclick = function () { fadePageOut(this); return false;}
		}
	}
	

}

function fadePageOut(objLink) {
	document.objLink = objLink;
	//Effect.BlindUp(document.objLink.rev);
	Effect.Fade(objLink.rev, { duration:1.0, from:1.0, to:0.01, afterFinish:loadPart });
}

function loadPart() {
	var url = document.objLink.href;
	var params = "page=part";
	var div = document.objLink.rev;
	var myAjax = new Ajax.Updater(div, url, { parameters: params, method: 'post', onComplete:fadePageIn});
	rebuildLinks();
}

function fadePageIn() {
	Effect.Appear(document.objLink.rev, { duration:1.0, afterFinish:initPart });
	//Effect.BlindDown(document.objLink.rev, { afterFinish:initPart });
}

function initPart() {
	// once new page has loaded we can run init functions for this specific page 	
	// links
	initPartLinks();
	// start local page scripts
	href_split = document.objLink.href.split("/");
	page_section = href_split[href_split.length-1].slice(0,-4);
	switch (page_section) {
		case 'product_extranormal':
			var fo = new FlashObject("../img/products/extranormal/extranormal.swf", "extranormal", 310, 450, "7", "#ffffff");
			fo.write("product_big_holder");
			break;
		case 'product_timezone':
			var fo = new FlashObject("../img/products/timezone/timezone.swf", "timezone", 310, 450, "7", "#ffffff");
			fo.write("product_big_holder");
			break;
		case 'product_timeequalsmoney':
			var fo = new FlashObject("../img/products/timeequalsmoney/timeequalsmoney.swf", "timeequalsmoney", 310, 450, "7", "#ffffff");
			fo.write("product_big_holder");
			break;
		case 'timepieces':
			startFade_splash();
			break;
		case 'home':
			swfobject.embedSWF("/timepieces/swf/clock.swf?demo=1", "clock_animation", "200", "200", "9.0.0");
			swfobject.embedSWF("/timepieces/swf/normaldesign_intro.swf", "normaldesign_intro", "530", "400", "9.0.0");
			break;
			
	}
	urchinTracker('/timepieces/'+href_split[href_split.length-2]+'/'+page_section+'.php');
}

function rebuildLinks() {
	// show/hide product
	href_split = document.objLink.href.split("/");
	page_section = href_split[href_split.length-1].slice(0,-4);
	if (page_section.slice(0,7) == 'product') {
		document.body.id = "products";
	} else {
		document.body.id = page_section;
	}
	// make active
	menu_items = $('menu').getElementsByTagName('li');
	for (var i=0; i<menu_items.length; i++) {
		menu_item = menu_items[i];
		menu_section = menu_item.id.slice(5);
		if ( menu_section == page_section) {
			if (!Element.hasClassName(menu_item, 'active')) Element.addClassName(menu_item, 'active');
		} else {
			if (Element.hasClassName(menu_item, 'active')) Element.removeClassName(menu_item, 'active');
		}
	}
	// fix language switch
	$('lang_switch').onclick = function () { switchLanguage(); return false;}
}

function switchLanguage() {
	var href_split = document.objLink.href.split("/");
	var page_section = href_split[href_split.length-1].slice(0,-4);
	var new_lang = ( href_split[href_split.length-2] == 'jp' ) ? 'en' : 'jp';
	window.location = "/timepieces/"+new_lang+"/"+page_section+".php";
}

// fades for timepieces page

function startFade_splash() {
	splashlist = document.getElementsByClassName('splash');
	splash_fader = new PeriodicalExecuter(fadeOut_splash, 5);
}

function fadeOut_splash() {
	for (var i=0; i<splashlist.length; i++) {
		if (Element.visible(splashlist[i])) {
			//alert("can now see "+i);
			lastSplash = i;
			nextSplash = i + 1;
			if (nextSplash >= splashlist.length) nextSplash = 0;
			Element.setStyle(splashlist[lastSplash],{ 'z-index':'10'});
			Element.setStyle(splashlist[nextSplash],{ 'z-index':'9'});
			Element.show(splashlist[nextSplash]);
			Element.setOpacity(splashlist[nextSplash],1);
			Effect.Fade(splashlist[i], { afterFinish: fadedHide_splash });
			break;
		}
	}
}
function fadedHide_splash() {
	Element.setStyle(splashlist[lastSplash],{ 'z-index':'1'});
	Element.hide(splashlist[lastSplash]);
}

function open_news(news_id,lang) {
	var url = "/timepieces/"+lang+"/news.php";
	var params = "news="+news_id+"&ajax=1";
	var div = "content";
	var myAjax = new Ajax.Updater(div, url, { parameters: params, method: 'post'});
}

function change_distribution_region(region_id,lang) {
	var url = "/timepieces/"+lang+"/distribution.php";
	var params = "page=part&region_id="+region_id;
	var div = "content";
	var myAjax = new Ajax.Updater(div, url, { parameters: params, method: 'post', onComplete:fadePageIn});
}
function change_sales_region(region_id,lang) {
	var url = "/timepieces/"+lang+"/sales.php";
	var params = "page=part&region_id="+region_id;
	var div = "content";
	var myAjax = new Ajax.Updater(div, url, { parameters: params, method: 'post', onComplete:fadePageIn});
}



//
// addLoadEvent()
// Adds event to window.onload without overwriting currently assigned onload functions.
// Function found at Simon Willison's weblog - http://simon.incutio.com/
//
function addLoadEvent(func)
{	
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
		oldonload();
		func();
		}
	}

}
addLoadEvent(initPartLinks);