var galleryviewSeconds;
var galleryviewIsRotation;
var galleryviewIsRandom;
var galleryviewIsError;
var galleryviewSlideStartBtnPath;
var galleryviewSlideStartBtnText;
var galleryviewSlideStopBtnPath;
var galleryviewSlideStopBtnText;
var galleryviewPanelHeight;
jQuery(function($){
	$(function(){
		if ($('#visualMain').size() > 0) return false;
		$('<div>').attr('id', 'visualMain').appendTo('#keyVisualContents');
		$('<div>').attr({'id':'visual', 'class':'galleryview'})
			.append('<div id="promoVisualTop">')
			.appendTo('#visualMain');
		$('<div id="visualLoading"><p>データを読み込んでいます。</p>').appendTo('#visualMain');
		get_xml();
	});

	//xml読み込み
	function get_xml(){
		$.ajax({
				url:'xml/main.xml',
				type:'get',
				dataType:'xml',
				cache: false,
				timeout:3000,
				success:parse_xml,
				error: parse_failure
		});
	}

	function parse_failure(){
		$('#visualLoading').replaceWith('<div id="visualError"><p>データの読み込みに失敗しました。</p>');
	}

	function parse_xml(xml,status){
		var maxLoadNum = 3;
		if(status!='success')return;
		var xmlData = new Array();
		$(xml).find('speed').each(function(){
			var speed = parseFloat($(this).text());
			galleryviewSeconds = speed;
			if (speed < 0 || speed > 10) {
				galleryviewSeconds = 5;
			}
		});
		if (galleryviewIsError) return;
		$(xml).find('rotation').each(function(){
			var rotation = parseInt($(this).text());
			if (rotation != 0 && rotation != 1) {
				rotation = 0;
			}
			galleryviewIsRotation = (rotation == 1) ? true : false;
		});
		$(xml).find('random').each(function(){
			var random = parseInt($(this).text());
			if (random != 0 && random != 1) {
				random = 0;
			}
			galleryviewIsRandom = (random == 1) ? true : false;
		});
		$(xml).find('btnLayout').each(function(){
			var btnLayout = parseInt($(this).text());
			if (!btnLayout) {
				$('#visualMain').addClass('onVisual');
				galleryviewPanelHeight = 184;
			} else {
				galleryviewPanelHeight = 209;
			}
		});
		$(xml).find('rotationStartBtnPath').each(function(){
			galleryviewSlideStartBtnPath = $(this).text();
		});
		$(xml).find('rotationStartBtnAlt').each(function(){
			galleryviewSlideStartBtnText = $(this).text();
		});
		$(xml).find('rotationStopBtnPath').each(function(){
			galleryviewSlideStopBtnPath = $(this).text();
		});
		$(xml).find('rotationStopBtnAlt').each(function(){
			galleryviewSlideStopBtnText = $(this).text();
		});
		if (galleryviewIsError) return;
		$(xml).find('data').each(function(n){
			if (n > maxLoadNum) return false;
				xmlData[n] = {
					'filePath': $(this).find('filePath').text(),
					'navText':  $(this).find('navText').text(),
					'navLink':  $(this).find('navLink').text(),
					'priority': (parseInt($(this).find('priority').text()) >= 1 &&
											parseInt($(this).find('priority').text()) <= 99999) ?
											parseInt($(this).find('priority').text()) : 1
				};
		});
		var RmenuData = xmlData;
		if (galleryviewIsRandom) {
			var Limit_length = xmlData.length;
			RmenuData = new Array();
			array_list=0;
			do{
				array_max=0;
				for(i=0;i<xmlData.length;i++){
					array_max += xmlData[i]['priority'];
				}
				if(array_max > 0){
					rnd = Math.floor( Math.random() * ( array_max - 1 + 1 ) ) + 1;
					array_result = -1;
					range_begin = 1;
					for( i = 0 ; ( i < xmlData.length ) && ( array_result == -1 ) ; i++ ){
						//各配列から、範囲の終点を決める
						range_end = range_begin + xmlData[i]['priority'];
						//引いた乱数がこの範囲にあれば、該当箇所を確定
						if( rnd >= range_begin && rnd < range_end ){
							//配列の番号を記録
							array_result = i;
							array_index = i;
						}
						//次の範囲の始点を変更
						range_begin = range_end;
					}
					RmenuData[array_list]=xmlData[array_index];
					preData=new Array();
					icount=0;
					for(i=0;i<xmlData.length;i++){
						if(i != array_index){
							preData.push(xmlData[i]);
						}
						icount++;
					}
					xmlData=preData;
					array_list++;
				}
			}while(array_list < Limit_length);
		}

		for (var i = 0; i < RmenuData.length; i++) {
			var imgPath=RmenuData[i]['filePath'];
			var alt=RmenuData[i]['navText'];
			var linkPath=RmenuData[i]['navLink'];
			$('<div class="panel">' + '<a href="'+linkPath+'">' + '<img src="'+imgPath+'?_='+(new Date).getTime()+'" width="704" height="184" alt="'+alt+'" /></a></div>').appendTo('#promoVisualTop');
		}

		function writeNavi(){
			var naviHtml = '<ul class="filmstrip">';
			for (var i = 0; i < RmenuData.length; i++) {
				RmenuData[i]['filePath'].match(/([0-9]+)\.(jpg|gif)/)
				var alt=$(this).find('navText').text();
				naviHtml += '<li><a href="' + RmenuData[i]['navLink'] + ' "><img src="images/top_main_bnr_s_'+RegExp.$1+'.jpg?_='+(new Date).getTime()+'" width="143" height="37" alt="'+alt+'" /></a></li>';
			}
			naviHtml += '</ul>';
			return naviHtml;
		}

		$('#promoVisualTop').after(writeNavi());
		$('#visualLoading').remove();
		moveVisual();
	}

	function moveVisual(){
		$('#visual').galleryViewTop({
		panel_width: 704,
		panel_height: galleryviewPanelHeight,
		frame_width: 143,
		frame_height: 37,
		frame_margin: 8,
		frame_margin_top: 5,
		frame_border: '1px solid #D3D0E6',
		border: 'none',
		background_color: 'none',
		pause_on_hover: true,
		transition_interval: galleryviewSeconds * 1000,
		is_rotation: galleryviewIsRotation
		});
	}
});

