// jquery.jsonp 2.1.4 (c)2010 Julian Aubourg | MIT License
// http://code.google.com/p/jquery-jsonp/
(function(e,b){function d(){}function t(C){c=[C]}function m(C){f.insertBefore(C,f.firstChild)}function l(E,C,D){return E&&E.apply(C.context||C,D)}function k(C){return/\?/.test(C)?"&":"?"}var n="async",s="charset",q="",A="error",r="_jqjsp",w="on",o=w+"click",p=w+A,a=w+"load",i=w+"readystatechange",z="removeChild",g="<script/>",v="success",y="timeout",x=e.browser,f=e("head")[0]||document.documentElement,u={},j=0,c,h={callback:r,url:location.href};function B(C){C=e.extend({},h,C);var Q=C.complete,E=C.dataFilter,M=C.callbackParameter,R=C.callback,G=C.cache,J=C.pageCache,I=C.charset,D=C.url,L=C.data,P=C.timeout,O,K=0,H=d;C.abort=function(){!K++&&H()};if(l(C.beforeSend,C,[C])===false||K){return C}D=D||q;L=L?((typeof L)=="string"?L:e.param(L,C.traditional)):q;D+=L?(k(D)+L):q;M&&(D+=k(D)+encodeURIComponent(M)+"=?");!G&&!J&&(D+=k(D)+"_"+(new Date()).getTime()+"=");D=D.replace(/=\?(&|$)/,"="+R+"$1");function N(S){!K++&&b(function(){H();J&&(u[D]={s:[S]});E&&(S=E.apply(C,[S]));l(C.success,C,[S,v]);l(Q,C,[C,v])},0)}function F(S){!K++&&b(function(){H();J&&S!=y&&(u[D]=S);l(C.error,C,[C,S]);l(Q,C,[C,S])},0)}J&&(O=u[D])?(O.s?N(O.s[0]):F(O)):b(function(T,S,U){if(!K){U=P>0&&b(function(){F(y)},P);H=function(){U&&clearTimeout(U);T[i]=T[o]=T[a]=T[p]=null;f[z](T);S&&f[z](S)};window[R]=t;T=e(g)[0];T.id=r+j++;if(I){T[s]=I}function V(W){(T[o]||d)();W=c;c=undefined;W?N(W[0]):F(A)}if(x.msie){T.event=o;T.htmlFor=T.id;T[i]=function(){/loaded|complete/.test(T.readyState)&&V()}}else{T[p]=T[a]=V;x.opera?((S=e(g)[0]).text="jQuery('#"+T.id+"')[0]."+p+"()"):T[n]=n}T.src=D;m(T);S&&m(S)}},0);return C}B.setup=function(C){e.extend(h,C)};e.jsonp=B})(jQuery,setTimeout);
(function(){
$(function()
{
	//--------------------------------------------------------------------------------------------------  //
	//本番
	var shop_id = "SHP071";
	var baseurl = "http://www.tipness.co.jp/api/1.0/shop/";
	
	var API_URL_EM_INFO = baseurl + shop_id + "/emergency.json";
	var API_URL_INFO = baseurl + shop_id + "/news.json";
	var API_URL_CAM = baseurl + shop_id + "/campaign.json";
	var data_Type = "jsonp";
	var ajaxFunc = $.jsonp;
	
	// getパラメータ取得
	var getParam = function () {
		var params = {};
		var query = window.location.search.substring(1).split('&');
		for (var i in query) {
			var pos = query[i].indexOf('=');
			if (pos > 0) {
				var k = query[i].substring(0, pos);
				var v = query[i].substring(pos + 1);
				params[k] = v;
			}
		}
		return params;
	}
	var geParams = getParam();
	
	
	var dummy_img_path = "/common/img/dummy_now_printing.jpg";
	//-------------------------------------------------------------------------------------------------- HTMLModule //
	var HTMLModule = function(){};
	window.HTMLModule = new HTMLModule();
	HTMLModule.prototype.getEmerGencyInfoModule = function( _date, _title, _text )
	{
		var date	= _date	|| "";
		var title	= _title	|| "";
		var text	= _text		|| "";
		
		return "<dl class='clear clearfix'><dd>" + date + "</dd><dt class='topics'><a href='javascript:void(0)' >" + title + "</a><div class='fade'>" + text + "</div></dt></dl>";
	}
	HTMLModule.prototype.getInfoModule = function( _id, _img, _date, _title, _text, _url )
	{
		var id		=	_id === 0 ? 0 : _id || "";//0以外のfalsyな値のときは””
		var img		=	_img	|| "";
		var date	=	_date	|| "";
		var title	=	_title	|| "";
		var text	=	_text	|| "";
		var url		=	_url		|| "";
		
		return "<dl class='clear clearfix'><dd>" + date + "</dd><dt><a href='/news/#" + id + "'>" + title + "</a></dt></dl>";
	}
	HTMLModule.prototype.getErrorModule_1 = function()
	{
		return "<dl class='clear clearfix'>・緊急のお知らせはありません。</dl>";
	}
	HTMLModule.prototype.getErrorModule_2 = function()
	{
		return "<dl class='clear clearfix'>・お知らせはありません。</dl>";
	}
	
	$(document).ready(function()
	{
		ajaxFunc({
			type: "GET",
			"url": API_URL_EM_INFO + "?callback=?" ,
			"data": $.extend(geParams, {
				"alt": "json-in-script",
				"shop_id": shop_id,
				"flag" : "not_member",
				"time" : new Date().getTime()
			}),
			dataType:data_Type,
			callbackParameter: "jsoncallback",
			timeout:15000,
			async:true,
			"success": function(data) { onComplete( data, "em" );},
			"error": function(d,msg) { onError();}
		});
		//info
		ajaxFunc({
			type: "GET",
			"url": API_URL_INFO + "?callback=?" ,
			"data": $.extend(geParams, {
				"alt": "json-in-script",
				"shop_id": shop_id,
				"flag" : "not_member",
				"time" : new Date().getTime()
			}),
			dataType:data_Type,
			callbackParameter: "jsoncallback",
			timeout:15000,
			async:true,
			"success": function(data) { onComplete( data, "news" );},
			"error": function(d,msg) { onError();}
		});
		//campaign
		ajaxFunc({
			type: "GET",
			"url": API_URL_CAM + "?callback=?" ,
			"data": $.extend(geParams, {
				"alt": "json-in-script",
				"shop_id": shop_id,
				"flag" : "not_member",
				"time" : new Date().getTime()
			}),
			dataType:data_Type,
			callbackParameter: "jsoncallback",
			timeout:15000,
			async:true,
			"success": function(data) {onComplete( data, "campaign" );},
			"error": function(d,msg) { onError();}
		});
	});
	
	var emDatas = [];
	var newsDatas = [];
	var camDatas = [];
	var completeCount = 0;
	var errorCounter = 0;
	var onComplete = function( data , str )
	{
		if( !data || data === "" ) return;
		var d = ( data_Type === "" ) ? eval( data ) : data.result.items;
		switch( str )
		{
			case "em" :
				emDatas = d;
				break; 
			case "news" :
				newsDatas = d;
				break;
			case "campaign" :
				camDatas = d;
				break;
		}
		loadEnd();
	}
	var onError = function()
	{
		loadEnd();
	}
	var noData = function(){
		$( "#news_right" ).append( window.HTMLModule.getErrorModule_2() );
	}
	var datasDisplay_em = function( datas ){
		if( datas.length === 0 ) return;
		var i,m=datas.length;
		for( i=0; i<m; i++ )
		{
			$( "#emergency_right" ).append( window.HTMLModule.getEmerGencyInfoModule(
				datas[i]["date"],
				datas[i]["title"],
				datas[i]["text"]
			)
			)
		}
		$( "#emergency_box" ).css( "display", "block" );
	}
	var datasDisplay = function( datas ){
		if( datas.length === 0 )
		{
			noData();
			return;
		}
		var i,m=datas.length;
		for( i=0; i<m; i++ )
		{
			$( "#news_right" ).append( window.HTMLModule.getInfoModule(
				i,
				datas[i]["image"],
				datas[i]["date"],
				datas[i]["title"],
				datas[i]["text"],
				datas[i]["url"]
			)
			);
		}
	}
	
	var dataAddValue = function( datas, name, value )
	{
		var i,m=datas.length;
		for( i=0; i<m; i++ )
		{
			datas[ i ][ name ] = value;
		}
	}
	var tipApiSort = function ( arr ) {
		/*campaign*/
		arr.sort( function (x,y) {
			var d0 = x["isCampaign"];
			var d1 = y["isCampaign"];
			return d1 - d0;
		} );
		
		/*時間*/
		arr.sort( function (x,y) {
			var arr0 = x.date.split("-");
			var arr1 = y.date.split("-");
			if( arr0.length === 1 ){
				arr0 = x.date.split("/");
				arr1 = y.date.split("/");
			}
			if( arr0.length === 1 ){
				arr0 = x.date.split(".");
				arr1 = y.date.split(".");
			}
			
			var d0 = new Date( arr0[0],arr0[1],arr0[2] ).getTime();
			var d1 = new Date( arr1[0],arr1[1],arr1[2] ).getTime();
			return d1 - d0;
		} );
		
		/*top_display*/
		arr.sort( function (x,y) {
			var d0 = x["top_display"];
			var d1 = y["top_display"];
			return d1 - d0;
		} );
	}
	var emtipApiSort = function ( arr ) {
		
		/*時間*/
		arr.sort( function (x,y) {
			var arr0 = x.date.split("-");
			var arr1 = y.date.split("-");
			if( arr0.length === 1 ){
				arr0 = x.date.split("/");
				arr1 = y.date.split("/");
			}
			if( arr0.length === 1 ){
				arr0 = x.date.split(".");
				arr1 = y.date.split(".");
			}
			var d0 = new Date( arr0[0],arr0[1],arr0[2] ).getTime();
			var d1 = new Date( arr1[0],arr1[1],arr1[2] ).getTime();
			return d1 - d0;
		} );
	}
	var loadEnd = function(){
		completeCount ++;
		if( completeCount === 3 )
		{
			emtipApiSort( emDatas );
			datasDisplay_em( emDatas );
			
			dataAddValue( camDatas, "api_type", "campaign" );
			dataAddValue( camDatas, "isCampaign", 1 );
			dataAddValue( newsDatas, "api_type", "news" );
			dataAddValue( newsDatas, "isCampaign", 0 );
			var arr = camDatas.concat( newsDatas );
			tipApiSort( arr );
			datasDisplay( arr );
			
			
			$(".fade").css("display", "none");
			$(".topics a").each(function(i){
				$(this).click(function(){
					$(".fade").eq(i).slideToggle('fast');
				});
			});
			$( ".submenuheader" ).click( function(){
				$( ".submenu" ).slideToggle('fast');
			});
		}
	}
});
})();

