﻿//CMS-8341用JS

/* ==================================================

 * jQuery.gtranslate.js
 *
 * Copyright (c) Global design, Inc. All rights reserved.
 * http://www.glode.co.jp/ 
 * Version: 1.0.0
 * Last Modified: 2009/6/16
 * Library&Plugin: jQuery 1.3.2
 *
 * Dual licensed under the MIT and GPL licenses.
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 
================================================== */
;(function($){

//jQueryの名前空間の定義
var ns = NameSpace = 'gTranslate';

//makeClass
function makeClass(){
	return function(args){
		if(this instanceof arguments.callee){
		if(typeof this.init == 'function')
			this.init.apply(this,args.callee ? args : arguments);
		}else
			return new arguments.callee(arguments);
	};
}

//コンストラクタ
$[ns] = makeClass();

//メソッド
$[ns].prototype = {
	
	init: function(){
		
		//デフォルト値の設定
		this.defaults = {
			foreignid: '#tmp_foreign',
			foreignUrl: '/foreign/index.html'
		};
		
	},
	getLang: function(lang,suf){
		return '_' + lang + suf + '.';
	},
	getDefaultLang: function(){
		var defaultLang = 'ja';
		return defaultLang;
	},
	getThisLang: function(thisPath){
		var thisLang = thisPath.replace(/^.*&tl=([^&]*)&.*$/,'$1');
		thisLang = (thisLang == 'zh-CN')? 'zh-cn' : thisLang;
		return thisLang;
	},
	changeImg: function(changeSrc,self,thisLang){
		
		var classPrefix = 'lang_';
		var bodyTopClass = ($('#tmp_wrapper').hasClass('format_top')) ? '_top': '';
		$('#tmp_wrapper').addClass(classPrefix + thisLang + bodyTopClass);
		
		
		//プリロード
		var newImg = new Image();
		newImg.src = changeSrc;

		var width = newImg.width;
		var height = newImg.height;	

		if(width != 0){
			self.attr({
				src: changeSrc,
				width: width,
				height: height
			});

			//ロールオーバー
			(function($){
				$.gd.rollover({
					area: '#tmp_gnavi'
				});
			})(jQuery);
		}

		newImg.onload = function(){
			
			var width = newImg.width;
			var height = newImg.height;		

			self.attr({
				src: changeSrc,
				width: width,
				height: height
			});

			//ロールオーバー
			(function($){
				$.gd.rollover({
					area: '#tmp_gnavi'
				});
			})(jQuery);

		};

	},
	setUp: function(jObj,suffix,thisSuffix,thisLang){
		
		var fn = this;
		
		jObj
		.filter('[src$="' + suffix + 'jpg' +'"],[src$="' + suffix + 'gif' +'"],[src$="' + suffix + 'png')
		.each(function(i,obj){
			
			//自身をselfに格納
			var self = $(this);
			var src = self.attr('src');
			
			var changeSrc = src.replace(suffix,thisSuffix);
			
			fn.changeImg(changeSrc,self,thisLang);
			
		});
	},
	changeUrl: function(c,url){
		
		$(c.foreignid).attr({
			href: url,
			target: '_top'
		})
		
	}
	
}
//インスタンス化
var fn = $[ns]();

//初期化および実行
$.fn[ns] = function(options){
	
	//カスタムパラメータを上書き
	var c = $.extend(fn.defaults,options);
	
	//自身をtargetsに格納
	var targets = this;
	
	var thisPath = window.location.href;
	
	var googleTranslatePath = 'translate.google.co.jp';
	
	if(thisPath.indexOf(googleTranslatePath) == -1) return this;
	
	var defaultLang = fn.getDefaultLang();
	var thisLang = fn.getThisLang(thisPath);
	
	var suffix = fn.getLang(defaultLang,'');
	var thisSuffix = fn.getLang(thisLang,'');
	var onSuffix = fn.getLang(defaultLang,'_on');
	var onThisSuffix = fn.getLang(thisLang,'_on');
	var offSuffix = fn.getLang(defaultLang,'_off');
	var offThisSuffix = fn.getLang(thisLang,'_off');
	
	
	fn.setUp(targets,suffix,thisSuffix,thisLang);
	fn.setUp(targets,onSuffix,onThisSuffix,thisLang);
	fn.setUp(targets,offSuffix,offThisSuffix,thisLang);
	
	fn.changeUrl(c,c.foreignUrl);
	
	//jQueryオブジェクトを返す
	return this;
	
};

})(jQuery);

