/**************************************************************************************************** *		item.js *		 *		makeshop内で表示しているバナー、ムービー、ランキングを共通で管理するための処理を記述したファイル * *		[Create]	Hiroyuki Takahashi *		[Builde Date]	2010/1/15 *		[Modification  Date]	2010/2/2 * * 		[Version] *				0.4		・データファイルでlinkが空白の時、ページ遷移が出来ないように修正 * 																							(2010/2/2) *				0.3		・「人気の〜」の処理を追加 *																							(2010/2/2) *				0.2		・データが０件時の出力false→空白に修正 *							・他サイトで使用→リンクが違いエラーを修正 *							  																(2010/1/20) * 				0.1		・[Create] [Builde Date][Modification  Date]を追加 *																							(2010/1/16) *****************************************************************************************************///データを処理するクラスfunction itemInfoRecord (itemNo, fullName, shortName, link, category, rank, oldRank, movieList, bannerList, lapping, boxPrice) {	this.itemNo = itemNo;					//商品コード	this.fullName = fullName;			  //名前(フル)		this.shortName = shortName;		//名前(ショート)	this.link = link;								 //リンク先	this.category = category;			 //カテゴリー 	this.rank = rank;							 //ランキング	this.oldRank = oldRank; 				//過去のランキング	this.movieList = movieList;			  //ムービーリスト	this.bannerList = bannerList;		//バナーリスト	this.lapping = lapping;					  //ラッピング	this.boxPrice = boxPrice;				//箱代}function itemInfoDb (baseRoot, itemDir) {	this.baseRoot = baseRoot;	this.itemDir = baseRoot + itemDir;	this.data = new Array();	this.setStaticBannerPrintNum = new Array();	this.setRandomBannerPrintNum = new Array();	this.setRankingPrintNum = new Array();	this.setPopularPrintTitle = new Array();	this.setPrintMenu = new Array();	this.setPrintMenuCategory = new Array();	this.popTest = new Array();	//------------データタイプ毎にデータ配列に代入---------------------------------------------------------------------	//バナー	this.bannerAdd = function (fullName, link, bannerList) {		var type = "banner";		if (this.data[type] == undefined) {			this.data[type] = new Array();			this.data[type][0] = new itemInfoRecord ('', fullName['fullName'], '', link['link'], '', '', '', '',  bannerList['bannerList'], '', '');		} else {			len = this.data[type].length;			this.data[type][len] = new itemInfoRecord ('', fullName['fullName'], '', link['link'], '', '', '', '',  bannerList['bannerList'], '', '');		}		return true;	}	//ムービー	this.movieAdd = function (movieList) {		var type = "movie";		if (this.data[type] == undefined) {			this.data[type] = new Array();			this.data[type][0] = new itemInfoRecord ('', '', '', '', '', '', '', movieList['movieList'], '', '', '');		} else {			var len = this.data[type].length;			this.data[type][len] = new itemInfoRecord ('', '', '', '', '', '', '', movieList['movieList'], '', '', '');		}		return true;	}	//ランキング	this.rankingAdd = function (category, link, fullName, rank) {		var type = "ranking";		if (this.data[type] == undefined) {			this.data[type] = new Array();			this.data[type][0] = new itemInfoRecord ( '', fullName['fullName'], '', link['link'], category['category'], rank['rank'], '', '', '', '', '' );		} else {			var len = this.data[type].length;			this.data[type][len] = new itemInfoRecord ( '', fullName['fullName'], '', link['link'], category['category'], rank['rank'], '', '', '', '', '' );		}		return true;	}		//popular	this.popularAdd = function (category, shortName, link) {		var type = "popular";		if (this.data[type] == undefined) {			this.data[type] = new Array();			this.data[type][0] = new itemInfoRecord ('', '', shortName['shortName'], link['link'], category['category'], '', '', '',  '', '', '');		} else {			len = this.data[type].length;			this.data[type][len] = new itemInfoRecord ('', '', shortName['shortName'], link['link'], category['category'], '', '', '',  '', '', '');		}		return true;	}		//その他アイテム	this.itemAdd = function (itemNo, fullName, shortName, oldRank, lapping, boxPrice) {		var type = "item";		if (this.data[type] == undefined) {			this.data[type] = new Array();			this.data[type][0] = new itemInfoRecord ( itemNo['itemNo'], fullName['fullName'], shortName['shortName'], '', '', '', oldRank['oldRank'], '', '', lapping['lapping'], boxPrice['boxPrice']);		} else {			var len = this.data[type].length;			this.data[type][len] = new itemInfoRecord ( itemNo['itemNo'], fullName['fullName'], shortName['shortName'], '', '', '', oldRank['oldRank'], '', '', lapping['lapping'], boxPrice['boxPrice']);		}		return true;		}	//--------------------------------------------------------------------------------------------------	//------------タイプ毎の出力件数取得---------------------------------------------------------------------	//固定バナーの出力件数取得	this.setStaticBannerNum = function (setStaticBannerNum) {		this.setStaticBannerPrintNum = setStaticBannerNum;		return true;	}		//ランダムバナーの出力件数取得	this.setRandomBannerNum = function (setRandomBannerNum) {		this.setRandomBannerPrintNum = setRandomBannerNum;		return true;	}		//ランキングの出力件数取得	this.setRankingNum = function (setRankingNum) {		this.setRankingPrintNum = setRankingNum;		return true;	}	//-----------------------------------------------------------------------------------------------------------------//------------タイトル名の取得---------------------------------------------------------------------------------------------	//「人気の〜」のタイトル取得	this.setPopularTitle = function (popularTitle) { this.setPopularPrintTitle = popularTitle; return true; }//------------------------------------------------------------------------------------------------------------------------------//------------汎用的に利用するコード---------------------------------------------------------------------	//argでデータをソートする	this.sort = function (arg,	data) {		if (arg == undefined) { return false; }		if (data == undefined) { return false; }		data.sort( function (b1, b2) { return b1[arg] - b2[arg]; } );		return data;	}			//データをランダムデータにする	this.random = function (randomData, num, size, type) {		var resArr = new Array();		if (randomData == undefined) { return false; }		else { len = resArr.length; }		for (cnt = 0; cnt < num; cnt++) {			key = Math.floor(Math.random() * randomData.length);			if (len == 0) { resArr[0] = randomData[key]; len++; }			else { len = resArr.length; resArr[len] = randomData[key]; }			ar1 = randomData.slice(0, key);			ar2 = randomData.slice(key+1);			randomData = ar1.concat(ar2);			this.data[type] = ar1.concat(ar2);		}		return resArr;	}		//カテゴリー毎にデータを得る	this.getCategoryData = function (category, data) {		if (category == undefined) { return false; }		if (data == undefined) { return false; }		var categoryData = new Array();		for (			cnt = 0, len = categoryData.length, max = data.length;			cnt < max;			cnt++, len = categoryData.length			) {	if (data[cnt].category == category) { categoryData[len] = data[cnt]; }		}		return categoryData;	}//------------------------------------------------------------------------------------------------------//------------ランキングの処理---------------------------------------------------------------------	//ランク毎にデータを得る	this.getRankData = function(type) {		var rankData = new Array();		if (this.data[type] == undefined) { return false; }		for (			cnt = 0, len = rankData.length, max = this.data[type].length;			cnt < max;			cnt++, len = rankData.length			) { if (this.data[type][cnt].rank != undefined) { rankData[len] = this.data[type][cnt]; }		}		return rankData;	}	//データをhtmlに変換する	this.convertRankingListHtml = function (data) {		var chklink = data.link;		if (chklink == "") { printHtml = '<li>' + data.fullName + '</li>'; }		else {			if (chklink.substr(0, 4) != "http") { link = this.baseRoot + data.link; }			else { link = data.link; }			printHtml = '<li><a href="' + link + '" title="' + data.fullName + '">' + data.fullName + '</a></li>';		}		return printHtml;	}	//カテゴリーが指定されていない場合の処理-------------------------------------------------	this.getRankingListAll = function (type, num) {		var type = "ranking";		//ランキングに関するデータを得る		var rankingData = new Array();		rankingData	= this.getRankData(type);		//ランキングデータに格納されているカテゴリーの種類を取得		var categoryList = new Array();		category = rankingData[0].category;		categoryList[0] = category;		for (cnt = 0, categoryAllCnt = 1; cnt < rankingData.length; cnt++) {			if (category != rankingData[cnt].category) { 				category = rankingData[cnt].category;				categoryList[categoryAllCnt] = rankingData[cnt].category;				categoryAllCnt++; 			} 		}		//カテゴリーの種類毎にランキングリストを出力する		for (categoryCnt = 0; categoryCnt < categoryList.length; categoryCnt++) {			this.printRankingListHtml(categoryList[categoryCnt], 'all');		}		return true;	}	//-----------------------ランキングリストHtmlデータを得る-------------------------------	this.getRankingListHtml = function (category, printType) {		var type = "ranking";		//カテゴリーが指定されていない場合の処理		if (category == undefined) { this.getRankingListAll();	return false; }		//ランキングに関するデータを得る		var rankingData = new Array();		rankingData	= this.getRankData(type);		//ランキングデータから指示されたカテゴリー毎のデータを得る		var categoryData = new Array();		categoryData = this.getCategoryData(category, rankingData);		//カテゴリデータをソートした値を得る		var sortData = new Array();		sortData = this.sort('rank', categoryData);		//データファイルで指定した出力件数で出力		if (printType == 'all') { num = sortData.length; }		else { num = this.setRankingPrintNum['setRankingNum'][category]; }		if (num == undefined) { max = sortData.length; }		else if (num > sortData.length) { max = sortData.length; }		else { max = num; }			//指定回数処理を繰り返しランキングデータを得る		for (cnt = 0, htmlList = ""; cnt < max; cnt++) {			htmlList += this.convertRankingListHtml(sortData[cnt]);		}		return htmlList;	}	//------------------------------------------------------------------------------------------------------	//ランキングリストHtmlを出力する	this.printRankingListHtml = function (category, printType) {		if (category == undefined) { this.getRankingListAll();	return false; }		else {			document.write('<ul>');			document.write( this.getRankingListHtml(category, printType));			document.write('</ul>');		}		return true;	} //------------------------------------------------------------------------------------------------------	//--------------------------バナーの処理----------------------------------------------------------------	//バナーデータ毎にデータを得る	this.getBannerListData = function (size, type) {		if (size == undefined) { return false; }		if (this.data[type] == undefined) { return false; }		var bannerArr = new Array();		//データの数分処理を繰り返す		for (cnt = 0, len = bannerArr.length; cnt < this.data[type].length; cnt++) {			if (this.data[type][cnt].bannerList[size]) {				if (len == 0) { bannerArr[0] = this.data[type][cnt]; len++; }				else { len = bannerArr.length; bannerArr[len] = this.data[type][cnt]; }			}			}		return bannerArr;	}	//バナーデータをHtmlに変換する	this.convertBannerListHtml = function (link, alt, source) {		var chklink = link;		//リンクが相対パスで指定された場合		if (chklink.substr(0, 4) != "http") { link = this.baseRoot + link; }		else { link = link; }		printHtml = '<a href="' + link + '" alt="' + alt + '" title="' + alt + '"><img src="' + source + '" alt="' + alt + '"></a>';		return printHtml;	}	//------------バナーHtmlデータを得る-------------------------------------------------------------------	//指定されたバナーデータを得る	this.getBannerHtml = function (size, type) {		//sizeが指定されていない場合		if (size == undefined) { return false; }		//バナーに関するデータを得る		var bannerData = new Array();		bannerData = this.getBannerListData(size, type);		if (bannerData == false) { return false; }		//指示されたデータを得る		for (cnt = 0, data = ""; cnt < bannerData.length; cnt++) {			if (bannerData[cnt].bannerList[size]) { data = bannerData[cnt]; }		}		//バナーhtmlを得る		var source = this.itemDir + data.bannerList[size];		htmlList = this.convertBannerListHtml(data.link, data.fullName, source);		return htmlList;	}	//------------------バナーHtmlの出力-----------------------------------------------------------------------------------------------	this.printBannerHtml = function (size) {		var type = "banner";		//sizeが指定されていない場合		if (size == undefined) { return false; }		//固定バナー出力件数の取得		max = this.setStaticBannerPrintNum['setStaticBannerNum'][size];		if (max == undefined) { max = 0; }		for (cnt = 0, num = 0; cnt < max + 1; num++) {			//出力件数の指定がある場合			if (cnt != 0) { 				str = size + cnt;				if (this.getBannerHtml (str, type) != false) {					document.write(this.getBannerHtml (str, type));				} else { document.write(""); }				cnt = num + 1;			} else { cnt = num + 1; }			//出力件数の指定がない場合			if (max == 0) {				if (this.getBannerHtml (size, type) != false) {					document.write(this.getBannerHtml (size, type));				} else { document.write(""); }			}		}		return true;	}	//--------------------ランダムバナーHtmlデータを得る------------------------------------------------------	//ランダムにしたバナーデータを得る	this.getRandomBannerHtml = function (size, type) {		//サイズが指定されていない場合		if (size == undefined) { return false; }		//バナーに関するデータを得る		bannerData = this.getBannerListData(size, type);		//numの値を取得する		num = this.setRandomBannerPrintNum['setRandomBannerNum'][size];		//numの値をチェックする		if (num == undefined) { num = 1; }		else if (num > bannerData.length) { num = bannerData.length; }		//バナーデータをランダムにした値を得る		data = this.random(bannerData, num, size, type);		//numの値がランダムにしたデータ数より大きい場合		if (num > data.length) { num = data.length; }		//指示された回数のデータを得る		for (cnt = 0, htmlList = ""; cnt < num; cnt++) {			if (data[cnt] != undefined) {				//ランダムバナーデータを得る				source = this.itemDir + data[cnt].bannerList[size];				htmlList += 					this.convertBannerListHtml(data[cnt].link, data[cnt].fullName, source);			} 		}		return htmlList;	}		//--------------------ランダムバナーHtmlの出力------------------------------------------------------------	this.printRandomBannerHtml = function (size) {		var type = "banner";		//サイズが指定されていない場合		if (size == undefined) { return false; }			document.write(this.getRandomBannerHtml (size, type)); 		return true;	}//----------------------------------------------------------------------------------------------------------------------//-------------------------movieの処理--------------------------------------------------------------------------------	//ムービーデータ毎にデータを得る	this.getMovieListData = function(size, type) {		if (size == undefined) { return false; }		if (this.data[type] == undefined) { return false; }		var movieArr = new Array();		//データの数分処理を繰り返す		for (cnt = 0, len = movieArr.length; cnt < this.data[type].length; cnt++) {			if (this.data[type][cnt].movieList[size]) {				if (len == 0) { movieArr[0] = this.data[type][cnt]; len++; }				else { len = movieArr.length; movieArr[len] = this.data[type][cnt]; }				}		}		return movieArr;	}	//movieデータをHtmlに変換する	this.convertMovieListHtml = function (movieId, size, autoPlay, volume) {		htmlList = 	'<script type="text/javascript">var MAINVIDEO = ' + movieId + 																	' ; ShowMainVideo("' + size + '", ' + autoPlay + ', ' + volume + '); </script>';		return htmlList;	}	//--------------MovieHtmlデータを得る----------------------------------------------------------------------		//指定されたムービーデータをHtml出力	this.getMovieHtml = function (size, type, autoPlay, volume) {		//サイズが指定されていない場合		if (size == undefined) { return false; }		//autoPlayが指定されていない場合		if (autoPlay == undefined ) { autoPlay = true; }		//volumeが指定されていない場合		if (volume == undefined )  { volume = '050'; }		//ムービーに関するデータを得る		movieData = this.getMovieListData(size, "movie");		if (movieData == false) { return false; }		//指示されたデータを得る		for (cnt = 0, data = ""; cnt < movieData.length; cnt++) {			if (movieData[cnt].movieList[size]) { data = movieData[cnt]; }		}		//ムービーhtmlを得る		htmlList = 			this.convertMovieListHtml(data.movieList[size], size, autoPlay, volume);		return htmlList;	}	//----------------ムービーHtmlを出力する------------------------------------------------------------------	this.printMovieHtml = function (size, autoPlay, volume) {		var type = "movie";		//サイズが指定されていない場合		if (size == undefined) { return false; }		//autoPlayが指定されていない場合		if (autoPlay == undefined ) { autoPlay = true; }		//volumeが指定されていない場合		if (volume == undefined )  { volume = '050'; }		if (this.getMovieHtml(size, type, autoPlay, volume) != false) {			document.write(this.getMovieHtml(size, type, autoPlay, volume));		} else { document.write(""); }		return true;	}	//----------------ランダムムービーHtmlを得る---------------------------------------------------------------	//ランダムにしたムービーデータをHtml出力	this.getRandomMovieHtml = function (size, type, num, autoPlay, volume) {		//サイズが指定されていない場合		if (size == undefined) { return false; }		//autoPlayが指定されていない場合		if (autoPlay == undefined ) { autoPlay = true; }		//volumeが指定されていない場合		if (volume == undefined )  { volume = '050'; }		//ムービーに関するデータを得る		movieData = this.getMovieListData(size, type);		//numの値が指定されていない場合		if (num == undefined) { num = movieData.length; }		else if (num > movieData.length) { num = movieData.length; }		data = this.random(movieData, num, size, "movie");		//指示された回数データを取得する		for (cnt = 0, htmlList = ""; cnt < num; cnt++) {			//ムービーデータHtmlを得る			htmlList += 				this.convertMovieListHtml(data[cnt].movieList[size], size, autoPlay, volume);		}		return htmlList;	}	//----------------ランダムムービーHtmlを出力する-------------------------------------------------------------------	this.printRandomMovieHtml = function (size, num, autoPlay, volume) {		var type = "movie";		//サイズが指定されていない場合		if (size == undefined) { return false; }		//autoPlayが指定されていない場合		if (autoPlay == undefined ) { autoPlay = true; }		//volumeが指定されていない場合		if (volume == undefined )  { volume = '050'; }		if (this.getRandomMovieHtml(size, type, num, autoPlay, volume) != false) { 			document.write(this.getRandomMovieHtml(size, type, num, autoPlay, volume)); 		} else { document.write(""); }		return true;	}//-----------------------------------------------------------------------------------------------------------------	//----------------------「人気の〜」の処理-------------------------------------------------------------------	//Popularのタイトルを出力する	this.printPopularTitle = function (category) {		popularTitle = this.setPopularPrintTitle;		//タイトル名の出力		if (popularTitle['setPopularTitle'][category] == undefined) { document.write(""); }		else { document.write(popularTitle['setPopularTitle'][category]); }		return true;	}	//データからHtmlに変換する	this.convertPopularListHtml = function (data) {		var chklink = data.link;		//リンクが相対パスで指定された場合		if (chklink.substr(0, 4) != "http") { link = this.baseRoot + data.link; }		else { link = data.link; }		printHtml = '<li><a href="' + link + '">' + data.shortName + '</a></li>';		return printHtml;	}		//PopularのデータをHtmlに変換し、取得する	this.getPopularList = function (type, category) {		//typeがPopularのデータを取得		var data = this.data[type];		//カテゴリー毎のデータ取得		var dataList = this.getCategoryData (category, data);		//出力件数の設定		var max = dataList.length;		//出力件数分出力リストの取得		for (cnt = 0, htmlList = ""; cnt < max; cnt++) {			htmlList +=this.convertPopularListHtml(dataList[cnt]);		}		return htmlList;	}		//popularのHtmlListを出力する	this.printPopularList = function (category) {		var type = 'popular';		//Htmlに変換したListを取得する		var popularHtmlList = this.getPopularList (type, category);		document.write("<ul>");		document.write(popularHtmlList);		document.write("</ul>");		return true;	}//--------------------------------------------------------------------------------------------------}//画像レコードfunction imageChangeRecord (imageType, imageName, imageLink) {	this.imageType = imageType;		this.imageName = imageName;		this.imageLink = imageLink;}	function imageChangeFunc () {	this.data = new Array();	this.setPrintImageMode = new Array();	this.setLargeImgSize = new Array();	this.setBottonPosBr = new Array();	this.setImageMoveTimer = new Array();	this.settingFade = new Array();	this.num = 0;	this.autoMove = "";	this.bChangeFlg = true;	this.fadeOutFlg = true;		this.getChangeImage = function (imageType, imageName, imageLink) {		imageType = imageType['imageType'];		if (this.data[imageType] == undefined) {			this.data[imageType] = new Array();			this.data[imageType][0] = new imageChangeRecord (imageType['imageType'], imageName['imageName'], imageLink['imageLink']);		} else {			len = this.data[imageType].length;			this.data[imageType][len] = new imageChangeRecord (imageType['imageType'], imageName['imageName'], imageLink['imageLink']);		}		return true;	}		//表示モードとデフォルト画像の指定	this.getPrintImageMode = function(setImageMode) {		this.setPrintImageMode = setImageMode;		return true;	}		//fadeの設定	this.getSettingFade = function(settingFade) {		this.settingFade = settingFade;		return true;	}		//大画像のサイズ設定	this.getLargeImageSize = function (setLargeImgSize) {		this.setLargeImgSize = setLargeImgSize;		return true;	}		//改行位置設定	this.getBottonPositionBr = function (setBottonPosBr) {		this.setBottonPosBr = setBottonPosBr;		return true;	}		//画像動作の時間設定	this.getImageMoveTimer = function (setImageMoveTimer) {		this.setImageMoveTimer = setImageMoveTimer;		return true;	}		//透明度をリセットする	this.opaReset = function(elements) {		elements.style.filter = "alpha(opacity:100)";		elements.style.opacity = 100/100;		return true;	}		//画像を変更する	this.changeImage = function (num, className) {		//画像の設定		canvasElement = this.getElementsByClass(className);		largeSizeWidth = this.setLargeImgSize['setLargeImgSize']['width'];		largeSizeHeight = this.setLargeImgSize['setLargeImgSize']['height'];		largeImgLink =  this.data['largeImage'][num].imageLink;		largeImgName = this.setPrintImageMode['setImageMode']['largeImageAltName'];		canvasElement.innerHTML ='<img src="' + largeImgLink + '" alt="' + largeImgName +'" title="' + largeImgName +'" width="' + largeSizeWidth +'" height="' + largeSizeHeight +'" name="JsArea">';		this.opaReset(canvasElement);		return true;	}	//ボタンを変更する	this.changeBotton = function (num) {		//ボタンの設定		var elements = this.getElementsByClass(this.data['bottonOff'][this.num].imageLink);		elements.src = this.data['bottonOn'][this.num].imageLink;		//クリックされたボタン以外はoff画像にする		for (cnt = 0; cnt < this.data['bottonOff'].length; cnt++) {			if (cnt != this.num ) { 				elements = this.getElementsByClass(this.data['bottonOff'][cnt].imageLink);				elements.src = this.data['bottonOff'][cnt].imageLink;			}		}		return true;	}	//透明度を設定する	this.fade = function (className, opa) {		this.getElementsByClass(className).style.filter = "alpha(opacity:"+ opa+")";  // IE のソース		this.getElementsByClass(className).style.opacity = opa/100;   //Mozilla		return true;	}		//クラス名取得	this.getElementsByClass = function(searchClass) {		if (document.all) {			var classElements = "";			var allElements = document.all;			for (i = 0; i < allElements.length; i++) {				if (allElements[i].className == searchClass) { classElements = allElements[i]; }			}		} else if (document.getElementsByTagName) {			var classElements = "";			var allElements = document.getElementsByTagName("*");			for (i = 0; i < allElements.length; i++) {				if (allElements[i].className == searchClass) { classElements = allElements[i]; }			}        		} else { return; }		return classElements;	}		//ブラウザ毎のフェードインの動作(未使用)	this.settingFadeInBrowser = function(className, opa, opaCnt, timer) {		if(navigator.userAgent.indexOf("Opera") != -1){ this.fadeIn(className, opa, opaCnt, timer * 2); }// opera		else if(navigator.userAgent.indexOf("MSIE") != -1) { 			if (navigator.userAgent.indexOf("6.0") != -1) { this.fadeIn(className, opa, opaCnt, timer * 2); }// IE6			if (navigator.userAgent.indexOf("7.0") != -1) { this.fadeIn(className, opa, opaCnt, timer * 2); }// IE7			if (navigator.userAgent.indexOf("8.0") != -1) { this.fadeIn(className, opa, opaCnt, timer); }// IE8		}		else if (navigator.userAgent.indexOf("Firefox") != -1){ this.fadeIn(className, opa, opaCnt, timer * 2); } // firefox		else if (navigator.userAgent.indexOf("Safari") != -1){ this.fadeIn(className, opa, opaCnt, timer * 2); }	// safari		else if (navigator.userAgent.indexOf("Chrome") != -1){ this.fadeIn(className, opa, opaCnt, timer); } //chrome	}		//ブラウザ毎のフェードアウトの動作	this.settingFadeOutBrowser = function(className, opa, opaCnt, timer) {		if(navigator.userAgent.indexOf("Opera") != -1){ this.fadeOut(className, opa, opaCnt, timer * 2); }// opera		else if(navigator.userAgent.indexOf("MSIE") != -1) { 			if (navigator.userAgent.indexOf("6.0") != -1) { this.fadeOut(className, opa, opaCnt, timer); }// IE6			if (navigator.userAgent.indexOf("7.0") != -1) { this.fadeOut(className, opa, opaCnt, timer); }// IE7			if (navigator.userAgent.indexOf("8.0") != -1) { this.fadeOut(className, opa, opaCnt, timer); }// IE8		}		else if (navigator.userAgent.indexOf("Firefox") != -1){ this.fadeOut(className, opa, opaCnt, timer * 2); } // firefox		else if (navigator.userAgent.indexOf("Safari") != -1){ this.fadeOut(className, opa, opaCnt, timer  ); }	// safari		else if (navigator.userAgent.indexOf("Chrome") != -1){ this.fadeOut(className, opa, opaCnt, timer); } //chrome	}	//フェードインの動作(現在未使用)	this.fadeIn = function (className, opa, opaCnt, timer) {		if (opa <= 100) {			this.fade(className, opa);			bottonOpa = opa;			bottonOpa += opaCnt;			if (this.settingFade['settingFade']['bFadeFlag'] == "true") {				this.fade(this.data['bottonOff'][this.num].imageLink, opa);			}			opa += opaCnt;			var me = this;			if (opa > this.settingFade['settingFade']['imageAndBotton']  && this.bChangeFlg == true) {				this.changeBotton(this.num);				this.bChangeFlg = false;			}			this.fadeInTime = setTimeout( function() { me.fadeIn(className, opa, opaCnt, timer); }, timer);		} 		if (opa > 100) {			clearTimeout(this.fadeInTime);			this.bChangeFlg = true;		}		return true;	}				//フェードアウトの動作	this.fadeOut = function (autoMoveType, className, opa, opaCnt, timer) {		this.getElementsByClass("canvas1").style.visibility = "visible";		if (opa > 0) {			//画像のフェード処理			this.fade(className, opa);			//ボタンのフェード処理			bottonOpa = opa;			bottonOpa -= opaCnt;			if (this.settingFade['settingFade']['bFadeOutFlag'] == "true") {				this.fade(this.data['bottonOff'][this.num].imageLink, opa);			}			//透明度の増減			opa -= opaCnt;			var me = this;			//ボタンをフェードする場合の処理			if (opa < this.settingFade['settingFade']['imageAndBotton']  && this.bChangeFlg == true) {				this.changeBotton(this.num);				this.bChangeFlg = false;			}			this.fadeOutTime = setTimeout( function() { me.fadeOut(autoMoveType, className, opa, opaCnt, timer); }, timer);		} 		if (opa < 80) {			visibleClassName = (className == "canvas1") ? "canvas0" : "canvas1";			this.getElementsByClass(visibleClassName).style.visibility = "visible";			this.getElementsByClass(this.data['bottonOff'][this.num].imageLink).style.visibility = "visible";					} 		if (opa < 0) {			clearTimeout(this.fadeOutTime);			this.fade(className, opa);			var me = this;			this.bChangeFlg = true;			if (this.data['bottonOff'].length - 1 != this.num) { this.num++; }			else { this.num = 0; }			this.autoMove = setInterval(function() { me.autoSlideShowImg(autoMoveType); }, this.autoMoveStep);		}		return true;	}		//クロスフェード用関数	this.crossFade = function (autoMoveType, className, className1, opa, opaCnt, timer) {		this.fadeOutTime = setTimeout( function() { me.settingFadeOutBrowser(autoMoveType, className1, 100, opaCnt, timer); }, timer);		clearInterval(this.autoMove);		return true;	}		//ボタンをクリックした際の動作	this.clickingShowImg = function (num) {		clearTimeout(this.fadeInTime);		clearTimeout(this.fadeOutTime);		clearInterval(this.autoMove);		this.autoMoveStop = this.setImageMoveTimer['setImageMoveTimer']['imageStop'];		if (num == this.data['bottonOff'].length) { this.num = 0; } 		else { this.num = num; }		//画像とボタンを変更する		this.changeImage(num, "canvas0");		this.changeImage(num, "canvas1");		this.getElementsByClass("canvas0").style.visibility = "visible";		this.changeBotton(num);		for (cnt = 0; cnt < this.data['bottonOff'].length; cnt++) { this.opaReset(this.getElementsByClass(this.data['bottonOff'][cnt].imageLink)); }		//autoMoveType がautoの場合		if (this.autoMoveType == "auto") {			var	me = this;			this.autoMove = setInterval(function() { me.autoSlideShowImg("click"); }, me.autoMoveStop);		}		return true;	}	//オートで画像遷移時の処理	this.autoSlideShowImg = function (autoMoveType) {		clearTimeout(this.fadeOutTime);		var me = this;		this.autoMoveStep = this.setImageMoveTimer['setImageMoveTimer']['imageInterval'];		fadeInCanvas = this.num;		fadeOutCanvas = (this.num == 0) ? this.data['bottonOff'].length - 1 : this.num - 1;		this.changeImage(fadeOutCanvas, "canvas1");		this.getElementsByClass("canvas1").innerHTML = this.getElementsByClass("canvas0").innerHTML;		this.changeImage(fadeInCanvas, "canvas0");		opa = this.settingFade['settingFade']['fadeOutOpa'] * 1;		opaStep = this.settingFade['settingFade']['opaStep'] * 1;		fadeTimer = this.settingFade['settingFade']['fadeTimer'] * 1;		this.crossFade(autoMoveType, "canvas0", "canvas1", opa, opaStep, fadeTimer);		return true;	}		//ボタンを表示する	this.bottonImage = function () {		bottonPosBrOneRow = this.setBottonPosBr['setBottonPosBr']['oneRow'];		printBottonhtml = "";		printBottonhtml += '<ul>';		for (cnt =0, rowCnt = 0, liClass = "bt_def", liClassBr = "bt_oth"; cnt < this.data['bottonOff'].length; cnt++) {			imageLink = this.data['bottonOff'][cnt].imageLink;			imageName = this.data['bottonOff'][cnt].imageName;			if ((cnt + 1) %  bottonPosBrOneRow == 0) {				printBottonhtml += '<li class="' + liClassBr + '"><input type="image" src="' + imageLink + '" onclick="imgChangeDb.clickingShowImg('  + cnt + ')" alt="' + imageName +'" title="' + imageName +'" class="' + imageLink + '" ></li>';			} else {				printBottonhtml += '<li class="' + liClass + '"><input type="image" src="' + imageLink + '" onclick="imgChangeDb.clickingShowImg('  + cnt + ')" alt="' + imageName +'" title="' + imageName +'" class="' + imageLink + '" ></li>';			}		}		printBottonhtml += '</ul>';		printBottonhtml += '</div>';		return printBottonhtml;	}		//画像を出力する	this.printImageChangeHtml = function () {		changeType = this.setPrintImageMode['setImageMode']['mode'];		num =  this.setPrintImageMode['setImageMode']['defaultImage'];		num = num * 1;		this.autoMoveStep = this.setImageMoveTimer['setImageMoveTimer']['imageInterval'];		document.write('<div class="projector"><div class="canvas0"  style="position:absolute;"></div><div class="canvas1"  style="position:absolute;"></div></div><div class="select_btn clearfix">');		divElement = this.getElementsByClass("projector");		divElement.style.textAlign = 'left';	//projectorクラスで設定したテキスト中央配置を左配置に変更		document.write(this.bottonImage());		if (changeType == "auto") {			me = this;			if (num == undefined || num < 1) { num = 0; } 			else { num = num -1; }			this.num = num;			this.changeImage(num , "canvas0");			this.changeBotton(num, "canvas0");			this.getElementsByClass("canvas0").style.visibility = "visible";			this.autoMoveType = "auto";			this.autoSlideShowImg(changeType);		}  else if (changeType == "static") {			if (num == undefined || num < 1) { num = 0; } 			else { num = num -1; }			this.clickingShowImg(num);		}		return true;	}		//画像を先読みの処理	this.printInitialLoadImage = function () {		new Image().src = this.data['load'][0].imageLink;		for (largeCnt = 0; largeCnt < this.data['largeImage'].length; largeCnt++) {			new Image().src = this.data['largeImage'][largeCnt].imageLink; 		}		for (bOffCnt = 0; bOffCnt < this.data['bottonOff'].length; bOffCnt++) {			new Image().src = this.data['bottonOff'][bOffCnt].imageLink; 		}		for (bOnCnt = 0; bOnCnt < this.data['bottonOn'].length; bOnCnt++) {			new Image().src = this.data['bottonOn'][bOnCnt].imageLink; 		}		return true;	}}