(function(){
this.Hx = this.Hx || {};

/**
 * テンプレート置換
 */
Hx.template = function(template, data)
{

	return template.replace(Hx.template.regex, function() {
		var match  = arguments[0];
		//var offset = arguments[arguments.length-2];
		//var all    = arguments[arguments.length-1];
		var varName = arguments[1];
		var result  = data;
		var v = varName.split(".");
		for (var i = 0; i < v.length; i++) {
			if (result[v[i]] == undefined) {
				result = ""; //対応変数が無い場合は;
				break;
			}
			result = result[v[i]];
		}
		return result;
	});
}
Hx.template.LD = "[$".replace(/\W/g, "\\$&");
Hx.template.RD = "]".replace(/\W/g, "\\$&");
Hx.template.regex = new RegExp();
Hx.template.regex.compile(Hx.template.LD + '([^' + Hx.template.RD + ']+)' + Hx.template.RD, "igm");


/**
 * Delegate
 */
Hx.delegate = function(scope, func) {
	return function() {
		func.apply(scope, arguments);
	}
}

/**
 * TipProgramSchedule
 */
this.TipProgramSchedule = function(ajaxOption)
{
	var defaultOption = {
		async  : true,
		cache  : false,
		timeout: 30 * 1000,
		type   : "GET",
		dataType: "jsonp",
		data   : {},
		//url    : "http://test9.kha.co.jp/shop_info/api/get-schedule",// test
		url    : "/shop_info/api/get-schedule", 
		success : Hx.delegate(this, this.onSuccess),
		error   : Hx.delegate(this, this.onSuccess)
	}
	
	this.ajaxOption = $.extend(defaultOption, ajaxOption);
};


var proto = TipProgramSchedule.prototype;
proto.ajaxOption = {};
proto.request   = {};
proto.onSuccess = function(result){ this.onLoad(result); };
proto.onError   = function(){};
proto.onPreLoad = function(){};
proto.onPostLoad= function(){};
proto.onLoad    = function(result){};
proto.load = function(data)
{
	this.ajaxOption.data = data ? $.extend(data, this.request) : this.request;
	this.onPreLoad();
	$.ajax(this.ajaxOption);
	this.onPostLoad();
}



})();
