/*
(c) 2011 Naphthalene Co.,Ltd.
tvdog
http://naph.jp
*/

thai.tagbanner = function() {
	return {
		tags : [],
		init : function() {
			var key = $("meta[name='keywords']").attr('content');
			
			if (typeof key != "string") return;
			if (key.length == 0) return;
			thai.tagbanner.tags = key.split(',');
			
			task = [];
			taskID = 0;
			
			task.push(function(){thai.tagbanner.banner.init();});
			task.push(function(){thai.tagbanner.tour.init();});
			task.push(function(){thai.tagbanner.hotel.init();});
			taskDoing();
		}
	};
	
	//遅延処理(仮)
	var task, taskID;
	function taskDoing() {
		var func = task[taskID];
		func();
		if (task.length > taskID + 1) {
			++taskID;
			setTimeout(taskDoing,1);
		}
	}
}();

/*-------------------------------------------------------------------------------*/
//タグバナー
thai.addBlocks += 1;
thai.tagbanner.banner = function() {
	
	var banner = [
		{
			title:"Diving in Thailand　～タイを潜ろう！",
			img:"/common/banner/inner/00009.jpg",
			url:"/diving/",
			tag:["ダイビング","ダイブショップ","ダイブサイト"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/tag/tektek_ct.jpg",
			url:"/tektek/archives/20091106/",
			tag:["バンコク","バンコク 王宮周辺","バンコク チャイナタウン"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/tag/tektek_silom.jpg",
			url:"/tektek/archives/20090314/",
			tag:["バンコク","バンコク シーロム通り周辺","バンコク スクンビット周辺"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/tag/tektek_sukhothai.jpg",
			url:"/tektek/archives/20091031/",
			tag:["スコータイ"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/tag/tektek_phang-nga.jpg",
			url:"/tektek/archives/20090302/",
			tag:["パンガー"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/tag/tektek_phuket.jpg",
			url:"/tektek/archives/20090613/",
			tag:["プーケット"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/tag/tektek_ayutthaya.jpg",
			url:"/tektek/archives/20090318/",
			tag:["アユタヤ"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/inner/00012.jpg",
			url:"/tektek/archives/20100527/",
			tag:["トラン"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/tag/tektek_samutsongkhram.jpg",
			url:"/tektek/archives/20090315/",
			tag:["サムットソンクラーム"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/tag/tektek_chiangrai.jpg",
			url:"/tektek/archives/20090325/",
			tag:["チェンライ"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/tag/tektek_maehongson.jpg",
			url:"/tektek/archives/20090321/",
			tag:["メーホンソーン"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/tag/tektek_cuisine.jpg",
			url:"/tektek/archives/20090808/",
			tag:["タイ料理"]
		},{
			title:"タイ国政府観光庁テクテクタイランド",
			img:"/common/banner/tag/tektek_diving.jpg",
			url:"/tektek/archives/20090225/",
			tag:["ダイビング"]
		}
	];
	
	var ME = {
		
		init : function() {
			
			if (thai.top) {
				thai.masonry();
				return;
			}
			
			var li = '';
			$(banner).each(function(){
				var ar = this.tag;
				var tags = thai.tagbanner.tags;
				for (var i in ar) {
					for (var t in tags) {
						if (ar[i] == tags[t]) {
							li += '<li><a href="' + this.url +
								'" title="' + this.title + '" target="_blank">'+
								'<img src="' + this.img + '" width="300" height="150">'+
								'</a></li>';
							break;
						}
					}
				}
			});
			
			if (li != '') {
				setBannerSection();
				$("section#bl_inner ul").append(li);
				thai.inner.init();
			}
			
			thai.masonry();
		}
	};
	
	function setBannerSection() {
		var block = $("<section>",{id:'bl_inner', className:'block'})
		.append(
			$("<img>",{
				src:'/common/img/icon_special.png',
				className:'icon',
				width:'45',
				height:'24'
			})
		)
		.append(
			$("<div>",{id:'bl_inner_wp'})
			.append($("<ul>"))
		);
		
		$('article').append(block);
	}
	
	return ME;
}();


/*-------------------------------------------------------------------------------*/
//ツアー
thai.addBlocks += 1;
thai.tagbanner.tour = function() {
	
	//ツアー変数
	var tourApi = '/common/api/tour.cgi';
	var cookieName = 'promArea';
	var tourData = [];
	var tourBlock;
	var tourID = 0;
	var len;
	
	
	var ME = {
		
		init : function() {
			
			if (thai.top) {
				thai.masonry();
				return;
			}
			
			var cooki = $.cookie(cookieName);
			if (cooki == null) {
				if (navigator.geolocation) {
					thai.masonry();
					navigator.geolocation.getCurrentPosition(function(position) {
							var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
							var geocoder = new google.maps.Geocoder();
							geocoder.geocode({'latLng': latlng},onGeocode);
						},xmlLoad,{timeout:1000*5});
				} else {
					xmlLoad();
				}
			} else {
				xmlLoad(cooki);
			}
		}
	};
	
	function onGeocode(r, s) {
		if (s == google.maps.GeocoderStatus.OK) {
			var ra = ['都','道','府','県'];
			var d = null;
			
			for (var i = 0; i < r.length; ++i) {
				var ta = r[i].address_components;
				var talen = ta.length
				for (var e = 0; e < talen; ++e) {
					for (var t in ra) {
						if (ta[e].long_name.indexOf(ra[t]) > 0) {
							d = ta[e].long_name;
							break;
						}
					}
				}
			}
			
			if (d != null) {
				$.cookie(cookieName, d, { expires: 7 });
				xmlLoad(d);
			} else {
				xmlLoad();
			}
			
		} else {
			xmlLoad();
		}
	}
	
	function xmlLoad(r) {
		var k = thai.tagbanner.tags.toString();
		var op = {
			url:tourApi,
			success:onTourXmlComp,
			data:{'k':k}
		};
		if (r) op.data.r = r;
		$.ajax(op);
	}
	
	function onTourXmlComp(d, t) {
		var data = $(d);
		
		len = data.find('tour').length;
		if (len == 0) {
			thai.masonry();
			return;
		}
		
		data.find('tour').each(function(){
			var s = $(this).attr('priority') * Math.random();
			tourData.push({obj:this,seed:s});
		});
		tourData.sort(function(a,b){return a.seed-b.seed;});
		
		tourBlock = $('<section>',{id:"bl_tour",className:"block bl_normal"});
		$("aside").append(tourBlock);
		
		var navi = $("<ul>").addClass('prev_next_navi');
		tourBlock.append(navi);
		
		var prev = $("<li>")
		.addClass('prev')
		.click(prevTour);
		navi.append(prev);
		
		var next = $("<li>")
		.addClass('next')
		.click(nextTour);
		navi.append(next);
		
		var o = $(tourData[tourID].obj);
		tourBlock.prepend(creatMoveObj(o));
		
		if (len == 1) navi.css('display','none');
		thai.masonry();
	}
	
	function creatMoveObj(obj) {
		var o = $(obj);
		var move = $('<div>',{className:'move'});
		
		var h = $('<h1>')
		move.append(h);
		
		var a = $('<a>',{href:o.attr('url'),rel:o.attr('tid'),target:'_blank'})
		.text(o.attr('title'));
		h.append(a);
		thai.tracking.trackingClick(a);
		
		var p = $('<p>').text(o.attr('outline'));
		move.append(p);
		
		var icondiv = $('<div>',{className:'tour_logo'});
		move.append(icondiv);
		
		var icon = $("<img>",{'src':o.attr('icon'),'width':'60','height':'30'});
		icondiv.append(icon);
		
		return move;
	}
	
	function prevTour() {
		--tourID;
		if (tourID < 0) tourID = len - 1;
		
		change(300);
	}
	
	function nextTour() {
		++tourID;
		if (tourID >= len) tourID = 0;
		
		change(-300);
	}
	
	function change(left) {
		var old = tourBlock.find('.move');
		
		old.animate({left:left*-1},{duration:300,
			complete:function(){
				old.remove();
			}
		});
		
		var obj = creatMoveObj($(tourData[tourID].obj));
		obj.css({left:left+'px'})
		.prependTo(tourBlock)
		.animate({left:0},{duration:300});
	}
	
	return ME;
}();



/*-------------------------------------------------------------------------------*/
//ホテル
thai.addBlocks += 1;
thai.tagbanner.hotel = function() {
	
	//ホテル変数
	var hotelApi = '/common/api/hotelprom.cgi';
	var hotelData = [];
	var hotelBlock;
	var promID = 0;
	
	var ME = {
		init : function() {
			var k = thai.tagbanner.tags.toString();
			$.ajax({
				url:hotelApi,
				success:onHotelXmlComp,
				data:{'k':k}
			});
		},
		loop : function() {
			loop();
		}
	};
	
	function onHotelXmlComp(d, t) {
		var data = $(d).find('hotel');
		len = data.length;
		
		//キャンペーンが無い時は表示しない
		if (len == 0) {
			thai.masonry();
			return;
		}
		
		data.each(function(){
			var s = 100 * Math.random();
			hotelData.push({obj:this,seed:s});
		});
		hotelData.sort(function(a,b){return a.seed-b.seed;});
		
		var obj = $(hotelData[promID].obj);
		var url = obj.attr('url');
		var title = obj.attr('title');
		var src = obj.attr('src');
		
		hotelBlock = $('<section>',{id:"bl_prom",className:"block bl_normal"});
		var content = '<div class="img"><a href="'+url+'" title="キャンペーン詳細ページを表示">'+
			'<img src="'+src+'" width="300" height="150"></a></div>'+
			'<img class="icon" src="/common/img/icon_accommodation.png" width="45" height="24">'+
			'<img class="icon_camp" src="/common/img/icon_campaign.png" width="45" height="24">'+
			'<h2>HOTEL CAMPAIGN</h2>'+
			'<div class="txt">'+
			'<h1><a href="'+url+'" title="キャンペーン詳細ページを表示">'+title+'</a></h1>'+
			'</div>';
		hotelBlock.append(content);
		
		//トップの場合はニュースの後ろに設置
		var newBl = $('#bl_news');
		if (newBl.get(0)) {
			newBl.after(hotelBlock);
		} else {
			$('#search_nav').after(hotelBlock);
		}
		
		//キャンペーンが1つの時はナビは無し
		if (len != 1) {
			var navi = $("<ul>")
			.addClass('prev_next_navi');
			hotelBlock.append(navi);
			
			var prev = $("<li>")
			.addClass('prev')
			.click(prevProm);
			navi.append(prev);
			
			var next = $("<li>")
			.addClass('next')
			.click(nextProm);
			navi.append(next);
			
			promID = Math.floor(Math.random() * len);
		}
		
		//change();
		thai.masonry();
	}
	
	function prevProm() {
		if (!flag) {
			return;
		} else {
			flag = false;
		}
		--promID;
		if (promID < 0) promID = len - 1;
		change(300);
	}
	
	function nextProm() {
		if (!flag) {
			return;
		} else {
			flag = false;
		}
		++promID;
		if (promID >= len) promID = 0;
		change(-300);
	}
	
	var new_title;
	var bk_title;
	var lid = 0;
	var mid = 0;
	var oldImg;
	var newImg;
	var flag = true;
	function change(num) {
		clearInterval(mid);
		
		oldImg = hotelBlock.find('.img img').eq(0);
		
		var obj = $(hotelData[promID].obj);
		var a = obj.attr('url');
		var src = obj.attr('src');
		new_title = obj.attr('title');
		bk_title = hotelBlock.find('h1 a').text();
		
		hotelBlock.find('.img a').attr('href', a);
		hotelBlock.find('h1 a').text(new_title).attr('href', a);
		thai.masonry();
		
		hotelBlock.find('h1 a').text(bk_title);
		lid = 0;
		mid = setInterval(thai.tagbanner.hotel.loop, 30);
		newImg = $('<img>',{width:300,height:150})
		.css({left:num})
		.appendTo(hotelBlock.find('.img a'))
		.load(function(){
			oldImg.animate({left:num*-1},{duration:500});
			newImg.animate({left:0},{duration:500,complete:function(){
					oldImg.remove();
					flag = true;
				}});
			
		})
		.attr('src', src);
	}
	
	function loop() {
		var f = bk_title.substr(lid+1);
		var n = new_title.substr(0,lid);
		hotelBlock.find('h1 a').text(n+f);
		if (lid >= Math.max(bk_title.length, new_title.length)) clearInterval(mid);
		++lid;
	}
	
	return ME;
}();

$(document).ready(thai.tagbanner.init);


