(function ($) {
var self = mm.store = mm.extend({
	
/* ===============================	 */
	
	newsFadeSpeed:      5000,
	newsAnimationSpeed: 800,
	
/* ===============================	 */
	
	init: function () {
		this.each($('.frm-map'), function (i, el) {
			this._map($('.address_' + i + ' span.address').text().replace(/〒\d{3}-\d{4}/, ''), $('#map_' + i + ' div.frm-map-in'), $('.address_' + i).find('span.lat').text(), $('.address_' + i).find('span.lng').text());
		});
		
		this.image();
		this.rss();
	},
	
/* ===============================	 */
	
	_map: function (address, el, lat, lng) {
		var map = new GMap2(el.get(0));
		var geo = new GClientGeocoder();
		
		if ((lat && lng) && (lat != 0 && lng != 0) ){
			point = new GLatLng(lat, lng);
			map.setCenter(point, 14);
			map.addOverlay(new GMarker(point));
			map.closeInfoWindow();
			map.addControl(new GSmallMapControl());
			
			var url = 'http://maps.google.co.jp/maps?hl=ja&q=' + lat + ',' + lng + '&ll=' + lat + ',' + lng + '&z=14';
			var div = '<div id="map-link"><a href="' + url + '" target="_blank">地図を拡大表示</a></div>';
			el.append(div);
		}
		else {
			geo.getLatLng(
				address,
				function(point) {
					if (point) {
						map.setCenter(point, 14);
						map.addOverlay(new GMarker(point));
						map.closeInfoWindow();
						map.addControl(new GSmallMapControl());
						
//							var url = 'http://maps.google.co.jp/maps?hl=ja&q=' + address + '&z=14';
						var url = 'http://maps.google.co.jp/maps?hl=ja&q=' + point.y + ',' + point.x + '&ll=' + point.y + ',' + point.x + '&z=14';
						var div = '<div id="map-link"><a href="' + url + '" target="_blank">地図を拡大表示</a></div>';
						el.append(div);
					}
					else {
						point = new GLatLng(lat, lng);
						map.setCenter(point, 14);
						map.addOverlay(new GMarker(point));
						map.closeInfoWindow();
						map.addControl(new GSmallMapControl());
						
						var url = 'http://maps.google.co.jp/maps?hl=ja&q=' + lat + ',' + lng + '&ll=' + lat + ',' + lng + '&z=14';
						var div = '<div id="map-link"><a href="' + url + '" target="_blank">地図を拡大表示</a></div>';
						el.append(div);
					}
				}
			);
		}
	},
	
/* ===============================	 */
	
	image: function () {
		var showcase = $('#frm-showcase');
		var sub      = $('#show_sub ul li a');
		var target   = $('#show img');
		var show     = $('#show img.on');
		
		
		sub.click(this.bind(function (a) {
			var nom = $(a).parent().attr('class').replace(/thumb_/, '') - 1;
			show.removeClass('on');
			show = target.eq(nom).addClass('on');
			return false;
		}));
	},
	
/* ===============================	 */
	
	rss: function () {
		var target = $('div#frm-news div#frm-news-view ul');
		
		$.ajax({
			url      : '/news/store/feed/',
			type     : 'GET',
			dataType : 'xml',
			cache    : false,
			success  : this.bind(function (_ajax, r) {
				this.news = this.map($(r).find('channel item'), function (i, item) {
					item = $(item);
					
					return {
						title: item.find('title').text(),
						date:  this.date(item.find('pubDate').text()),
						link:  item.find('link').text()
					}
				});
				
				this.each(this.news, function (i, news) {
					var li = [
						'<li>',
						'<img src="/shared/img/common/frm-btn-store.gif" />',
						'<span class="date">' + news.date + '</span>',
						'<p><a href="' + news.link + '">' + news.title + '</a><span class="guide">' + news.title + '</span></p>',
						'</li>'
					].join('');
					
					target.append(li);
				});
				
				var li    = target.find('li');
				var i     = 0;
				
				li.eq(i).fadeIn(this.newsAnimationSpeed);
				this.stringSlice(li.eq(i));
				
				setInterval(this.bind(function () {
					target.find('li:visible').fadeOut(this.newsAnimationSpeed, this.bind(function () {
						i++;
						if (i == li.length)
							i = 0;
						
					  li.eq(i).fadeIn(this.newsAnimationSpeed);
					  this.stringSlice(li.eq(i));
					}));
				}), this.newsFadeSpeed);
			})
		});
	},
	
	date: function (date) {
		date = new Date(date);
		
		var _date = {
			year:  parseInt(date.getFullYear()),
			month: parseInt(date.getMonth()) + 1,
			day:   parseInt(date.getDate())
		}
		
		return _date.year + '/' + ((_date.month < 10) ? '0': '') + _date.month + '/' + ((_date.day < 10) ? '0': '') + _date.day;
	},
	
	stringSlice: function (li) {
	  if (li.find('span.guide').width() <= 270) return;
	  
	  for (var i = li.find('span.guide').text().length-1; i >= 1; --i) {
	    var s = li.find('span.guide').text().slice(0, i) + '...';
	    li.find('span.guide').text(s);
	    if (li.find('span.guide').width() <= 270) {
	    	li.find('p a').text(s);
	    	return;
	    }
	  }
	  return;
	}
});

/* ===============================	 */

$(function () {
	mm.store.init();
});
})(jQuery);

/* ===============================	 */