/**
	common
	tab
	popup
	event
	init
*/
////////////////////////////////////////////////////////////////////////////////
// common
////////////////////////////////////////////////////////////////////////////////
// ウィンドウ名
window.name = "NISSAN_CM_GALLERY_TOP";
// ブラウザチェック
// require JS/swfaddress.js
var isWindows = navigator.userAgent.toLowerCase().indexOf('win') > 0;
var isMozilla = com.asual.util.Browser.isMozilla();
var isIE = com.asual.util.Browser.isIE();
var isIE7 = navigator.userAgent.toLowerCase().indexOf('msie 7') > -1;
var isSafari = com.asual.util.Browser.isSafari();
var isChrome = /chrome/i.test(navigator.userAgent);
var isSupported = com.asual.util.Browser.isSupported();
var isAppleMobile = (navigator.userAgent.indexOf( "iPad" ) > -1 || navigator.userAgent.indexOf( "iPhone" ) > -1);
	
if(isAppleMobile){
	isSupported = isAppleMobile;
	document.write('<script type="text/javascript" src="/NEWS/CM/JS/jquery.jplayer.min.js" charset="utf-8"><\/script>');
}

function swapimage(nm,img) {
	document.images[nm].src = img;
}
////////////////////////////////////////////////////////////////////////////////
// tab
////////////////////////////////////////////////////////////////////////////////
function tab(id){
	this.IDList = new Array();
	this.IDList.push(["carName", "radio", "ranking"]);
	this.IDList.push(["related", "detail"]);
	this.frameList = new Array();
	this.frameList.push("content_iframe");
	this.frameList.push("popup_iframe");
	this.ContList = ["carName", "radioCM", "ranking"];
	this.ID = id;
	this.currentID = 0;
	this.imageDIR = "IMAGES";
}
tab.prototype = {
	setCurrent: function(){
		var img = document.getElementById("btn_" + this.IDList[this.ID][this.currentID]);
		this.swap(this.currentID, "over", img);
	},
	changeTab: function(id,element,loadBool){
		var img = document.getElementById("btn_" + this.IDList[this.ID][this.currentID]);
		this.swap(this.currentID, "out", img);
		var img = document.getElementById("btn_" + this.IDList[this.ID][id]);
		this.swap(id, "over", img);

		if(id == 0){
			document.getElementById("TAB_POPUP_LINK0").style.display = "inline";
		}
		if(this.ID == 0){
			if(this.currentID != id){

				if(id == 1){
					$('#' + this.ContList[this.currentID]).hide();
					$('#' + this.ContList[id]).show({'z-index':23});
					
					if(isAppleMobile){
						if(POPUP.isOpen){
							POPUP.close2();
						}
					}
				}else{
					if(this.currentID == 1){
						$('#' + this.ContList[this.currentID]).css({'z-index':20});
					}else{
						$('#' + this.ContList[this.currentID]).hide();
					}
					$('#' + this.ContList[id]).show();
					
					if(isAppleMobile){
						if(SoundPlayer.isOpen){
							SoundPlayer.close2();
						}
					}
				}

				var h = $('#' + this.ContList[id]).height();
				$('#tab_contents').height(h);

				if(id == 1){
					if(SoundPlayer.ID == '' || SoundPlayer.ID != 'TOP'){
						SoundPlayer.open(true);
					}
				}else{
					if(SoundPlayer.isOpen){
						SoundPlayer.close2();
					}else{
						SWFAddress.setValue('TOP');
					}
				}

			}
		}else if(this.ID == 1){
			if(id == 0){
				var src = "/NEWS/CM/POPUP/related_" + POPUP.ID + ".html";
			}else if(id == 1){
				var src = "/NEWS/CM/POPUP/detail_" + POPUP.ID + ".html";
			}
			if(isIE){
				var obj = this.getMovie("externalLoader");
				obj.loadFile(src);
			}else if(isMozilla || isChrome){
				document.getElementById("popup_iframe").contentDocument.location.replace(src);
			}else if(isSafari || isAppleMobile){
				window.frames["popup_iframe"].location.replace(src);
			}else{
				document.getElementById("popup_iframe").src = src;
			}
		}

		this.currentID = id;
	},
	setHTML:function(html){
		var start = '<body';
		var startDetail = '<body id="detail">';
		var startRelated = '<body id="related">';
		var start = (html.indexOf(startDetail) > -1)? html.indexOf(startDetail) + startDetail.length: (html.indexOf(startRelated) > -1)? html.indexOf(startRelated) + startRelated.length: 0;
		var end = html.indexOf('</body>');
		var html = html.substring(start, end);
	
		// コンテンツが空の場合、詳細表示に切替
		if(html == "" || html == "\n" || html.lenggth < 1){
			this.setTabMenu_Detail();
		}else{
			window.popup_iframe.document.getElementsByTagName("body")[0].setAttribute("id",(this.currentID == 0)? "related":"detail");
			window.popup_iframe.document.getElementsByTagName("body")[0].innerHTML = html;
			window.popup_iframe.scroll(0, 0);
			window.popup_iframe.init();
		}
	},
	getMovie: function(movieName) {
		if (navigator.appName.indexOf("Microsoft") != -1) {
			return window[movieName]
		} else {
			return document[movieName]
		}
	},
	over: function(id){
		if(this.currentID != id){
			this.swap(id, "over");
		}
	},
	out: function(id){
		if(this.currentID != id){
			this.swap(id, "out");
		}
	},
	swap: function(id, status){
		var btnName = "";
		if(status == "out"){
			btnName = "btn_" + this.IDList[this.ID][id] + ".gif";
		}else if(status == "over"){
			btnName = "btn_" + this.IDList[this.ID][id] + "_over.gif";
		}
		document.getElementById("btn_" + this.IDList[this.ID][id]).src = this.imageDIR + "/" + btnName;
	},
	setTabMenu_Detail: function(){
		this.changeTab(1);
		document.getElementById("TAB_POPUP_LINK0").style.display = "none";
	}
}
var TAB_CONT = new tab(0);
var TAB_POPUP = new tab(1);

////////////////////////////////////////////////////////////////////////////////
// popup
////////////////////////////////////////////////////////////////////////////////
function popup(){
	this.ID = "TOP";
	this.movSize = "";
	this.isOpen = false;
	this.isWindows = isWindows;
	this.isMozilla = isMozilla;
	this.isChrome = isChrome;
	this.isIE = isIE;
	this.isIE7 = isIE7;
	this.BODY = null;
	this.CONTENT_IFRAME = null;
	this.POPUP_OVERLAY = null;
	this.POPUP_CONTAINER = null;
	this.POPUP_MOVIE = null;
	this.POPUP_DETAIL = null;
	this.POPUP_BOX  = null;
	this.mainHeaderInner = null;
	this.recommendInner = null;
	this.footerInner = null;

	this.changeTimePeriod = 35;
	this.changeTimerId = 0;
	this.opacityInit = 0;
	this.opacityFin = 85;
	this.opacityGlow = 5;
	this.opacityValue = 0;
}
popup.prototype = {
	init: function(){
		this.BODY = document.body;
		this.POPUP_OVERLAY = document.getElementById("popup_overlay");
		this.POPUP_CONTAINER = document.getElementById("popup_container");
		this.POPUP_BOX = document.getElementById("popup_box");
		this.POPUP_MOVIE = document.getElementById("popup_movie");
		this.POPUP_DETAIL = document.getElementById("popup_detail");
		this.POPUP_IFRAME = document.getElementById("popup_iframe");
		
		this.POPUP_CONTAINER.style.position = "fixed";
		
		// IE6 以下
		if(this.isIE && !this.isIE7) this.POPUP_CONTAINER.style.position = "absolute";
		// win ff
		if(this.isMozilla && this.isWindows) this.POPUP_MOVIE.style.position = "fixed";
		
		if(isAppleMobile) this.POPUP_CONTAINER.style.position = "absolute";
		
		
		// オーバーレイクリック設定
		$('#popup_overlay').bind('click',function(){
			POPUP.close();
		});
		// IE6 以下
		if(this.isIE && !this.isIE7){
			$('#popup_container').bind('click',function(){
				if(POPUP.isOpen) POPUP.close();
			});
			$('#popup_box').bind('click',function(){
				if(window.event) e=window.event; e.cancelBubble = true;
			});
		}

	},
	open: function(){
		if(!this.isOpen){
			this._open();
		}else{
			this.update();
		}
		
		if(isAppleMobile){
			Movie.openAppleMobile();
		}
	},
	_open: function(){
		
		this.isOpen = true;
		
		if(isAppleMobile){
			$('#popup_overlay').show();
			$('#popup_box').show();
			this.setPosition();
		}else{
			// flash contents を非表示位置へ移動
			//document.getElementById("index").style.marginLeft = "-1000px";
			//document.getElementById("indexsearchBox").style.marginLeft = "-1000px";
			document.getElementById("recommend_swf").style.marginLeft = "-1000px";
			//document.getElementById("footer").style.marginLeft = "-1000px";

			// FireFox 以外
			if(!this.isMozilla && !this.isChrome){
				this.POPUP_OVERLAY.style.backgroundColor = "#000000";
				this.POPUP_OVERLAY.style.backgroundImage = "none";
				this.setOpacity(this.POPUP_OVERLAY, 0.85);
			}
			this.POPUP_OVERLAY.style.height = 0 + "px";
			this.POPUP_OVERLAY.style.display = "block";
			this.POPUP_BOX.style.display = "block";
			this.setPosition();

			if(this.isIE && !this.isIE7){
				//for IE6 header menu bug
				document.getElementById("popup_container").style.zIndex="998";
			}
		}
	},
	change: function(){
		this.POPUP_OVERLAY.style.display = "none";
		this.opacityValue = this.opacityInit;
		this.opacityFin = 85;
		this.setOpacity(this.POPUP_OVERLAY, 0);
		this.POPUP_OVERLAY.style.display = "block";
		this._change();	
	},
	_change: function(){
		var self = this;
		if (this.opacityValue < this.opacityFin){
			this.opacityValue += this.opacityGlow;
			if (this.opacityValue > this.opacityFin) this.opacityValue = this.opacityFin;
			if(this.changeTimerId) clearTimeout(this.changeTimerId);
			this.changeTimerId = setTimeout(function(){self._change()}, this.changeTimePeriod);
			this.setOpacity(this.POPUP_OVERLAY, eval(this.opacityValue/100));
		}else{
			clearTimeout(this.changeTimerId);
			this.setPosition();
		}
	},
	close: function(){
		POPUP._close();
		SWFAddress.setValue('TOP');
	},
	close2: function(){
		POPUP._close();
	},
	_close: function(){
		this.ID = "TOP";
		this.movSize = "";
		var target = (this == POPUP)? this: POPUP;
		target.isOpen = false;
		
		if(isAppleMobile){
			$('#popup_overlay').hide();
			$('#popup_box').css({'top':-2000 - $('body').scrollTop()});
			Movie.closeAppleMobile();
		}else{
			target.POPUP_OVERLAY.style.display = "none";
			target.POPUP_BOX.style.top = (-2000 - document.body.scrollHeight) + "px";
			// flash contents の表示位置を戻す
			//document.getElementById("index").style.marginLeft = "0px";
			//document.getElementById("indexsearchBox").style.marginLeft = "0px";
			document.getElementById("recommend_swf").style.marginLeft = "0px";
			//document.getElementById("footer").style.marginLeft = "0px";
			if(this.isIE && !this.isIE7){
				//for IE6 header menu bug
				document.getElementById("popup_container").style.zIndex="-1";
			}
		}
	},
	update: function(){
	},
	setOpacity: function(elment, opacity) {
		if(typeof(elment.style.opacity) != "undefined") {
			elment.style.opacity = opacity;
			POPUP.setOpacity = function(elment, opacity) {
				elment.style.opacity = opacity;
			};
		} else if(typeof(elment.style.MozOpacity) != "undefined") {
			elment.style.MozOpacity = opacity;
			POPUP.setOpacity = function(elment, opacity) {
				elment.style.MozOpacity = opacity;
			};
		} else if(elment.filters) {
			elment.style.filter = "Alpha(opacity=" + (opacity * 100) + ")";
			POPUP.setOpacity = function(elment, opacity) {
				elment.style.filter = "Alpha(opacity=" + (opacity * 100) + ")";
			};
		}
	},
	setPosition: function(){
			
		if(this.isOpen){
			if(isAppleMobile){
				$('#popup_box').css({
					'top':0,
					'margin-top':($(window).height() - $('#popup_box').height()) / 2 + $('body').scrollTop()
				});
				$('#popup_overlay').css({
					'width':$(document).width(),
					'height':$(document).height()
				});
			}else{
				var target = (this == POPUP)? this: POPUP;
				var winWidth  =  window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ? document.body.clientWidth : 0;
				var winHeight =  window.innerHeight? window.innerHeight: document.documentElement.clientHeight? document.documentElement.clientHeight: document.body.clientHeight? document.body.clientHeight : 0;
				target.POPUP_BOX.style.top = "0px";
				target.POPUP_BOX.style.marginTop  = Math.round((winHeight - target.POPUP_BOX.offsetHeight) / 2) + "px";
				target.POPUP_OVERLAY.style.width  = (winWidth < 990)? "990px": "100%";
				target.POPUP_OVERLAY.style.height = Math.max(document.documentElement.scrollHeight, winHeight) + "px";
				if(this.isIE && !this.isIE7){
					target.POPUP_BOX.style.marginTop = 0 + "px";
					target.POPUP_OVERLAY.style.height = Math.max(document.body.scrollHeight, winHeight) + "px";
					var scroll = document.documentElement.scrollTop? document.documentElement.scrollTop: document.body.scrollTop? document.body.scrollTop:0;
					target.POPUP_BOX.style.top = scroll + Math.round((winHeight - target.POPUP_BOX.offsetHeight) / 2) + "px";
				}
			}
		}
	},
	onLoad: function() {
		var target = (this == POPUP)? this: POPUP;
		if(target.isOpen) target.setPosition();
	},
	onScroll: function(){
		if(this.isOpen){
			var target = (this == POPUP)? this: POPUP;
			var winHeight =  window.innerHeight? window.innerHeight: document.documentElement.clientHeight? document.documentElement.clientHeight: document.body.clientHeight ? document.body.clientHeight : 0;
			var scroll = document.documentElement.scrollTop? document.documentElement.scrollTop: document.body.scrollTop? document.body.scrollTop:0;
			target.POPUP_BOX.style.top = scroll + Math.round((winHeight - target.POPUP_BOX.offsetHeight) / 2) + "px";
		}
	},
	onResize: function() {
		var target = (this == POPUP)? this: POPUP;
		if(target.isOpen) target.setPosition();
	}
}
var POPUP = new popup();

/*
 *	Movie
 */
var Movie = {
	init: function(){
	},
	setting: function(){
		if(!isAppleMobile){
			var so = new SWFObject('SWF/movie.swf', 'popup_external', '436', '560', '8');
			so.useExpressInstall('JS/expressinstall.swf');
			so.addParam('menu', 'false');
			so.addVariable("ie", (isSupported)? 0: 1);
			so.write('popup_movie');
		}
	},
	openAppleMobile:function(){
		var id = POPUP.ID;
		var movieSize = POPUP.movieSize;
		var title = Data.getXMLDataByKey(id,'title');
		title = title.replace('[rt]', '<br />');
		//var mp4src = Data.getXMLDataByKey(id,'alternate');
		var mp4src = Data.getURLByKey('mp4URL') + '/' + id + 'g.mp4';
		var type = Data.getXMLDataByKey(id,'type');
		var href = Data.getXMLDataByKey(id,'href');
		var html = '';
		var value = {
			small:id + '/SMALL/',
			large:id + '/LARGE/',
			mega:id + '/MEGA/'
		}
		var sendURL = 'http://www.nissan.co.jp/NEWS/CM/#' + id + '/' + movieSize + '/';

		$('#popup_movie').empty();
		if(movieSize == 'MEGA'){
			var w = 700;
			var h = 393;
			html += '<div id="appleMobileTitleMega">' + title + '</div>';
			html += '<div id="appleMobileMovieMega"><embed width="' + w + '" height="' + h +'" pluginspage="http://www.apple.com/quicktime/download/" frameborder="no" controller="true" autoplay="true" src="' + mp4src + '" wmode="opaque" ></div>';
			html += '<div id="appleMobileBack"><p><a href="#/' + id + '/LARGE/" onclick="SWFAddress.setValue(\'' + value.large + '\');return false;"><img src="IMAGES/btn_back.gif" /></a></p></div>';
		}else{
			html += '<div id="appleMobileTitle">' + title + '</div>';
			if(movieSize == 'SMALL'){
				var w = 320;
				var h = 180;
				html += '<div id="appleMobileMovie"><embed style="margin:30px 0 0;" width="' + w + '" height="' + h +'" pluginspage="http://www.apple.com/quicktime/download/" frameborder="no" controller="true" autoplay="false" src="' + mp4src + '" wmode="opaque" ></div>';
			}else if(movieSize == 'LARGE'){
				var w = 426;
				var h = 240;
				html += '<div id="appleMobileMovie"><embed width="' + w + '" height="' + h +'" pluginspage="http://www.apple.com/quicktime/download/" frameborder="no" controller="true" autoplay="false" src="' + mp4src + '" wmode="opaque" ></div>';
			}
			html += '<div id="appleMobileMovieSize"><a href="#/' + id + '/SMALL/" class="first" onclick="SWFAddress.setValue(\'' + value.small + '\');return false;"><img src="IMAGES/btn_small.gif" /></a><a href="#/' + id + '/LARGE/" onclick="SWFAddress.setValue(\'' + value.large + '\');return false;"><img src="IMAGES/btn_large.gif" /></a><a href="#/' + id + '/MEGA/" onclick="SWFAddress.setValue(\'' + value.mega + '\');return false;"><img src="IMAGES/btn_mega.gif" /></a></div>';
			html += '<div id="appleMobileSend"><form><input type="text" value="' + sendURL + '" /></form><a href="mailto:Your Friend\'s Mail Address?subject=日産:CMギャラリー&body=' + location.href + '"><img src="IMAGES/btn_sendfriend.gif" /></a></div>';
			html += '<div id="appleMobileLink"><p><img src="IMAGES/text_related.gif" /></p><p><a href="' + href + '" target="_blank"><img src="IMAGES/btn_' + type + '.gif" /></a></p></div>';
		}
		$('#popup_movie').html(html);
	},
	closeAppleMobile:function(){
		
		$('#popup_movie').empty();
	}
}
/*
 *	SoundPlayer
 */
var SoundPlayer = {
	ID:"TOP",
	isOpen:false,
	xmlData:[],
	init: function(){
	},
	interval:10,
	intervalID:0,
	setting: function(){
		if(isAppleMobile){

			var xmldata = Data.xmlData.children().children().children();
			$(xmldata).each(function(){
				if($(this).attr('cmtype') == 'radio'){
					SoundPlayer.xmlData.push($(this));
				}
			});

			for(var i in SoundPlayer.xmlData){
				var id = SoundPlayer.xmlData[i].attr('id');
				var playerID = 'jp_' + id;
				var containerID = 'jp_container_' + id;
				var grabID = 'jp_grab_' + id;
				
				var html = '';
				html += '<div id="' + playerID + '" class="jp-jplayer"></div>';
				html += '<div id="' + containerID + '" class="jp-audio">';
				html += '	<div class="jp-type-single">';
				html += '		<div class="jp-gui jp-interface">';
				html += '			<ul class="jp-controls">';
				html += '				<li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>';
				html += '				<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>';
				html += '			</ul>';
				html += '			<div class="jp-progress">';
				html += '				<div class="jp-seek-bar">';
				html += '					<div class="jp-play-bar"></div>';
				html += '				</div>';
				html += '			</div>';
				html += '			<div id="' + grabID + '" class="jp-grabwrap">';
				html += '				<div class="jp-grab"> </div>';
				html += '			</div>';
				html += '		</div>';
				html += '	</div>';
				html += '</div>';

				$('#' + id + ' .btnPlay').html(html);
				$('#' + playerID).data('soundID', id);
				$('#' + playerID).data('playerID', playerID);
				$('#' + playerID).data('containerID', containerID);
				$('#' + playerID).data('grabID', grabID);
				$('#' + playerID).data('isLoaded',false);
				$('#' + playerID).jPlayer({
					ready: function () {
						var url = "/NEWS/CM/RADIO/" + $(this).data('soundID') + ".mp3";
						$(this).jPlayer("setMedia", {
							mp3:url
						});
					},
					cssSelectorAncestor:'#' + containerID,
					supplied: "mp3",
					wmode: "window",
					solution:'html',
					preload:"auto"
				});

				$('#' + playerID).bind($.jPlayer.event.play, function(event) {
					var grab = '#' + $(this).data('containerID') + ' .jp-grab';
					var play_bar = '#' + $(this).data('containerID') + ' .jp-play-bar';
					for(var i in SoundPlayer.xmlData){
						var id = SoundPlayer.xmlData[i].attr('id');
						var player = '#jp_' + id;
						if(id != $(this).data('soundID')){
							//$(player).jPlayer("playHead", 1);
							//$(player).jPlayer('pause');
							$(player).jPlayer('stop');
							
							var grab = '#jp_container_' + id + ' .jp-grab';
							$(grab).css({'left':-8});
						}
					}
					SoundPlayer.setGrabInterval('#' + $(this).data('playerID'));
					SWFAddress.setValue($(this).data('soundID'));
				});
				$('#' + playerID).bind($.jPlayer.event.pause, function(event) {
				});
				$('#' + playerID).bind($.jPlayer.event.loadeddata, function(event) {
					$(this).data('isLoaded', true);
				});
				$('#' + playerID).bind($.jPlayer.event.error, function(event) {
				});
				$('#' + playerID).bind($.jPlayer.event.ended, function() {
					var grab = '#' + $(this).data('containerID') + ' .jp-grab';
					$(grab).css({'left':-8});
				});

				var ua = navigator.userAgent;
				if(ua.indexOf('iPhone') > -1 || ua.indexOf('iPad') > -1 || ua.indexOf('iPod')  > -1){
					var start = "touchstart";
					var move  = "touchmove";
					var end   = "touchend";
				}else{
					var start = "mousedown";
					var move  = "mousemove";
					var end   = "mouseup";
				}

				$('#' + grabID).data('playerID',playerID);
				$('#' + grabID).data("draging",false);
				$('#' + grabID).bind('click',function(e){
					var player = '#' + $(this).data('playerID');
					if(!($(player).data('isLoaded'))){
						$(player).jPlayer("play");
						$(this).unbind('click');
					}
					return false;
				});
				$('#' + grabID).bind(start,function(e){
					var player = '#' + $(this).data('playerID');
					if($(player).data('isLoaded')){
						$(this).data("draging",true);
						SoundPlayer.clearGrabInterval();
						$(player).jPlayer('pause');
						if(!e.pageX) e = event.touches[0];
						
						var startX = e.pageX - $(this).offset().left;
						var startLeft = startX - 8;
						
						$(this).data("e",e);
						$(this).data('startX', startX);
						$(this).data('startLeft', startLeft);
						$('.jp-grab', this).css( {
							'left': startX - 8
						});
					}
					return false;
				});
				$('#' + grabID).bind(move,function(e){
					if($(this).data("draging")){
						if(!e.pageX) e = event.touches[0];
						$(this).data("e",e);
						var left = (e.pageX - $(this).offset().left) - 8;
						
						if(left < -8){
							left =  -8;
						}else if(left > 167){
							left = 167;
						}
						$('.jp-grab', this).css({'left': left});
					}
					return false;
				});
				$('#' + grabID).bind(end,function(e){
					if($(this).data("draging")){
						$(this).data('draging',false);
						if(!e.pageX) e = $(this).data("e");
						var grab = $('.jp-grab', this);
						var playbar = $('.jp-play-bar', this);
						var playerID = $(this).data("playerID");
					
						var left = (e.pageX - $(this).offset().left) - 8;
						
						if(left < -8){
							left =  -8;
						}else if(left > 167){
							left = 167;
						}
						
						grab.css({'left': left});
						playbar.css({'width': grab.position().left});
						
						var x = (grab.position().left + 8) / 175 * 100;
						SoundPlayer.setGrabInterval('#' + playerID);
						$('#' + playerID).jPlayer("playHead", x).jPlayer("play");
					}
					return false;
				});
			}
		}else{
			var so = new SWFObject('SWF/sound.swf', 'sound_external', '264', '20', '8');
			so.useExpressInstall('JS/expressinstall.swf');
			so.addParam('menu', 'false');
			so.addParam('wmode', 'transparent');
			so.addVariable("ie", (isSupported)? 0: 1);
			so.write('sound_movie');
		}
	},
	setGrabInterval: function(id){
		var grab = '#' + $(id).data('containerID') + ' .jp-grab';
		var play_bar = '#' + $(id).data('containerID') + ' .jp-play-bar';
		
		clearInterval(SoundPlayer.intervalID);
		SoundPlayer.intervalID = setInterval(function(){
			$(grab).css( {
				'left': $(play_bar).width() - 8
			});
		}, SoundPlayer.interval);
	},
	clearGrabInterval: function(){
		clearInterval(SoundPlayer.intervalID);
	},
	open: function(isScroll){
		if(!SoundPlayer.isOpen){
			SoundPlayer.isOpen = true;
		}
		SoundPlayer.setPosition(isScroll);
	},
	stopAppleMobile: function(){
		for(var i in SoundPlayer.data){
			var id = SoundPlayer.data[i].attr('id');
			var playerID = 'jp_' + id;
			$('#' + playerID).jPlayer('stop');
		}
	},
	change: function(){
	},
	close: function(){
		SoundPlayer._close();
		SWFAddress.setValue('TOP');
	},
	close2: function(){
		SoundPlayer._close();
	},
	_close: function(){
		SoundPlayer.isOpen = false;
		SoundPlayer.ID = 'TOP';
		$('#sound_movie').css({
			top:'-9999px',
			left:'-9999px'
		});
		if(isAppleMobile){
			for(var i in SoundPlayer.xmlData){
				var id = SoundPlayer.xmlData[i].attr('id');
				var player = '#jp_' + id;
				if(id != $(this).data('soundID')){
					$(player).jPlayer('pause',0);
					
					var grab = '#jp_container_' + id + ' .jp-grab';
					$(grab).css({'left':-8});
				}
			}
					
		}
	},
	setPosition: function(isScroll){
		if(SoundPlayer.isOpen && !isAppleMobile){
			var radioPos = $('#radioCM').offset();
			var itemPos = $('#' + SoundPlayer.ID).offset();
			var pos = {
				top: itemPos.top - radioPos.top + 54,
				left: itemPos.left - radioPos.left + 12
			}
			$('#sound_movie').css({
				top:pos.top,
				left:pos.left
			});
			
			if(isScroll){
				$('html,body').scrollTop(pos.top);
			}
		}
	}
}
/*
 *	Recommend
 */
var Recommend = {
	index:0,
	length:3,
	XML_URL:'SWF/photolist.xml',
	xmlData: {},
	setting: function(){
		if(isAppleMobile){
			Recommend.load();
		}else{
			var so = new SWFObject('SWF/recommend.swf', 'recommend_swf', '685', '159', '8');
			so.useExpressInstall('JS/expressinstall.swf');
			so.addParam('menu', 'false');
			so.addParam('wmode', 'transparent');
			so.addVariable("isSupported", isSupported);
			so.write('recommend');
		}
	},
	load: function(){
		$.ajax({
			type:'GET',
			url:Recommend.XML_URL,
			dataType:'xml',
			success:function(xml){
				Recommend.xmlData = $(xml).children().children();
				Recommend.loadComplete();
			}
		});
	},
	loadComplete: function(){
		var html = "";
		html += '<div id="recommendTitle"><img src="IMAGES/recommend_title.gif" alt="" width="134" height="31" /></div>';
		html += '<div id="recommendList"></div>';
		html += '<div id="recommendPrev"><a href="#"><img src="IMAGES/recommend_prev.gif" alt="" width="40" height="21" /></a></div>';
		html += '<div id="recommendNext"><a href="#"><img src="IMAGES/recommend_next.gif" alt="" width="40" height="21" /></a></div>';
		$('#recommend').html(html);
		
		$('#recommendPrev a').bind({"click":function(){
			 if(Recommend.index + 1 >= Recommend.length){
				 Recommend.index = 0;
			 }else{
				 Recommend.index++;
			 }
			 Recommend.createContents();
		}});
		$('#recommendNext a').bind({"click":function(){
			 if(Recommend.index - 1 < 0){
				 Recommend.index = 2;
			 }else{
				 Recommend.index--;
			 }
			 Recommend.createContents();
		}});
		
		Recommend.createContents();
	},
	createContents: function(){
		var html = "";
		for(var i = 0; i < Recommend.length; i++){
			var id = i +  (Recommend.index * 3);
			
			var src = Recommend.xmlData.eq(id).attr('src');
			var text = Recommend.xmlData.eq(id).attr('alt');
			var href = '#/' + Recommend.xmlData.eq(id).attr('id') + '/LARGE/';
			html += '<a href="' + href + '"><img src="' + src + '" alt="" width="94" height="70" /><span>' + text + '</span></a>';
		}
		$('#recommendList').html(html);
		
		$('#recommendList a').bind({"click":function(){
			var href = $(this).attr('href');
			var index = href.indexOf('#');
			if (index != -1) {
				var value = href.substring(index).replace(/^#/g, '');
			}
			SWFAddress.setValue(value);
		}});
	}
}

function SWFAddressInitHandler(e){
	Movie.setting();
	SoundPlayer.setting();
	POPUP.init();
}
function SWFAddressChangeHandler(e){
	// タイトル
	//SWFAddress.setTitle("日産：CMギャラリー");
	document.title = "日産：CMギャラリー";

	var hashDir = e.path.substr(1, e.path.length - 2).split("/");
	var tempID = (hashDir[0] == "")? "TOP": hashDir[0];
	var cmType = Data.getXMLDataByKey(tempID,'cmtype');

	if(cmType == 'movie'){

		// テレビCMの場合

		if(SoundPlayer.isOpen){
			SoundPlayer.close2();
		}

		if(POPUP.ID != tempID){
			POPUP.ID = tempID;
			if(POPUP.ID != "TOP"){
				TAB_POPUP.changeTab(0);
			}
		}
		POPUP.ID = tempID;
		POPUP.movieSize = hashDir[1];

		if(POPUP.movieSize == "MEGA"){
			POPUP.POPUP_DETAIL.style.display = "none";
			document.getElementById("popup_movie").style.paddingLeft = 103 + "px";
			document.getElementById("popup_movie").style.width = 711 + "px";
			if(!isAppleMobile) document.getElementById("popup_external").style.width = 711 + "px";
		}else{
			if(!isAppleMobile) document.getElementById("popup_external").style.width = 437 + "px";
			document.getElementById("popup_movie").style.width = 437 + "px";
			document.getElementById("popup_movie").style.paddingLeft = 40 + "px";
			POPUP.POPUP_DETAIL.style.display = "block";
		}
		POPUP.open();
	}else if(cmType == 'radio'){

		// ラジオCMの場合

		if(POPUP.isOpen){
			POPUP.close2();
		}

		SoundPlayer.ID = tempID;

		if(TAB_CONT.currentID != 1){
			$('.tabMenu a').eq(1).trigger('click', [1,$(this)]);
		}
		if(isAppleMobile){
			SoundPlayer.isOpen = true;
			//SoundPlayer.openAppleMobile();
		}else{
			if(SoundPlayer.isOpen){
				SoundPlayer.setPosition();
			}else{
				SoundPlayer.open();
			}
		}
	}else if(e.value == "/" || e.value == "/TOP/"){
		if(POPUP.isOpen) POPUP.close();
		if(SoundPlayer.isOpen) SoundPlayer.close();
	}
}

////////////////////////////////////////////////////////////////////////////////
// event
////////////////////////////////////////////////////////////////////////////////

function onResizeHandler(){
	POPUP.onResize();
}
function onScrollHandler(){
	POPUP.onScroll();
}
function onLoadHandler(){
	
	if(isSupported) {
		POPUP.onLoad();
		//TAB_POPUP.setCurrent();
	}else{
		// ハッシュ取得
		var index = location.href.indexOf('#');
		if (index != -1) {
			var hash = location.href.substring(index).replace(/^#/g, '');
		}
		var hashDir = hash.substr(1, hash.length - 2).split("/");
	
		if(hashDir[0] != "" || hashDir[0] != "TOP"){
			CmMvPopWin(hashDir[0], hashDir[1]);
		}
		location.href = "./#" + hashDir[0] + "/" + hashDir[1] + "/";
	}
	TAB_CONT.setCurrent();
	MM_preloadImages('IMAGES/btn_carName.gif', 'IMAGES/btn_ranking_over.gif', 'IMAGES/btn_related.gif', 'IMAGES/btn_detail_over.gif', 'IMAGES/btn_play_over.gif', 'IMAGES/btn_close_over.gif');
}


if (window.addEventListener) {
	window.addEventListener("load",onLoadHandler,false);
	window.addEventListener("resize",onResizeHandler,false);
}else if (window.attachEvent && document.getElementById) {
	window.attachEvent("onload",onLoadHandler);

	if(isSupported) window.attachEvent("onresize",onResizeHandler);

	// SWFAddressサポート外 && IE6 以下
	if(isSupported && isIE && !isIE7){
		window.attachEvent("onscroll",onScrollHandler);
	}
}

/*
 *	Data
 */
var Data = {
	XML_URL:'SWF/data.xml',
	xmlData: {},
	load: function(){
		$.ajax({
			type:'GET',
			url:Data.XML_URL,
			dataType:'xml',
			success:function(xml){
				Data.xmlData = $(xml);
				Data.loadComplete();
			}
		});
	},
	loadComplete: function(){
		if(isSupported){
			SWFAddress.addEventListener(SWFAddressEvent.INIT, SWFAddressInitHandler);
			SWFAddress.addEventListener(SWFAddressEvent.CHANGE, SWFAddressChangeHandler);
		}
	},
	getURLByKey: function(key){
		var xml = Data.xmlData.children().children();
		return $(xml).attr(key);
	},
	getXMLDataByKey: function(id, key){
		var xml = Data.xmlData.children().children().children();
		var value;
		$(xml).each(function(){
			if($(this).attr('id') == id){
				value = $(this).attr(key);
			}
		});
		return value;
	},
	dummy:{}
};
Data.load();

var btnPlay_src = "/NEWS/CM/IMAGES/btn_play.gif";
var btnPlay_over_src = "/NEWS/CM/IMAGES/btn_play_over.gif";
var btnPlay2_over_src = "/NEWS/CM/IMAGES/btn_play2_over.gif";
var btnRadioPlay_src = "/NEWS/CM/IMAGES/btn_radio_play.gif";
var btnRadioPlay_over_src = "/NEWS/CM/IMAGES/btn_radio_play_over.gif";

function setLink(element, isRadioCMBtn){
	if(isAppleMobile){
		element.onclick = function(){
			var href = element.getAttribute("href");
			var index = href.indexOf('#');
			if (index != -1) {
				var value = href.substring(index).replace(/^#/g, '');
			}
			SWFAddress.setValue(value);
			return false;
		}
	}else{
		element.onclick = function(){
			var href = element.getAttribute("href");
			var index = href.indexOf('#');
			if (index != -1) {
				var value = href.substring(index).replace(/^#/g, '');
			}
			if(isSupported){
				SWFAddress.setValue(value);
			}else{
				var hashDir = value.substr(1, value.length - 2).split("/");
				CmMvPopWin(hashDir[0], hashDir[1]);
			}
			return false;
		}
		element.onmouseover = function(){
			if(isRadioCMBtn){
				element.getElementsByTagName("img")[0].src = btnRadioPlay_over_src;
			}else{
				if((element.getAttribute('class') || element.getAttribute('className')) == "cmBlockItem"){
					element.getElementsByTagName("img")[1].src = btnPlay_over_src;
				}else{
					element.getElementsByTagName("img")[1].src = btnPlay2_over_src;
				}
			}
		}
		element.onmouseout = function(){
			if(isRadioCMBtn){
				element.getElementsByTagName("img")[0].src = btnRadioPlay_src;
			}else{
				element.getElementsByTagName("img")[1].src = btnPlay_src;
			}
		}
	}
}

/*
 * onDocumentTreeLoaded
 */
$('document').ready(function(){

	// radioCM
	$('#radioCM .radioDetail').each(function(){
		$(this).css({top:$(this).parent().offset().top-$('#tab_contents').offset().top+90});
	});

	var h = $('#radioCM').height();
	var maxDetailH = 0;
	$('#radioCM .radioDetail').each(function(i){
		var vh = $(this).height();
		if(vh > maxDetailH) maxDetailH = vh;
	});
	h += maxDetailH;

	var length = $('#radioCM div.radioDetail').length;
	var last = '#radioCM div.radioDetail:eq('+(length-1)+')';

	if(length % 2 == 1){
		if(maxDetailH > $(last).height()){
			h -= maxDetailH - $(last).height();
		}
	}else{
		var last2 = '#radioCM div.radioDetail:eq('+(length-2)+')';
		if(maxDetailH > $(last).height() || maxDetailH > $(last2).height()){
			if($(last).height() > $(last2).height()){
				h -= maxDetailH - $(last).height();
			}else{
				h -= maxDetailH - $(last2).height();
			}
		}
	}
	$('#radioCM').height(h);
	$('.radioDetail').hide();
	//$('#radioCM').hide();

	$('a.btnDetail').click(function(){
		$('.radioDetail:visible').not($(this).next('.radioDetail')).hide().prev('a.btnDetail').html('詳細情報');
		var id = $(this).attr("href");
		if($(id).is(":visible")) {
			$(this).html('詳細情報');
		}else if($(id).is(":hidden")){
			$(this).html('閉じる');
		}
		$(id).animate({opacity: 'toggle'}, 'fast');

		return false;
	});

	MM_preloadImages('/NEWS/CM/IMAGES/bg_cmBlockItem_over.gif', '/NEWS/CM/IMAGES/bg_cmBlockItemWeb_over.gif', '/NEWS/CM/IMAGES/btn_play_over.gif', '/NEWS/CM/IMAGES/btn_play2_over.gif');

	if(isAppleMobile){
		$('html').append('<div id="console" style="position:absolute;top:0;left:0;background:#fff;z-index:10000;"></div>');
		$('#popup_iframe').css({'border':'none'});
		$('#popup_iframe_wrapper').css({'border':'1px solid #d6d6d6'});
	}

	//link
	var a = document.getElementsByTagName('a');
	var len = a.length;
	var rel = "";
	for(var i = 0;  i < len; i++){
		rel = a[i].getAttribute("rel");
		if(rel && rel == "popup"){
			setLink(a[i], false);
		}
	}
	for(var i = 0;  i < len; i++){
		rel = a[i].getAttribute("rel");
		if(rel && rel == "popup2"){
			setLink(a[i], true);
		}
	}
});

