(function($) {

	//=====================================Main Routine
	$(function() {
		setRollovers();
		switchImgTopLogo();
		initScrollLnkPgtop();
		initScrollLnkInternal();
		initTooltip();
		initSwfClock();
		initSearchExample();
		initToggleFollowList();
		initCellRollover();
		initLightboxPopup();
		applyIconExternal();
		replaceViSwf();
		replaceSwfHomeIndexCollabo();
		bindRecommendCount();
	});

	//====================================Functions for Calling Plugins

	var initScrollLnkPgtop = function() {
		$("div.section_lnk_pgtop").localScroll({speed: 900, easing: "easeOutExpo"});
	};

	var initScrollLnkInternal = function() {
		$("div.box_lnk_internal").localScroll({speed: 900, easing: "easeOutExpo"});
	};

	var initTooltip = function() {
		// tools.toolitp()
		$("span.js_mk_st_ev").tooltip({
			//Note: Effect 'fade' does not work correctly on IE7
			 effect: 'slide'
			,slideOffset: 10
			,slideInSpeed: 200
			,slideOutSpeed: 200
			,position: ['top', 'center']
			,offset: [10, 0]
		});
	};


	//Flash Object - swfObject - Clock Gadget
	var initSwfClock = function() {

		var flashvars={
		};

		var params={
			loop:"false",
			menu:"false",
			quality:"high",
			wmode:"transparent",
			bgcolor:"#ffffff",
			allowscriptaccess:"always"
		};

		var attributes={
			id:"gedget",
			name:"gadget"
		};

		swfobject.embedSWF(
			"/common/swf/clock_idt/clock.swf",
			"gadget",
			"650",
			"50",
			"9.0.0",
			"",
			flashvars,
			params,
			attributes
		);

	};

	//Flash Object - swfObject - MAIN VI
	var replaceViSwf = function() {
		if(!$('div#main_vi').size()) { return false; }

		// Parameter Default
		var swfDisplayParam = {
			 fnSwfObj: "/flash/main_vi.swf"
			,fnSwfParam: "/flash/xml/home.xml"
			,categoryColor: "home"
			,pageBgColor: "#d8d1c6"
			,swfWidth: "710"
			,swfHeight: "340"
		};

		// Category Individual
		if($('body.art').size()) {
			swfDisplayParam.categoryColor = 'art';
			swfDisplayParam.fnSwfParam = '/flash/xml/art.xml'
		}
		else if($('body.shops_restaurants').size()) {
			swfDisplayParam.categoryColor = 's_r';
			swfDisplayParam.fnSwfParam = '/shops_restaurants/flash/xml/s_r.xml'
		}
		else if($('body.home').size()) {
			var lang = '';
			if($('body.en').size()){
				lang = 'en';
			}
			else if ($('body.cn').size()) {
				lang = 'cn';
			}
			else if ($('body.kr').size()) {
				lang = 'kr';
			}
			else if ($('body.tc').size()) {
				lang = 'cn';
			}
			if(lang != ''){
				swfDisplayParam.categoryColor = '';
				swfDisplayParam.fnSwfObj = '/flash/main_vi_foreignlang.swf';
				swfDisplayParam.fnSwfParam = '/flash/xml/home_' + lang + '.xml';
			}
			else{
				swfDisplayParam.fnSwfObj="/flash/index_vi.swf";
				swfDisplayParam.categoryColor = 'home';
				swfDisplayParam.fnSwfParam = '/flash/xml/home.xml';
				swfDisplayParam.swfHeight="280";
			}
		}
		else if($('body.guide').size()) {
			swfDisplayParam.categoryColor = '';
			swfDisplayParam.fnSwfObj = '/common/swf/guide/guide.swf';
			swfDisplayParam.swfWidth = '707';
			swfDisplayParam.swfHeight = '310';

			//override value of fnSwfObj
			var lang='';
			if($('body.en').size()){
				lang = 'en';
			}
			else if ($('body.cn').size()) {
				lang = 'cn';
			}
			else if ($('body.kr').size()) {
				lang = 'kr';
			}
			else if ($('body.tc').size()) {
				lang = 'tc';
			}

			var indctLang='';
			if (lang != '') { var indctLang = '_' + lang; }
			swfDisplayParam.fnSwfObj = '/common/swf/guide/guide' + indctLang + '.swf';
		}

		// Replace Main
		initViSwf(swfDisplayParam);

	};

	var initViSwf = function(swfDisplayParam) {

		var flashvars = {
			type: swfDisplayParam.categoryColor,
			xml: swfDisplayParam.fnSwfParam
		}

		var params={
			loop:"false",
			menu:"false",
			quality:"high",
			wmode:"transparent",
			bgcolor:swfDisplayParam.pageBgColor,
			allowscriptaccess:"always"
		};

		var attributes={
			id:"main_vi",
			name:"main_vi"
		};

		swfobject.embedSWF(
			swfDisplayParam.fnSwfObj,
			"main_vi",
			swfDisplayParam.swfWidth,
			swfDisplayParam.swfHeight,
			"9.0.0",
			"",
			flashvars,
			params,
			attributes
		);

		//no flash, but ajax (for home, shops and restaurants, art)
		if(flashvars.type == "home" || flashvars.type == "s_r" || flashvars.type == "art"){
			//shops and restaurants, art
			setTimeout(function(){
				//if flash then return
				if($("object#main_vi").size()){
					return;
				}
				var success;
				if(flashvars.type == "home"){
					//home
					success = ajaxHomeVi;
				}else if (flashvars.type == "s_r" || flashvars.type == "art"){
					//shops and restaurants, art
					success = ajaxOldVi;
				}
				//load xml
				$.ajax({
					url: flashvars.xml,
					success: function(data, dataType, flashvars){
						success(data, dataType, flashvars);
					},
					//show contents final
					complete: function(XMLHttpRequest, textStatus){
						$("#main_vi .cont_subst").show();
					}
				});
			}, 1000);
		}else{
			$("#main_vi .cont_subst").show();
		}

	};

	var ajaxHomeVi = function(data, dataType, flashvars){
		//first item
		var $item = $(data).find("item").eq(0);
		var title = $item.find("title").text();
		var imgMain = $item.find("imgMain").text();
		var imgTxt = $item.find("imgTxt").text();
		var url = $item.find("url").text();
		var target = $item.find("url").attr("target");

		var ancAttr = {
			href: url,
			target: (target)? target: "_self",
			title: title
		};
		//build html
		var marginTop = $("#main_vi").css("margin-top");
		var $newDiv = $("<div>")
				.append(
					$("<img>").attr("src", imgMain)
				)
				.append(
					$("<img>").attr("src", imgTxt)
				)
				.css("margin-top", marginTop);
		if(url){
			$newDiv.wrapInner($("<a>").attr(ancAttr))
		}
		$("#main_vi").replaceWith($newDiv);
	}

	var ajaxOldVi = function(data, dataType, flashvars){
		//image height
		var imgHeight = 255;
		//first item
		var $item = $(data).find("item").eq(0);
		var lead = $item.find("lead").text();
		var title = $item.find("title").text();
		var sub_title = $item.find("sub_title").text();
		var body = $item.find("body").text();
		var img = $item.find("img").text();
		var url = $item.find("url").text();
		var target = $item.find("url").attr("target");

		var ancAttr = {
			href: url,
			target: (target)? target: "_self",
			title: title
		};
		//build html
		var $vi = $("#main_vi");
		var $img = $vi.find(".vi_lc img").attr("src", img).height(imgHeight);
		var $rc = $vi.find(".vi_rc");
		var $title = $rc.find(".vi_title").text(title);
		var $lead = $rc.find(".vi_supplement").text(lead);
		var $body = $rc.find(".lead").text(body);
		if(sub_title){
			$body.before($("<p>").addClass("lead").text(sub_title));
		}
		if(url){
			$img.wrap($("<a>").attr(ancAttr));
			$title.wrap($("<a>").attr(ancAttr));
		}
		$vi.find("div.vi_inner").css("min-height", imgHeight);
	};
	
	var replaceSwfHomeIndexCollabo = function() {

		if(!$('#hm_index').size()) { return false; }
		if(!$('#collabo').size()) { return false; }

		var swfDisplayParam = {
			targElemSelector: 'collabo',
			fnSwfObj: '/common/swf/home/partner_banner.swf',
			swfWidth: '158',
			swfHeight: '80',
			bgcolor: "FFFFFF"
		};

		var flashvars = {
			interval: 5000,
			url: '/partner/index.html',
			target: '_self',
			xml: '/common/swf/home/partner_img.xml'
		};

		swfDisplayParam.srcFlasvars = flashvars;

		// Replace Main
		initIndividualSwf(swfDisplayParam);

		//not flash, but ajax
		setTimeout(function(){
			//if flash then return
			if($("object#collabo").size()){
				return;
			}
			//load xml
			$.ajax({
				url: flashvars.xml,
				success: function(data, dataType){
					ajaxHomeIndexCollaboSuccess(data, dataType, flashvars);
				}
			});
		}, 1000);
	};

	var ajaxHomeIndexCollaboSuccess = function(data, dataType, flashvars){
		//img srcs shuffle
		var srcs = [];
		$(data).find("img").each(function(i){
			srcs.push($(this).text());
		});
		var src_length = srcs.length;
		var i = src_length;
		while(i) {
			var j = Math.floor(Math.random() * i) ;
			var t = srcs[--i] ;
			srcs[i] = srcs[j] ;
			srcs[j] = t ;
		}
		//build html
		var src_cnt = 0;
		var $img = $("<img>").attr("src", srcs[src_cnt]);
		$("#collabo").parent().empty().append(
			$("<a>").attr({
				"href": flashvars.url,
				"target": flashvars.targert
			}).append($img)
		);

		//swap img srcs
		setInterval(function(){
			if(src_length -1 < src_cnt){
				src_cnt = 0;
			}
			$img.attr("src", srcs[src_cnt++]);
		}, flashvars.interval);
	};

	var initIndividualSwf = function(swfDisplayParam) {
		var flashvars = swfDisplayParam.srcFlasvars;

		var params={
			loop:"false",
			menu:"false",
			quality:"high",
			wmode:"transparent",
			bgcolor:swfDisplayParam.bgcolor,
			allowscriptaccess:"always"
		};

		var attributes={
			id: swfDisplayParam.targElemSelector,
			name: swfDisplayParam.targElemSelector
		};

		swfobject.embedSWF(
			swfDisplayParam.fnSwfObj,
			swfDisplayParam.targElemSelector,
			swfDisplayParam.swfWidth,
			swfDisplayParam.swfHeight,
			"9.0.0",
			"",
			flashvars,
			params,
			attributes
		);
	};

	// Lightbox - nyroModal
	var initLightboxPopup = function() {
		$.nyroModalSettings({
			 minWidth: 506
			,minHeight: 200
			,bgColor: '#362b1f'
			,css: {
				loading:{border:'none'}
			} 
		});
	};


    // Text in Search Form 
	var initSearchExample = function() {
		$('#site_search_keyword').example(function() {
			return $(this).attr('title');
		});
	};

	// Toggle 'See More' List
	var initToggleFollowList = function() {

		// Specify Areas to be Scanned
		var $trigger_container=$("div.box_bt_ac")
		var $trigger = $trigger_container.children("a"); //ボタン部分

		var $ac_body = $trigger.closest("div.box_prm_1_3_inner, div.box_sec_1_4_inner").children("div.section_table_follow");
		$ac_body.hide(); //伸びる部分（最初にたたむ）
		$trigger
			.removeClass() //クラスをクリア
			.addClass("open") //最初はopen
			.click(function(evnt){
				var $trigger = $(this)
				var $target = $trigger.closest("div.box_prm_1_3_inner, div.box_sec_1_4_inner").children("div.section_table_follow");; //伸びる部分

				if($trigger.hasClass("open")){ //openなら
					$target.slideDown(250,function(){ //開く
						$trigger.removeClass("open"); //クラス入れ替え
						$trigger.addClass("close"); //クラス入れ替え
					});
				}
				else{
					$target.slideUp(250,function(){ //閉じる
						$trigger.removeClass("close"); //クラス入れ替え
						$trigger.addClass("open"); //クラス入れ替え
					});
				}
				return false;
		});
	};

	// To Apply ':hover' for Blocks and Cells including Links
	var initCellRollover = function() {
		// Table-Cell and Blocks Rollover(Genaral)
		var $target_container=$("div.ln_sn, div.ln_rel, div.box_lnk_subcat_inner");
		var $target=$target_container.find("li, h2, td");
		$target.each(
			function() {
				if($(this).find('a').text()) {
					$(this).addClass('has_link');
				}
			}
		);
		$("li.has_link, h2.has_link, td.has_link").hover(
			function() { $(this).addClass('hov_hilight'); },
			function() { $(this).removeClass('hov_hilight'); }
		);

		// H3 Rollover
		$("#prm_main").find("td").each(
			function() {
				if($(this).find('h3 a').size()) {
					$(this).addClass('has_linked_heading');
				}
			}
		);
		$(".has_linked_heading").hover(
			function() { $(this).children('h3').addClass('hov_hilight'); },
			function() { $(this).children('h3').removeClass('hov_hilight'); }
		);
	};

	var applyIconExternal = function(){
		$("td a, #prm li a, #sec li a").not(".twtr-widget a").linkExternal({
			manipulation: '<img src="/common/img/ic_gu_inline_new.gif" width="10" height="10" class="ic_inline" />',
			manipulationFilter: ":not(:has(img))"
		});
	};


	var switchImgTopLogo = function() {
		var generateNum = function() {
			return(("000" + Math.ceil(Math.random() * 6)).slice(-3));
		};

		$("#img_logo a img").hide();

		var classNameTopLogoLink = 'logo_' + generateNum();
		$("p#img_logo a").addClass(classNameTopLogoLink);
	};

	var bindRecommendCount = function() {
		var $recCon = $("div.container_recomnd");
		if($recCon.size()){
			$recCon.find("a.recommend_count[rel]").click(function(e){
				$.get('/shops_restaurants/recommend/count.php?' + $(this).attr("rel"));
			});
		}
	};

})(jQuery)

