﻿jQuery.noConflict();

/* ==================================================

 * 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: 'http://www.pref.ishikawa.lg.jp/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_body').hasClass('format_top')) ? '_top': '';
		$('#tmp_body').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;		

			if(width != 0){
				self.attr({
					src: changeSrc,
					width: width,
					height: height
				});

				//ロールオーバー
				(function($){
					$.gd.rollover({
						area: '#tmp_gnavi'
					});
				})(jQuery);
			}

			self.attr({
				src: changeSrc,
				width: width,
				height: height
			});

		};		
	},
	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);


/* init */
(function($){

	$(function(){
		
		//アクティブリンク
		$.gd.activeLink({
			area: '#tmp_gnavi',
			level: 1
		});

		$.gd.activeLink({
			area: '#tmp_lnavi',
			level: 2
		});

		$.gd.googleSearchImage({
			area: '#tmp_query, #tmp_query2',
			backgroundProperty: '#FFFFFF url(/shared/images/gsearch/google_custom_search_watermark.gif) no-repeat left center'		   
		});

		//googleカスタムサーチ切り替え
		$.gd.googleSearchSetUp({
			resultHtmlPath: 'http://www.pref.ishikawa.lg.jp/search/result.html'
		});

		$.gd.googleSearchSetUp({
			formId: '#tmp_gsearch2',
			resultHtmlPath: 'http://www.pref.ishikawa.lg.jp/search/result.html',
			hiddenBoxId: '#tmp_search_hidden2'
		});
		
		//スタイルシート切り替え
		$.gd.changeStyle();
		
		//labelの中のimgをクリックした場合でも、任意のinputタグにfocusをあてる
		$.gd.labelClickable();
		
		//ロールオーバー
		$.gd.rollover({
			area: '#tmp_gnavi'
		});
		
		if(!$('#tmp_body').hasClass('format_top')){
		//max-width指定IE6.0用
			$.gd.wrapperWidth({
				maxWidth: 1280,
				minWidth: 980					  
			});
		}
		
		//開閉式メニュー
	  	$.gd.switchMenu({
			area: '#tmp_lnavi_cnt'
		});

		//翻訳時画像切り替え
		//google翻訳画像変換
		$('img,input').gTranslate();

	});

})(jQuery);

