JAME.Components.Panels = function(options) {

	this.container          = options.container;
	this.navContainer       = options.navContainer || this.container;
	this.panels             = options.panels;
	this.panelWidth         = options.panelWidth;
	this.onCreateNavigation = options.onCreateNavigation || function() {};
	this.isNavigationOff    = options.navigationOff      || false;
	this.speed              = options.transition         || false;
	this.onNavigationClick  = options.onNavigationClick  || function(){};
	options.padding			= options.padding || 0;
	this.interval           = undefined;
	options.customId		= options.customId||'';
	if(JAME.$('jpanels-gallery-nav')){
		++JAME.Components.Panels.counter;
		options.customId='panel'+JAME.Components.Panels.counter+'_';
	}
	JAME.extend(this,new JAME.Events.EventDispatcher());

	this.animationInstance  = undefined;
	var me = this;

	options.to   	   = options.to || 'left';

	var moveOf		   =(options.to=='top') ? ['height','bottom','top'] : ['width','left','right'];

	var width          = parseInt(JAME.CSS.getStyle(this.container,moveOf[0]));
	var totalWidth     = 0;
	var links          = '';

	for(var i=0,ln=this.panels.length;i<ln;i++) {
		var w      = this.panelWidth || parseInt(JAME.CSS.getStyle(this.panels[i],moveOf[0]));
		totalWidth+=w;
		totalWidth+=parseInt(JAME.CSS.getStyle(this.panels[i],'padding-'+moveOf[1]));
		totalWidth+= parseInt(JAME.CSS.getStyle(this.panels[i],'padding-'+moveOf[2]));
		var style = {
			float:(options.to=='left')?'left':'none',
			textAlign:'center'
		};
		style[moveOf[0]]=w;
		JAME.CSS.setStyles(this.panels[i],style);

		if(this.isNavigationOff) {
			continue;
		}
		var display = this.onCreateNavigation(this.panels[i],i) || i+1;

		links+='<a href="#" class="'+options.customId+' goto" id="counter_'+i+'">'+display+'</a>';
	};

	if(totalWidth<=width) return this;


	var containerWidth = this.panelWidth || width;

	var style={};
	style[moveOf[0]]=parseInt(containerWidth)*(this.panels.length+2);

	JAME.CSS.setStyles(this.container,style);

	var style={
		position:JAME.CSS.getStyle(this.container,'position'),
		left   : JAME.CSS.getStyle(this.container,'left'),
		top    : JAME.CSS.getStyle(this.container,'top')
	};

	var basePosition = JAME.CSS.getStyle(JAME.$(me.container.id),'position');
	JAME.CSS.setStyles(this.container,{
		position:'static',
		overflow:'hidden'
	});

	var div = JAME.DOM.wrapNode(this.container,'div');
	div.id="jpanels-container-overflow";
	var style={overflow:'hidden',clear:'both'};
	style[moveOf[0]]=width;
	JAME.CSS.setStyles(div,style);

	if(!this.isNavigationOff) {
		var customId = options.customId ? '<div id='+options.customId+'>' : '<div>';
		var nav = customId+'<div id="jpanels-gallery-nav">'+
			'<div><a href="#" class="goPrev">&laquo;&laquo;</a>'+
			'<span style="margin:0px;padding:0px;position:relative;top:0px;">'+
			'<div id="scrollbar"></div>';
		nav+=links;
		nav+='</span><a href="#" class="goNext">&raquo;&raquo;</a></div><br /></div></div>';
		var insert=JAME.DOM.createNode('div');
		insert.innerHTML=nav;
		div.parentNode.insertBefore(insert,div);
	JAME.CSS.setStyles(JAME.$('scrollbar'),{width:JAME.CSS.getStyle(parse('#jpanels-gallery-nav .goto')[0],'width')});

	}

	var elm_per_view = 0;
	var moveBy	     = 0;
	if(width>parseInt(JAME.CSS.getStyle(this.panels[0],moveOf[0]))) {
		moveBy = parseInt(JAME.CSS.getStyle(this.panels[0],moveOf[0])) + options.padding;
		var elm_per_view = Math.floor(width/parseInt(JAME.CSS.getStyle(this.panels[0],moveOf[0])))-1;
	}
	else 
		moveBy=width+options.padding;


	var actualImg = 0;
	var maxPos    = this.panels.length - elm_per_view;
	var topos     = parse(".goto") || undefined;


	var activeStyles = {
		color : '#885544'
	};

	var setActiveStyle= (!options.isStyling) ? function(pos) {
		if(!topos) return;
		if(!topos[pos]) return;

		if(!topos[pos].oldStyle) {
			topos[pos].oldStyle={};
			for(var style in activeStyles) {
				if(JAME.CSS.getStyle(topos[pos],style))
				topos[pos].oldStyle[style]=JAME.CSS.getStyle(topos[pos],style);
			}
		}
		JAME.CSS.setStyles(topos[pos],activeStyles);
	} : function(pos) {
		if(!topos) return;
		if(!topos[pos]) return;
				topos[pos].className+=' activated';
		};

	var deactivateStyle= (!options.isStyling) ? function(pos) {
		if(!topos) return;
		if(!topos[pos]) return;

		if(topos[pos].oldStyle) {
			JAME.CSS.setStyles(topos[pos],topos[pos].oldStyle);
		}
	} : function(pos) {
			topos[pos].className = (topos[pos].className) ? topos[pos].className.replace('activated','') : '';
		};

	setActiveStyle(0);

	if(basePosition=='absolute') {
		var effectBase = {
			position:['absolute','absolute'],
			opacity:[.9,0.5]
		};
	}
	else {
		var effectBase = {
			position:['relative','relative'],
			opacity:[.9,0.5]
		};
	}

	this.goNext = function() {
		if(actualImg==undefined) { return }
		var pos = actualImg;
		deactivateStyle(pos);
		actualImg = (pos==maxPos-1) ? -1 : parseInt(actualImg); 
		actualImg=actualImg+1;

		me.moveScrollBar(actualImg);
		setActiveStyle(actualImg);
		var from = -(moveBy*pos);
		var to   = -(moveBy*actualImg);
		effectBase[options.to]=[from,to];
		me.animationInstance = new JAME.FX({duration:400}).Tween(JAME.$(me.container.id),effectBase);
		me.animationInstance.addListener('onComplete',function() {
			me.animationInstance=undefined;
			new JAME.FX({duration:200,easing:JAME.FX.Transition.Sine.In}).Tween(JAME.$(me.container.id),{opacity:[1]});
			if(me.isSlideShow && !me.interval) me.startSlideShow(me.isSlideShow);
		});
	}

	this.goPrev = function() {
		if(actualImg==undefined) { return }
		var pos = actualImg;
		deactivateStyle(pos);

		actualImg = (actualImg==0) ? parseInt(maxPos) : actualImg; 
		actualImg = parseInt(actualImg) - 1 ;

		me.moveScrollBar(actualImg);
		setActiveStyle(actualImg);
		var from = -(moveBy*pos);
		var to   =-(moveBy*actualImg);
		effectBase[options.to]=[from,to];
		me.animationInstance = new JAME.FX({duration:400}).Tween(JAME.$(me.container.id),effectBase);
		me.animationInstance.addListener('onComplete',function() {
			me.animationInstance=undefined;
			new JAME.FX({duration:200,easing:JAME.FX.Transition.Sine.In}).Tween(JAME.$(me.container.id),{opacity:[1]});
			if(me.isSlideShow && !me.interval) me.startSlideShow(me.isSlideShow);
		});

	}

	var me = this;
	var goNextListener = function(e) {
		e = JAME.Events.Normalize(e);
		e.stopPropagation();
		e.preventDefault();
		if(me.animationInstance)
			return;
		if(me.interval)
			me.stopSlideShow();
		me.goNext();
	}

	var goPrevListener = function(e) {
		e = JAME.Events.Normalize(e);
		e.stopPropagation();
		e.preventDefault();
		if(me.animationInstance) 
			return;
		if(me.interval) 
			me.stopSlideShow();
		me.goPrev();
	}

	
	this.moveScrollBar = (topos) ? function(pos) {
		var upTo=0;
		for(var i = 0;i<pos;i++) upTo+=parseInt(JAME.CSS.getStyle(topos[i],'width'));		

		new JAME.FX({duration:600,easing:JAME.FX.Transition.Back.InOut}).Tween(JAME.$('scrollbar'),{
			left : [parseInt(JAME.CSS.getStyle(JAME.$('scrollbar'),'left')),upTo],
			width: [parseInt(JAME.CSS.getStyle(JAME.$('scrollbar'),'width')),parseInt(JAME.CSS.getStyle(topos[pos],'width'))]
		});
	} :function(){};

	this.go = function(e) {

		e = JAME.Events.Normalize(e);
		if(e) e.preventDefault();
		var a=e.target;
		while(a) {
			if(a.nodeName.toLowerCase()==='a' && a.id.match('counter_')) {
				pos = a.id;
				a=undefined;
			}
			if(a) a = a.parentNode;
		}


		var parts = pos.split('counter_');
		pos = parts[1];
		me.onNavigationClick(actualImg,pos);
		me.moveTo(pos);
	}
	this.moveTo = function(pos) {

		if(!me.isNavigationOff) {
			me.moveScrollBar(pos);
			deactivateStyle(actualImg);
			setActiveStyle(pos);
		}
		effectBase[options.to]=[-moveBy*actualImg,-moveBy*pos];
		me.animationInstance = new JAME.FX({duration:400}).Tween(JAME.$(me.container.id),effectBase);
		me.dispatch('movingTo',pos);

		me.animationInstance.addListener('onComplete',function() {
			me.animationInstance=undefined;
			new JAME.FX({duration:200,easing:JAME.FX.Transition.Sine.In}).Tween(JAME.$(me.container.id),{opacity:[1]});
		});
		actualImg = pos;
	}

	if(this.isNavigationOff) return;

	if(topos) {
		topos.each(function(lm) {
			lm.onclick=me.go;
		});
	}
	var next  = parse("#"+"jpanels-gallery-nav a.goNext");
	var prev  = parse("#"+"jpanels-gallery-nav a.goPrev");
	next.onclick = goNextListener;
	prev.onclick = goPrevListener;
	this.isSlideShow = false;
	this.startSlideShow = function(time) {
		me.isSlideShow = time;
		me.interval = setInterval(function() {
			me.goNext();
		},time);
	}
	this.stopSlideShow = function() {
		clearInterval(me.interval);
		me.interval=undefined;
	}


}
JAME.Components.Panels.counter=0;


function DOMISREADY() {

	//tooltip box
	var displayBox = JAME.DOM.createNode('div');
	displayBox.id='displayBox';
	displayBox.style.position='absolute';
	displayBox.style.top=getWindowHeight()+'px';

	//pre-loader style

	var pool = setInterval(function() {

	if(!JAME.$('jame-loader')) return;

	clearInterval(pool);
	var jimg = JAME.DOM.createNode('img');
	jimg.src='/common/img/atomic_bw_logo.gif';
	var left =getWindowWidth()/3.45;
	JAME.CSS.setStyles(jimg,{
		position:'absolute',
		left:getWindowWidth()/2.4,
		top:'20%'	});
	JAME.$('jame-loader-container').appendChild(jimg);

	var progressBar = JAME.DOM.createNode('div');
	progressBar.id='progressBar';
	JAME.$('jame-loader').appendChild(progressBar);
	JAME.CSS.setStyles(progressBar,{
		position:'absolute',
		backgroundColor:'red',
		backgroundImage:'url(/common/img/progress-bar.jpg)',
		width:'0px',
		height:'15px',
		left:left,
		color:'#000000',
		zIndex:5000000
	});

	var progressBarInfo = JAME.DOM.createNode('div');
	progressBarInfo.id='progressBarInfo';
	JAME.$('jame-loader-container').appendChild(progressBarInfo);
	JAME.CSS.setStyles(progressBarInfo,{
		position:'absolute',
		right:'5px',
		top:'34%',
		height:'25px',
		padding:'5px',
		textAlign:'right',
		color:'#000000',
		zIndex:5000000
	});

	JAME.CSS.setStyles(JAME.$('jame-loader'),{
		position:'absolute',
		top:parseInt(getWindowHeight())/3,
		left:'0px',
		height:'80px',
		color:'#000000',
		zIndex:5000000,
		textAlign:'right'
	});
	},5);

	setTimeout(function(){
		document.body.appendChild(displayBox);
	},200);//ie don't like it at load time so...

	//listen to search submit event
	JAME.$('searchproduct').onsubmit = function(e) {

		e  = JAME.Events.Normalize(e);
		e.preventDefault();

		var form        = e.target;
		var queryString = JAME.Form.serialize(form);
		var url         = form.action+'?'+queryString;
		var URLElements = getValue(url);
		SWFAddress.setValue(URLElements[1]);

		queryString = null;
		form        = null;
		queryString = null;
		URLElements = null;
	}

	var lights = parse(".lightwindow");
	lights = lights && lights.constructor===Array ? lights : lights? [lights]:[];
	lights.each(function(elm){
			elm.onclick=function(e){

				e = JAME.Events.Normalize(e);
				e.stopPropagation();
				e.preventDefault();
				extraLightWindow({
					title:elm.title,
					href:elm.href,
					insertIn:'website',
					width:(!JAME.ASC.Settings.baseURI) ? 800:730,
					height:(!JAME.ASC.Settings.baseURI) ? 550:440
				});
			}
	})

}

DOMISREADY();

//the contents has been added to the div viewable by the user
//Here, I overwrite the default JAME.ASYNC.showHTML function
JAME.ASYNC.showHTML = function() {
	//overwrite default (simple fade in) to do nothing -> see onFullLoad
};

JAME.ASYNC.Events.addListener('onLoadProgress',function() {

	if(JAME.$('loader-container')) new JAME.FX({duration:10}).Tween(JAME.$('loader-container'),{width:[JAME.ASYNC.LOADED*JAME.ASYNC.STEP]})

	if(JAME.$('progressBar')) new JAME.FX({duration:10}).Tween(JAME.$('progressBar'),{width:[JAME.ASYNC.LOADED*JAME.ASYNC.STEP]})
	if(JAME.$('progressBarInfo')) JAME.$('progressBarInfo').innerHTML='loading... '+JAME.ASYNC.LOADED+'/'+JAME.ASYNC.IMG_NUMBER;
});

//this event fires just before we make the ajax call
//here you can modify the current displayed content
//like fade out elements,move them,etc.
JAME.ASYNC.Events.addListener('onPreLoadHTML',function() {


	JAME.ASYNC.garbageCollect();

	if(JAME.ASYNC.crossfader) {
		JAME.ASYNC.crossfader.stop();
		JAME.ASYNC.crossfader=undefined;
	}

	//show loader
	JAME.ASYNC.CONTENT_LOADED=false;
	if(!JAME.$('loader-container')) {

		if(JAME.ASYNC.counter>0) {
			var div = JAME.DOM.createNode('div');
			div.id='loader-container';
			JAME.CSS.setStyles(div,{
					position:'absolute',
					left:'190px',
					top:'23px',
					width:'0px',
					height:'15px',
					fontSize:'1px',
					backgroundColor:'#000',
					backgroundImage:'url(/common/img/progress-bar.jpg)'
			});


			var img = JAME.DOM.createNode('img');
			img.src='/ski/local/js/lightwindow/images/ajax-loading.gif';
			div.appendChild(img);
			JAME.$('header').appendChild(div);
		}
	}
	else {
		JAME.CSS.setStyles(JAME.$('loader-container'),{width:'0px'});
		JAME.$('loader-container').style.display='block';
	}

	//set website overflow x and bg
	JAME.$('website').style.overflowX='hidden';

});

//we have the raw response from the server here
//I inject it in a div, change some elment styles
//and set the JAME.ASYNC.preInsert content to the modified html
//we can therefore manipulate the entire content (style,deleting elements...) before user viewing it

JAME.ASYNC.counter=0;
JAME.ASYNC.Events.addListener('onPreInsertLoadHTML',function() {

	var resp = arguments[1];

	if(!resp) return JAME.ASYNC.counter++;

	if(/<object /.test(resp)) {
		JAME.ASYNC.preInsert = resp;
	}

	var jdiv = JAME.DOM.createNode('span');
	jdiv.innerHTML= arguments[1];

	JAME.ASYNC.stack.push(jdiv);

	JAME.ASYNC.PreLoadImages(jdiv.getElementsByTagName('*'),300);


	if(!jdiv.getElementsByTagName('object')[0]) {
		JAME.ASYNC.preInsert = jdiv.innerHTML;
	}


	if(JAME.ASYNC._resetScrollBar){
		var XY   = getScrollXY();
		var y    = XY[1];
		var step = y/5;

		var interval = setInterval(function() {
			y-=step;
			if(y<=0 || JAME.ASYNC.CONTENT_LOADED) y=0; 
			window.scrollTo(0,y);
			if(y==0) clearInterval(interval);
		},10);
	}

	JAME.ASYNC.counter++;

});


var movingEffect = function() {
	if(JAME.$('loader-container')) JAME.$('loader-container').style.display='none';
};

//add extra effects to the basic general fade in
JAME.ASYNC.Events.addListener('onFullLoad',function() {


	var string=location.href;
	if(string.match(/News\//)){
		if(window.createRetweetButton && JAME.$('main'))
			createRetweetButton('AtomicSnowJapan');
			JAME.CSS.setStyles(JAME.$('retweet'),{float:'right'});
	}

	JAME.ASYNC.CONTENT_LOADED=true;
	if(JAME.$('displayBox')) JAME.$('displayBox').style.display='none';
	var elm = JAME.$('html_container');

	if(JAME.ASYNC.preloadEffect)  {
		JAME.ASYNC.preloadEffect.stop();
		if(elm) JAME.CSS.setStyles(elm,{left:840})
	}

	movingEffect();


});

/*-------------------*/
/*=PRODUCT INFO-----*/
/*-----------------*/

JAME.ASYNC.Events.addListener('onFullLoad',function() {
	if(! /(?:products\/Info)/.test(SWFAddress.getValue()) ) return;

	var icons = parse(".boxes");



	icons = icons && icons.constructor===Array ? icons : icons ? [icons] : [];

	icons.each(function(elm){ elm.style.display='none'; JAME.ASYNC.stack.push(elm);});

	var target = parse("#product div.thumbImage");
	var maxWidth=926;
	if(JAME.ASC) {
		maxWidth=(!JAME.ASC.Settings.baseURI) ? 926 : 890;
	}
	
	new JAME.Components.Zoomifier({
		target :target,
		host   :JAME.$('section-1'),
		getImage : function(elm) {
			return target.getElementsByTagName('img')[0].src.replace('medium','large');
		},
		maxWidth:maxWidth,
		maxHeight:580 
	});

	//Tooltips
	new JAME.Components.ToolTip(JAME.$("displayBox"),JAME.$("product"),
			function(elm) {
				if(JAME.$('displayBox').style.display!='block') JAME.$('displayBox').style.display='block';
				var parent = elm.parentNode;
				if(elm.nodeName.toLowerCase()=='img') elm = JAME.DOM.nextNode(elm);
				if(!elm.oldColor) elm.oldColor = JAME.CSS.getStyle(elm,'color');
				JAME.CSS.setStyles(elm,{color:'#662233'});
				var text   = parent.getElementsByTagName('div')[0];
				return '<h2 class="tooltip">'+elm.innerHTML+'</h2>'+text.innerHTML;
			},function(elm) {
				var parent = elm.parentNode;
				if(elm.nodeName.toLowerCase()=='img') elm = JAME.DOM.nextNode(elm);
				if(!elm.oldColor) elm.oldColor = JAME.CSS.getStyle(elm,'color');
				JAME.CSS.setStyles(elm,{color:elm.oldColor,fontWeight:'normal'});
	});



	//Tooltips
	new JAME.Components.ToolTip(JAME.$("displayBox"),JAME.$("product"),
			function(elm) {
				
				var contents = elm.parentNode.getElementsByTagName('div')[0].innerHTML;
				if(contents.length==0) return;
				if(JAME.$('displayBox').style.display==='block') JAME.$('displayBox').style.display='none';

					var swf = elm.src;
					swf = swf.split('/img/products/icon/feature/');
					swf=swf[1].replace('\.jpg','');
					swf = '/ski/info/technology/'+swf+'.html'; 
					new JAME.FX({duration:400,easing:JAME.FX.Transition.Sine.Out}).Tween(JAME.$("displayBox"),{opacity:[1,0]});

					if(myLightWindow) {
						myLightWindow.activateWindow({
							href:swf, title:elm.parentNode.getElementsByTagName('p')[0].innerHTML,width:850,height:500
						});
					}
					else {
						var url = swf.replace('\.html','.swf');
						    url = url.replace('ski\/info\/technology\/','img/products/icon/contents/feature/');

						extraLightWindow({
							title:elm.parentNode.getElementsByTagName('p')[0].innerHTML,
							href:url,
							insertIn:'website',
							width:(!JAME.ASC.Settings.baseURI) ? 800:730,
							height:(!JAME.ASC.Settings.baseURI) ? 550:440
						});
					}
					return false;
	
			},function(elm) {		
				if(JAME.$('displayBox').style.display==='block') JAME.$('displayBox').style.display='none';
			},undefined,undefined,'flash-tip','onclick');





	if(JAME.$('related_products')) {

		var imgs  = parse('#related_products img');
		var ratio = [];
		imgs.each(function(elm,i) {
			var height = parseInt(elm.height);
			var width  = parseInt(elm.width);
			ratio = ((height/width)>1) ? [2.5,1.5]:[2.5,2.5];
			elm.style.width=(width/ratio[1])+'px';
			elm.style.height=(height/ratio[0])+'px';
		});
	}
	JAME.ASYNC.stack.push(JAME.$("product"));


});



var extraLightWindow = function(options) {


	if(!JAME.$('flash-container')) {

		var div = JAME.DOM.createNode('div');
		div.id="flash-container";
		JAME.$(options.insertIn).appendChild(div);
		JAME.CSS.setStyles(div,{
			position:'absolute',
			top:42,
			left:'7%',
			height:0,
			width:0,
			backgroundColor:'black',
			color:'white',
			opacity:0,
			paddingLeft:20,
			zIndex:10000
		});
		var close     = JAME.DOM.createNode('div');
		close.innerHTML = "CLOSE";
		close.id='flash-close';
		JAME.CSS.setStyles(close,{cursor:'pointer'});
		close.onclick = function(e) {
			new JAME.FX().Tween(JAME.$('flash-container'), {
				height:[0],
				width:[0],
				opacity:[0]
			}).queue(function() {JAME.CSS.setStyles(JAME.$('flash-container'),{display:'none'})})
		}
		JAME.CSS.setStyles(close,{float:'right',marginRight:5,marginTop:5});
		div.appendChild(close);
		var title   = JAME.DOM.createNode('h2');
		    title.id= "tv-title";
		JAME.CSS.setStyles(title,{float:'left',color:'white',padding:'5px',fontSize:14});
		div.appendChild(title);
	}
	else {
		if(JAME.$('flash'))JAME.$('flash').innerHTML='';
		swfobject.removeSWF("flash");

	}
		if(JAME.$('flash'))JAME.$('flash').innerHTML='';
	JAME.$('tv-title').innerHTML=options.title; 

	JAME.CSS.setStyles(JAME.$('flash-container'),{display:'block'});
	JAME.CSS.setStyles(JAME.$('flash-close'),{opacity:0});

	new JAME.FX().Tween(JAME.$('flash-container'), {
		height:[0,options.height],
		width:[0,options.width],
		opacity:[0,1]
	}).queue(function() {

		new JAME.FX().Tween(JAME.$('flash-close'), {
			opacity:[0,1]
		});
		if(!JAME.$('flash')){
			var flash     = JAME.DOM.createNode('div');
		    flash.id  = "flash";
			JAME.$('flash-container').appendChild(flash);
		}
		if(options.href.match(/\.swf$/)){
			var params = {wmode:'transparent'};
			swfobject.embedSWF(options.href, "flash", options.width-20, options.height-40, "9.0.0","expressInstall.swf", {}, params, {});
		}

		if(options.href.match(/\.html?$/)){
			new JAME.Ajax({
				url:options.href,
				onSuccess:function(resp){
					flash.innerHTML=resp;
				}
			})
		}

	});

};


/*

var extraLightWindow = function(options) {


	if(!JAME.$('flash-container')) {

		var div = JAME.DOM.createNode('div');
		div.id="flash-container";
		JAME.$(options.insertIn).appendChild(div);
		JAME.CSS.setStyles(div,{
			position:'absolute',
			top:42,
			left:'7%',
			height:0,
			width:0,
			backgroundColor:'black',
			color:'white',
			opacity:0,
			paddingLeft:20,
			zIndex:10000
		});
		var close     = JAME.DOM.createNode('div');
		close.innerHTML = "CLOSE";
		close.id='flash-close';
		JAME.CSS.setStyles(close,{cursor:'pointer'});
		close.onclick = function(e) {
			new JAME.FX().Tween(JAME.$('flash-container'), {
				height:[0],
				width:[0],
				opacity:[0]
			}).queue(function() {JAME.CSS.setStyles(JAME.$('flash-container'),{display:'none'})})
		}
		JAME.CSS.setStyles(close,{float:'right',marginRight:5,marginTop:5});
		div.appendChild(close);
		var title   = JAME.DOM.createNode('h2');
		    title.id= "tv-title";
		JAME.CSS.setStyles(title,{float:'left',color:'white',padding:'5px',fontSize:14});
		div.appendChild(title);
	}
	else {
		swfobject.removeSWF("flash");
	}

	JAME.$('tv-title').innerHTML=options.title; 

	JAME.CSS.setStyles(JAME.$('flash-container'),{display:'block'});
	JAME.CSS.setStyles(JAME.$('flash-close'),{opacity:0});

	new JAME.FX().Tween(JAME.$('flash-container'), {
		height:[0,options.height],
		width:[0,options.width],
		opacity:[0,1]
	}).queue(function() {

		new JAME.FX().Tween(JAME.$('flash-close'), {
			opacity:[0,1]
		});
		var flash     = JAME.DOM.createNode('div');
		    flash.id  = "flash";
		JAME.$('flash-container').appendChild(flash);
		var params = {wmode:'transparent'};
		swfobject.embedSWF(options.href, "flash", options.width-20, options.height-40, "9.0.0","expressInstall.swf", {}, params, {});

	});

};

*/

/*---------------------*/
/*=PRODUCTS OVERVIEW---*/
/*-------------------*/

JAME.ASYNC.Events.addListener('onFullLoad',function() {

	if(! /(?:products\/Overview)/.test(SWFAddress.getValue()) ) return;

	if(JAME.$('products-categories')) {

		var imgs = parse("#products-categories a img");
		imgs = imgs && imgs.constructor === Array ? imgs : imgs ? [imgs] : [];
		imgs.each(function(elm){ JAME.CSS.setStyles(elm,{opacity:0}); JAME.ASYNC.stack.push(elm);});

		var containers = parse("#products-categories div.category-image");
		containers = (containers && containers.constructor) ===Array ? containers : [containers];
		containers.each(function(elm){ JAME.CSS.setStyles(elm,{opacity:0}); JAME.ASYNC.stack.push(elm); });

		new JAME.FX({duration:100,easing:JAME.FX.Transition.Sine.Out}).Tween(containers,{opacity:[0,.9]});

		var ln = imgs.length;

		new JAME.FX({duration:300}).Tween(imgs,{top:[-80,0],left:[0,-45],opacity:[0,.9]});

		setTimeout(function() {
			imgs.each(function(elm){

				elm.onmouseover=function(e) {
					if(!elm.maxWidth) elm.maxWidth = parseInt(elm.width);
		 			new JAME.FX({duration:200}).Tween(elm,{opacity:[.7,1],width:[elm.maxWidth+20,elm.maxWidth+20]});
				}
				elm.onmouseout=function(e) {
					if(!elm.maxWidth) elm.maxWidth = parseInt(elm.width);
					new JAME.FX({duration:200}).Tween(elm,{opacity:[1,.9],width:[elm.maxWidth,elm.maxWidth]});
				}
			});
		},(ln+1)*250);

	}


	if(JAME.$('products')) {

		var imgs = parse("#products div.thumbImage img");
		imgs = imgs && imgs.constructor === Array ? imgs : imgs ? [imgs] : [];
		imgs.each(function(elm){ JAME.CSS.setStyles(elm,{opacity:0}); });
		new JAME.FX({duration:200}).Tween(imgs,{opacity:[0,1]});
		imgs.each(function(elm) {
			elm.onmouseover = function(e) {
				if(!elm.startWidth) elm.startWidth   = parseInt(elm.width);
				if(!elm.startHeight) elm.startHeight = parseInt(elm.height);
				new JAME.FX({duration:200}).Tween(elm,{width:[elm.startWidth,elm.startWidth*1.05],height:[elm.startHeight,elm.startHeight*1.05]});	
			}
			elm.onmouseout = function(e) {
				new JAME.FX({duration:200}).Tween(elm,{width:[elm.startWidth,elm.startWidth*1.05].reverse(),height:[elm.startHeight,elm.startHeight*1.05].reverse()});
			}

			JAME.ASYNC.stack.push(elm);

		});

		JAME.$('displayBox').style.display='block';
			if(JAME.ASC) {
			isSki=(JAME.ASC.Settings.baseURI) ? false : true;
		}
		else {
			isSki=true;
		}
		if(!isSki) {
			new JAME.Components.ToolTip(JAME.$('displayBox'),JAME.$("products"),
				function(elm) {
					var parent = elm.parentNode.parentNode.parentNode;
					var product      = parent.getElementsByTagName('h4')[0];
					return '<h2>'+product.innerHTML+'</h2>';
				});
		}
		JAME.ASYNC.stack.push(JAME.$("products"));
	}
});

/*---------------------*/
/*=TECHNOLOGIES VIEW---*/
/*-------------------*/


JAME.ASYNC.Events.addListener('onFullLoad',function() {

	if(! /(?:info\/Technologies.html)/.test(SWFAddress.getValue()) ) return;



	var categories = parse('#html_contents div.category');

	//Tooltips
	new JAME.Components.ToolTip(JAME.$('displayBox'),JAME.$("technologies-details"),
		function(elm) {
			if(JAME.$('displayBox').style.display!=='block') JAME.$('displayBox').style.display='block';

			var parent = elm.parentNode;
			if(elm.nodeName.toLowerCase()=='img') elm = JAME.DOM.nextNode(elm);
			if(!elm.oldColor) elm.oldColor = JAME.CSS.getStyle(elm,'color');
			JAME.CSS.setStyles(elm,{color:'#662233'});
			var text   = parent.getElementsByTagName('div')[0];
			return '<h2 class="tooltip">'+elm.innerHTML+'</h2>'+text.innerHTML;
		},function(elm) {
			var parent = elm.parentNode;
			if(elm.nodeName.toLowerCase()=='img') elm = JAME.DOM.nextNode(elm);
			if(!elm.oldColor) elm.oldColor = JAME.CSS.getStyle(elm,'color');
			JAME.CSS.setStyles(elm,{color:elm.oldColor,fontWeight:'normal'});
	},100,900);

	if(!parse('.feature')) return;

		new JAME.Components.ToolTip(JAME.$("displayBox"),JAME.$("technologies-details"),
			function(elm) {

				var contents = elm.parentNode.getElementsByTagName('div')[0].innerHTML;
				if(contents.length==0) return;

				if(JAME.$('displayBox').style.display==='block') JAME.$('displayBox').style.display='none';

					var swf = elm.src;
					swf = swf.split('/img/products/icon/feature/');
					swf=swf[1].replace('\.jpg','');
					swf = '/ski/info/technology/'+swf+'.html'; 
					new JAME.FX({duration:400,easing:JAME.FX.Transition.Sine.Out}).Tween(JAME.$("displayBox"),{opacity:[1,0]});
					if(myLightWindow) {
						myLightWindow.activateWindow({
							href:swf, title:elm.parentNode.getElementsByTagName('p')[0].innerHTML,width:850,height:520
						});
					}
					else {
						var url = swf.replace('\.html','.swf');
						    url = url.replace('ski\/info\/technology\/','img/products/icon/contents/feature/');

						extraLightWindow({
							title:elm.parentNode.getElementsByTagName('p')[0].innerHTML,
							href:url,
							insertIn:'website',
							width:(!JAME.ASC.Settings.baseURI) ? 800:730,
							height:(!JAME.ASC.Settings.baseURI) ? 550:440
						});
					}
					return false;
	
			},function(elm) {		
				if(JAME.$('displayBox').style.display==='block') JAME.$('displayBox').style.display='none';
		},undefined,undefined,'flash-tip','onclick');

		
		JAME.ASYNC.cpanel= new JAME.Components.Panels({
			container : JAME.$("html_contents"),
			navContainer : JAME.$('html_container'),
			panels    : categories,
			panelWidth: 700,
			onCreateNavigation : function(panel,i) {
				return panel.getElementsByTagName('h5')[0].innerHTML;
			},
			isStyling:true,
			onNavigationClick : function(from,to){
				var links = parse('.goto');
				if(from>to){
					var tmpto=to;
					to=from;
					from=tmpto;
				}
				var anim = links.slice(from+1,to);
				anim.each(function(elm,i) {
					setTimeout(function() {
					new JAME.FX({duration:150}).Tween(elm,{selector:['a.activatedfrom','a.activatedto','base']}).queue(
						function() {
							new JAME.FX({duration:150}).Tween(elm,{selector:['a.activatedto','a.activatedend','base']})
						}
					);
					},150*i);
				});
			}
		});
	JAME.ASYNC.stack.push(JAME.$("technologies-details"));
	categories.each(function(elm) { JAME.ASYNC.stack.push(elm)});

});

/*---------------------*/
/*=FAQ VIEW-----------*/
/*-------------------*/

JAME.ASYNC.Events.addListener('onFullLoad',function() {

        if(!/faq\/Show\//.test( SWFAddress.getValue() ) ) return false;

        var ratingForm = JAME.ASYNC.html.getElementsByTagName('form')[1];
        ratingForm.onsubmit=function(e) {
            var e = JAME.Events.Normalize(e);
            e.preventDefault();

            new JAME.Ajax({
                vars : ratingForm,
                onSuccess : function(resp) {
                     var div = resp==1 ? 'thankyou' : 'error';
                     new JAME.FX().Tween(JAME.$(div),{opacity:[0,1],display:['block']});
                }
            });
       };
		JAME.ASYNC.stack.push(ratingForm);

});


if (navigator.appVersion.indexOf("Win")!=-1) JAME.OSName="Windows";
if (navigator.appVersion.indexOf("Mac")!=-1) JAME.OSName="Mac";
/*---------------------*/
/*=DOWNLOAD VIEW------*/
/*-------------------*/

JAME.ASYNC.Events.addListener('onFullLoad',function() {

    if(!/Download/.test( SWFAddress.getValue() ) ) return false;


	if(JAME.$('downloads-flash')) { // IE doesn't give this object back if flash off
		var downloads = JAME.DOM.createNode('div');
		downloads.innerHTML= JAME.$('downloads-flash').innerHTML;
		JAME.$('html_container').removeChild(JAME.$('downloads-flash'));
		JAME.$('html_container').appendChild(downloads);
	}
	else {
		downloads = JAME.$('html_container');
	}

	var elms = downloads.getElementsByTagName('img');

	var elm=[];
	for(var i=0,ln=elms.length;i<ln;i++) elm[i]=elms[i];

	var preloader =	new JAME.Preloader(elm);	
	//JAME.ASYNC.stack.push(elm);
	preloader.addListener('onLoadComplete',function() {

	//scroller links
	var links    = parse('#dl-list a');

	//specs container
	var spec     = JAME.DOM.createNode('div');
	JAME.CSS.setStyles(spec,{position:'absolute',right:2,top:5,zIndex:5000,opacity:0});
	JAME.$('dl-preview').appendChild(spec);

	var cellImgContainer = JAME.DOM.createNode('div');
	JAME.ASYNC.stack.push(cellImgContainer);

	JAME.CSS.setStyles(cellImgContainer,{position:'absolute',left:5,top:20,zIndex:5000,opacity:.8,height:320,width:250,backgroundColor:'#000000',opacity:0});
	JAME.$('dl-preview').appendChild(cellImgContainer);

	var createCellImg = function(url) {
		var cellImg   = JAME.DOM.createNode('img');
		cellImg.src=url;
		JAME.ASYNC.stack.push(cellImg);
		JAME.CSS.setStyles(cellImg,{position:'absolute',left:0,top:0});
		return cellImg;
	}


	var imgURL     = JAME.DOM.createNode('div');
	JAME.ASYNC.stack.push(imgURL);
	imgURL.id='dl-img-url';
	JAME.CSS.setStyles(imgURL,{position:'absolute',right:250,zIndex:5000,opacity:0});

	var button = new JAME.DOM.createNode('a');
	JAME.ASYNC.stack.push(button);
	button.id='dl-img-url-send';
	button.innerHTML='URL送信';
	button.target='_blank';
	button.href='mailto:#';
	imgURL.appendChild(button);

	var input = new JAME.DOM.createNode('input');
	JAME.ASYNC.stack.push(input);
	input.id='dl-img-url-container';
	input.size=55;
	imgURL.appendChild(input);

	JAME.$('dl-preview').appendChild(imgURL);

	//get dl specs
	var urls     = {}; //lookup table
	var ajax     = undefined;

	JAME.ASYNC.stack.push(urls);
	JAME.ASYNC.stack.push(ajax);

	var getInfo = function(url) {
		if(ajax) ajax.abortXHR();
		if(JAME.$('dl-specs')) {
			new JAME.FX({duration:200}).Tween(spec,{opacity:[.5]})
			JAME.$('dl-specs').innerHTML='loading...';
		}
		if(urls[url]) {
			spec.innerHTML=urls[url];
			return new JAME.FX().Tween(spec,{opacity:[.9]});
		}
		ajax = new JAME.Ajax({
			url:url+'&output=raw&os='+JAME.OSName,
			onSuccess : function(resp) {
				spec.innerHTML= resp; 
				urls[url]     = resp;
				new JAME.FX().Tween(spec,{opacity:[.9]});
				ajax = undefined;
			},
			timeout:5000
		});
	};

	//set scroller
	var zoomifier = new JAME.Components.Scroller({
		container : JAME.$('dl-list'),
		contained : parse('#dl-list ul'),
		maxHeight : 582,
		maxWidth  :150,
		speed     :5
	});

	JAME.ASYNC.stack.push(parse('#dl-list ul'));
	JAME.ASYNC.stack.push(JAME.$('dl-list'));
	//set time machine
	var timeMachine = new JAME.Components.TimeMachine({
		container : JAME.$('dl-preview')
	});
	JAME.ASYNC.stack.push(JAME.$('dl-preview'));

	timeMachine.addListener('onTargetClicked',function(event,elm) {
		new JAME.FX({duration:400}).Tween(spec,{opacity:[0]});
		new JAME.FX({duration:400}).Tween(imgURL,{opacity:[0]});
		new JAME.FX({duration:400}).Tween(cellImgContainer,{opacity:[0]});

		JAME.CSS.setStyles(links[elm.nodeNumber].firstChild,{border:'3px solid #e24631'});
		if(links[current]) JAME.CSS.setStyles(links[current].firstChild,{border:'3px solid #EEEEEE'});
		current = elm.nodeNumber;
		getInfo(links[elm.nodeNumber].href);
	});

	timeMachine.start();

	var previews = parse('#dl-preview img');

	previews.each(function(elm){JAME.ASYNC.stack.push(elm);});
	links.each(function(elm){JAME.ASYNC.stack.push(elm);});

	var current  = 0;

	//set first img to have a red border
	new JAME.FX().Tween(JAME.DOM.firstNode(links[0]),{border:['3px solid #e24631']});

	//travel to the img
	links.each(function(elm,i) {

		elm.onclick = function(e) {
			e =JAME.Events.Normalize(e);
			e.stopPropagation();
			e.preventDefault();

			if(timeMachine.isTravelling) return;
			if(previews[i].ratio===1) return;

			timeMachine.isTravelling =true;
			timeMachine.dispatch('onTargetClicked',previews[i]);
			timeMachine.goTo(previews[i],previews[i].ratio);
			JAME.CSS.setStyles(elm.firstChild,{border:'3px solid #e24631'});
			if(elm!==links[current]) JAME.CSS.setStyles(links[current].firstChild,{border:'3px solid #EEEEEE'});
			current=i;
		}
	});

	//get specs
	spec.onclick = function(e) {

		e = JAME.Events.Normalize(e);
		e.stopPropagation();

		var target     = e.target;
		var targetType = e.target.nodeName.toLowerCase();
		if(targetType==='a') {
			if(target.parentNode.id==='dl-os') {
				e.preventDefault();
				getInfo(target.href,1);
				return;
			}
			if(/keitai/.test(target.parentNode.parentNode.parentNode.className)) 
			{
					e.preventDefault();
					input.value=target.href;
					var cellImg=createCellImg(target.href);
					button.href='mailto:#?body='+target.href;
					cellImgContainer.innerHTML='';
					cellImgContainer.appendChild(cellImg);
					new JAME.FX().Tween(imgURL,{top:[e.pageY-120],left:[0],opacity:[1]});
					new JAME.FX().Tween(cellImgContainer,{top:[35,35],opacity:[0,.9]});
			}
		}
	}

	//explanation related
	var manualExplanation = JAME.DOM.createNode('div');
	JAME.ASYNC.stack.push(manualExplanation);

	JAME.$('downloads').appendChild(manualExplanation);
	JAME.CSS.setStyles(manualExplanation,{
		zIndex:5001,
		position:'absolute',
		top:0,
		left:0,
		height:610
	});

	//IE doesn't want to keep the ref, so need to rebuild each time...pfuu
	var createClosingButton = function() {
		var closingButton = JAME.DOM.createNode('div');
		JAME.ASYNC.stack.push(closingButton);
		closingButton.innerHTML='CLOSE X';
		closingButton.onclick = function(e) {
			manualExplanation.innerHTML='';
		}
		JAME.CSS.setStyles(closingButton,{
			position:'absolute',
			bottom:40,
			right:30,
			cursor:'pointer',
			color:'red'
		});
		return closingButton;
	}

	var expUrls ={};
	JAME.ASYNC.stack.push(expUrls);

	var query=undefined;
	JAME.ASYNC.stack.push(query);
	JAME.ASYNC.stack.push(JAME.$('manual'));
	JAME.$('manual').onclick = function(e) {
		e = JAME.Events.Normalize(e);
		e.stopPropagation();
		e.preventDefault();
		var target = e.target;
		(manualExplanation.getElementsByTagName('div')[0] || manualExplanation).innerHTML='loading...';
		if(target.nodeName.toLowerCase()==='a') {
			
			if(query) query.abortXHR();
			if(expUrls[target.href])  {
				manualExplanation.innerHTML=expUrls[target.href];
				manualExplanation.appendChild(createClosingButton());
				return;
			}
			query = new JAME.Ajax({
				url:target.href+'?output=raw',
				onSuccess : function(resp) {
					manualExplanation.innerHTML=resp;
					manualExplanation.appendChild(createClosingButton());

					expUrls[target.href]=resp;
					query=undefined;
				},
				timeout:3500
			});
		}
	};

	})

});
