(function($) {
	var pluginName = "updList";
	$.fn[pluginName] = function(config) {
		var defaults = {
			serviceUrl : "http://gakkai.macc.jp/upd/",
			key : "ma.news",
			classHeader : "upd_",
			type:"div",
			members:["startDate","title","description"],
			link:"title",
			format : { startDate : dateFormat },
			click : function () { alert( $(this).parent().attr('id') ); }
		}; 
		var opts = $.extend( defaults , config);

		var elements = this;
		getUpdList(opts , function(data) {
			setListView( elements , data , opts);
		} );
		return this;
	};
	/**
	 * 日付表示用ユーティリティ関数
	 */
	function dateFormat( dd ) {
		if( typeof dd == "number" ) {
			d = new Date();
			d.setTime(dd);
			dd=d;
		}
		var month = dd.getMonth() + 1;
		if( month < 10 ) {
			month = "0" + month;
		}
		var day = dd.getDate();
		if( day < 10  ) {
			day = "0" + day;
		}
		return dd.getFullYear() + "/" + month + "/" + day;
	};

	function setListView( elements , updList ,opts) {
		var html='';
		elements.html('');
		if( updList && updList.length > 0 ) {
			var recClass = opts.classHeader + "record";
			var rowHeader = '<div class="' + opts.classHeader + 'record">';
			for( var i = 0 ; i < updList.length ; i++ ) {
				var rec = '<div class="' + recClass +'" id="' + updList[i]['objectId'] + '">';
				for( var j = 0 ; j < opts.members.length ; j++ ) {
					var memClass = opts.classHeader + opts.members[j];
					if( opts.link == opts.members[j] && updList[i]['content'] ) {
						memClass += (" " + opts.classHeader + "link");
					}
					rec += '<div class="' + memClass + '">';
					if( opts.format[opts.members[j]] ) {
						rec += opts.format[opts.members[j]](updList[i][opts.members[j]]);
					} else {
						rec += (updList[i][opts.members[j]].replace(/\r*\n/g,"<br />"));
//						rec += updList[i][opts.members[j]];
					}
					rec += '</div>';
				}
				rec += "</div>";
				elements.append(rec);
				
				var o = $('#' + updList[i]['objectId']).get(0);
				$.data(o,'content',updList[i]['content']);
			}
		}
		$('.' + opts.classHeader + "link" ).click( opts.click );
/*			.click( function(){
				alert( $(this).parent().attr('id') );
				var o = $(this).parent().get(0);
			}) */
			;
		return elements;
	}

	function getUpdList( config ,  cb) {
		var defaults = {
			serviceUrl : "http://gakkai.macc.jp/upd/",
			key : "ma.news",
			offset : 0,
			limit : 0,
			mode : '',
			query : '',
			sort : ''
		};
		var opts = $.extend( defaults , config);
		if( !cb || !$.isFunction(cb) ) return; // NO CALLBACK
		var reqUrl = opts.serviceUrl + opts.key.replace(/\./g,"/");
		var data = { offset : opts.offset , limit : opts.limit ,mode : opts.mode,query : opts.query,sort : opts.sort};

		var ret = jQuery.ajax({
			url: reqUrl ,
			dataType : 'jsonp',
			type : 'GET',
			data : data,
			complete : function() {
			} ,
			success : function(data,status) {
				if( status == 'success' ) {
					cb.apply(this, arguments);
				} else {
					alert("ERROR OCCURED!");
				}
			} ,
			error : function( req , status , ex ) {
				alert(ex);
			}
		});
		return this;
	};
	$.fn["getUpdList"] = getUpdList;
})(jQuery);
