function filters(jqObj){
//>----------------------------------------------------------------------------------------------------------
	this.version = "4";
	this.build = "d.04";
	this.author = "m1z0";

	this.jq = jqObj;

	this.issue_id = null;
  this.LoadFromTPL = null;
  this.form_date_start = "";
  this.form_date_end = "";
  this.form_count_people = "";
  this.form_dur_start = "";
  this.form_dur_end = "";
  this.form_food_key = "";
  this.form_len_key = "";
  this.form_free_chart = "";

	var self = this;
//>----------------------------------------------------------------------------------------------------------
    this.MTLoad = function(issue_id, fromTPL){
        this.issue_id = issue_id;
		this.LoadFromTPL = (fromTPL == true)?true:false;
        if(this.issue_id == null){
			this.ThrowErr("article number is not specified");
		}
        this.mt_status("Инициализиация фильтра");
        var uri = "/?_module=filters&_action=init";
        this.jq.ajax({
			type: "GET",
			url: uri,
			data: "id=" + this.issue_id,
			cache: false,
			success: self.PostLoad
		});
    }
//>----------------------------------------------------------------------------------------------------------
    this.PostLoad = function(objs){
    	var obj = new String(objs);
        var form_encoded = new String();
        if(obj.length > 0){
            self.mt_status("Предварительная загрузка");
            this.tableDate = self.jq.json.decode(obj);
            //Decoded data
            var form = {
				"date": {
					"start": (self.form_date_start?self.form_date_start:this.tableDate.date_start),
					"end": (self.form_date_end?self.form_date_end:this.tableDate.date_end)
						},
				"duration": {
					"start": (self.form_dur_start?self.form_dur_start:null),
					"end": (self.form_dur_end?self.form_dur_end:null)
						},
				"countp": (self.form_count_people?self.form_count_people:null),
				"fk": (self.form_food_key?self.form_food_key:null),
				"lk": (self.form_len_key?self.form_len_key:null),
                "freeChart": (self.form_free_chart?self.form_free_chart:null)
			};
            //Encoded data
            form_encoded = self.jq.json.encode(form);
			var parseUrl = new String(window.location);
			var parseUrlArr = parseUrl.split("/");
			var tour = parseUrlArr[3];

			//tour == 'tury-putevki-otdykh-lechenie' - realy
			// || tour == 'mastertour' - debug

			//и если переменная tour содержит в себе нужное значение то продолжаем загрузку
            if(tour == 'tury-putevki-otdykh-lechenie'){
                self.mt_status("Предварительная загрузка параметров фильтра");
                var dateS = (self.form_date_start.length > 0)?self.form_date_start:(this.tableDate.date_start.length > 0)?this.tableDate.date_start:"";
				var dateE = (self.form_date_end.length > 0)?self.form_date_end:(this.tableDate.date_end.length > 0)?this.tableDate.date_end:"";
				if (self.form_count_people==undefined)
				{
				    var cp = "";
				}
				else
				{
				    var cp = (self.form_count_people.length > 0)?self.form_count_people:"";
				}
				//var cp = (self.form_count_people.length > 0)?self.form_count_people:"";
				if (self.form_food_key==undefined)
				{
				    var fk = "";
				}
				else
				{
				    var fk = (self.form_food_key.length > 0)?self.form_food_key:"";
				}
				if (self.form_len_key==undefined)
				{
				    var lk = "";
				}
				else
				{
				    var lk = (self.form_len_key.length > 0)?self.form_len_key:"";
				}
				if (self.form_dur_start==undefined)
				{
				    var durS = "";
				}
				else
				{
				    var durS = (self.form_dur_start.length > 0)?self.form_dur_start:"";
				}
				if (self.form_dur_end==undefined)
				{
				    var durE = "";
				}
				else
				{
				    var durE = (self.form_dur_end.length > 0)?self.form_dur_end:"";
				}
    			if (self.form_free_chart==undefined)
				{
				    var freeChart = "";
				}
				else
				{
				    var freeChart = (self.form_free_chart.length > 0)?self.form_free_chart:"";
				}
				//var durS = (self.form_dur_start.length > 0)?self.form_dur_start:"";
				//var durE = (self.form_dur_end.length > 0)?self.form_dur_end:"";

                self.mt_status("Загрузка фильтра");
                //DefaultURL = "/?_module=filters&_action=buildFilt&id=" + self.issue_id
                //var uri = "/mastertour/filter.php?id=" + self.issue_id;
                var uri = "/?_module=filters&_action=buildFilt&id=" + self.issue_id;
                self.jq.ajax({
					type: "GET",
					url: uri,
					data: ((dateS.length > 0)?"date_S=" + dateS:"")+((dateE.length > 0)?"&date_E=" + dateE:"")+((cp.length > 0)?"&countp=" + cp:"")+((durS.length > 0)?"&dur_S=" + durS:"")+((durE.length > 0)?"&dur_E=" + durE:"")+((fk.length > 0)?"&fk=" + fk:"")+((lk.length > 0)?"&lk=" + lk:"")+((freeChart.length > 0)?"&freeChart=" + freeChart:""),
					cache: false,
					success: self.PreLoadFilter
				});
                self.mt_status("Загрузка таблиц...");
                //DefaultURL = "/?_module=filters&_action=mtdraw"
                //var uri = "/mastertour/filters.php?action=draw";
                var uri = "/?_module=filters&_action=draw";
                self.jq.ajax({
					type: "GET",
					url: uri,
					data: "id=" + self.issue_id +
						(form_encoded.length > 0 ? "&form=" + form_encoded : ""),
					cache: false,
					success: self.PreLoadMTTable
				});
            }
        }
    }
//>----------------------------------------------------------------------------------------------------------
    this.PreLoadFilter = function(o){
		self.jq("#PriceFilter").empty();
		if(o.length > 0){
			self.jq("#PriceFilter").html(o);
		} else {
			self.ThrowErr('Error of loading of the filter');
		}
	}
//>----------------------------------------------------------------------------------------------------------
	this.PreLoadMTTable = function(o){
		self.mt_status("Загрузка Таблиц");
		var as = self.jq("#one").val();
		var ap = self.jq("#two").val();
		self.jq("#PriceList").empty();
		if(o.length > 0){
			self.jq("#PriceList").html(o);
			//self.jq("#PriceList tr[class*='_x']").remove();
		}
		self.mt_status();
	}
//>----------------------------------------------------------------------------------------------------------
    this.isOnline = function(current){
		this.jq.ajax({
			type: "GET",
			url: "/?_module=filters&_action=getLinks",
			data: "id=" + current,
			cache: false,
			success: function(r){
				/*if(r == 'false'){
					self.jq("#online12394").empty();
					self.jq("#online12394").remove();
				}*/
				if(r != 'false'){
					self.jq("#online12394").html("<a href=\"?_online=1\" class=\"i-online\">Наличие мест. <br/>Онлайн бронирование</a>");
					self.jq(".menu3").html("<li id=\"online12394\"><a href=\"?_online=1\" class=\"i-online\">Наличие мест. <br/>Онлайн бронирование</a></li>")
				}
			}
		});
	}
//>----------------------------------------------------------------------------------------------------------
    this.formToVar = function( dtshift_val ){

        // magic with dates - calc start and end dates
        if ( dtshift_val != -1 )
        {
		    var date_start = new Date();
		    var date_now = new Date();
		    var newMonth = date_start.getMonth()+dtshift_val;

		    date_start.setMonth(newMonth);
		    date_start.setDate(1);
		    var date_end = new Date();
		    date_end.setMonth(newMonth+1);
		    date_end.setDate(1);
		    if (date_start < date_now )
		    {
                date_start = date_now;
		    }
		    this.form_date_start    = this.getDateString(date_start);
		    this.form_date_end      = this.getDateString(date_end);
        }
        else
        {
            this.form_date_start	= self.jq("#one").val();
		    this.form_date_end		= self.jq("#two").val();
        }
		this.form_count_people	= self.jq("#three").val();
		this.form_dur_start		= self.jq("#four").val();
		this.form_dur_end		= self.jq("#five").val();
    	this.form_food_key  	= self.jq("#sixed").val();
	    this.form_len_key  		= self.jq("#seven").val();

        this.form_free_chart = "";
        if (self.jq("#eight").attr("checked"))
            this.form_free_chart = "checked";
	}
//>----------------------------------------------------------------------------------------------------------
    this.filterSubmit = function(issue_id){
    this.formToVar(-1);

		return this.MTLoad(issue_id, true);
	}
//>----------------------------------------------------------------------------------------------------------
    this.filterSubmitDateShift = function(issue_id,dtshift_val){

    this.formToVar(dtshift_val);
		return this.MTLoad(issue_id, true);
	}
//>----------------------------------------------------------------------------------------------------------
    this.filterSubmitFreeChart = function(issue_id){

    self.jq("#eight").attr("checked",true);

    this.formToVar(-1);
		return this.MTLoad(issue_id, true);
	}
//>----------------------------------------------------------------------------------------------------------
	this.getDateString = function(date){
		var day = date.getDate();
		var m = date.getMonth()+1;
		var y = date.getFullYear();

		var datestr = '' + y + '-';
		if (m<10)
			datestr = datestr + '0';
		datestr = datestr + m + '-';
		if (day<10)
			datestr = datestr + '0';
		datestr = datestr + day;
		return datestr;
	}
//>----------------------------------------------------------------------------------------------------------
    this.mt_status = function(text){
		self.jq("#mt_status").html((text ? '<font style="color: #FF3300;">' + text + '</font>' : '<font style="color: #FF3300;display:none;">Готово</font>'));
	}
//>----------------------------------------------------------------------------------------------------------
    this.ThrowErr = function(txt){
		throw new Error('Filter v' + self.version + '.' + self.build + '::Applet-Error ' + txt);
		return false;
	}
}

