/**
 * =============================================================
 *  accordion.js
 * =============================================================
 * @package		javascript
 * @author		sYoshioka
 * @copyright	COPYRIGHT (C) 2009 JCity Inc., ALL RIGHTS RESERVED.
 * @version		$Id$
 */

document.observe("dom:loaded", function(){
	var target = $$("li.accordionTarget");
	var expanded = -1;
	var isAnimating = false;
	var maxHeight = 0;
	var cookieIndex = "iVh7d6dS09jld";
	var cookieValue = "cKtb09TainA08";

	if(!target) return;

	var cookies = new CookieManager({
		shelfLife: 0
	});

	var directAccess = location.href.match(/productlineup(_|\-)/);

	if(cookies.getCookie(cookieIndex) || directAccess){
		expanded = 0;
		if(directAccess){
			cookies.setCookie(cookieIndex, cookieValue);
		}
	}

	$$("li.accordionTarget ul li").each(function(member){
		maxHeight += parseInt(member.getStyle("height"));
	});

	$$("li.accordionTrigger").each(function(member, index){
		if(expanded == -1){
			target[index].hide();
			target[index].setStyle({opacity: 0.0});
			target[index].setStyle({height: maxHeight + "px"});
		}

		Element.observe(member, "click", function(event){
//			if(expanded >= 0 && expanded != index){
//				animate(target[index], 0);
//				target[index].hide();
//			}else{

				var elementDimensions = target[index].getDimensions();

//				if((elementDimensions.height != maxHeight) || expanded == index) return;

				if(expanded == -1){
					new Effect.Parallel([
						new Effect.Fade(target[index], {
							from: 0.0,
							to: 1.0
						}),
						new Effect.Scale(target[index], 100, Object.extend({
							scaleContent: false,
							scaleX: false,
							scaleFrom: 0,
							transition: Effect.Transitions.sinoidal,
							scaleMode: {
								originalHeight: elementDimensions.height,
								originalWidth: elementDimensions.width
							},
							beforeStart: function(effect){
								isAnimating = true;
							},
							afterSetup: function(effect){
								effect.element.makeClipping().setStyle({
									height: "0px"
								}).show();
							},
							afterFinish: function(){
								isAnimating = false;
							}
						}, arguments[1] || { }))
					],
					{
						duration: 0.5,
						fps: 60,
						sync: true
					});
					expanded = index;
					cookies.setCookie(cookieIndex, cookieValue);
				}else{
					if(expanded < 0) return;

					new Effect.Parallel([
						new Effect.Fade(target[expanded], {
							from: 1.0,
							to: 0.0
						}),
						new Effect.Scale(target[expanded], 0, {
							scaleX: false,
							scaleY: true,
							scaleContent: false,
							transition: Effect.Transitions.sinoidal,
							beforeStart: function(effect){
								effect.element.setStyle({
									height: maxHeight + "px"
								});
								isAnimating = true;
							}.bind(this),
							afterFinish: function(effect){
								effect.element.setStyle({
									height: maxHeight + "px"
								});
								isAnimating = false;
							}.bind(this)
						})
					],
					{
						duration: 0.5,
						fps: 60,
						sync: true
					});

					expanded = -1;
					cookies.setCookie(cookieIndex, "");
				}
//			}

			event.stop();
		});
	});

/***************
	$$("#subnavi #menu li").each(function(member){
		if(!member.className.match(/accordionTrigger/) && member.id.match(/menu/)){
			Element.observe(member, "mouseover", function(){
				if(expanded < 0) return;

				new Effect.Parallel([
					new Effect.Fade(target[expanded], {
						from: 1.0,
						to: 0.0
					}),
					new Effect.Scale(target[expanded], 0, {
						scaleX: false,
						scaleY: true,
						scaleContent: false,
						transition: Effect.Transitions.sinoidal,
						beforeStart: function(effect){
							effect.element.setStyle({
								height: maxHeight + "px"
							});
							isAnimating = true;
						}.bind(this),
						afterFinish: function(effect){
							effect.element.setStyle({
								height: maxHeight + "px"
							});
							isAnimating = false;
						}.bind(this)
					})
				],
				{
					duration: 0.75,
					fps: 35,
					sync: true
				});

				expanded = -1;
			});
		}
	});
***************/
});
