﻿DualTimeFilter = createClass();

DualTimeFilter.prototype.init = function(args) {

    defaults = { list: null, caption: "", farePr: ["", ""], preset: null, onChange: null,
                 parentDiv: "TimeSliderDiv", caption: "", footerCap: "", midMgr: null };
	for(var pr in defaults)
        this[pr] = isDefined(args[pr]) ?args[pr] :defaults[pr];
    this.validRange = null;
    var filter = this;
    
    this.min = []; this.max = [];
    for(var i=0; i<2; i++) {
        this.min[i] = this.list.get("min(" + this.farePr[i] + ")").get(this.farePr[i]);
        this.max[i] = this.list.get("max(" + this.farePr[i] + ")").get(this.farePr[i]);
    }

    // Method for validating fare to be displayed
    this.isValidFare = function(fare) {
	    var mins0 = fare.get(this.farePr[0]);
	    var mins1 = fare.get(this.farePr[1]);
	    var valid = this.slider.disabled[0] || ((this.range[0][0] <= mins0) && (mins0 <= this.range[0][1]));
	    return valid && (this.slider.disabled[1] || ((this.range[1][0] <= mins1) && (mins1 <= this.range[1][1])));
    };
    
    this.hide = function() {
        $(this.parentDiv).style.display = "none";        
    };

    this.show = function() {
        $(this.parentDiv).style.display = "";        
    };
    
    this.midMgr = new DomMgr({
        layout: {
            tagName: "div",
            style: { textAlign: "center" },
            foreach: { startIndex: 0, stopIndex: 1, indexKey: "btn" },
            layout: {
                tagName: "div",
                cssClass: "btns",
                attributes: { btnIndex: function(mgr) { return mgr.indices.btn; } },
                layout: function (el, mgr) { 
                    el.innerHTML = "<input type='checkbox' checked/><span>" + ((mgr.indices.btn == 0) ?"Takeoff" :"Landing") + "</span>";
                },
                handlers: { click: function(ev, mgr) {
                        var el = DOM.getTargetElement(ev);
                        el = el.parentNode;
                        var i = el.getAttribute("btnIndex");
                        if(el.firstChild.checked)
                            filter.slider.enable(i);
                        else
                            filter.slider.disable(i);       
                        if(filter.onChange)
                            filter.onChange(filter);
                    }
                }
            }
        }
    });
    
    this.container = new LeftFilter({ 
        caption: filter.caption,
        parentDiv: filter.parentDiv
    });
    
    this.slider = new DualSliderFilter({
        caption: filter.caption, 
        footerCap: filter.footerCap,
        parentDiv: this.container.body,
        min: filter.min,
        max: filter.max,
        midMgr: filter.midMgr,
        rangeToText: function(v) { 
            v = parseInt(v); 
            return Util.formatInt(parseInt(v/60), 2) + ':' + Util.formatInt(v%60, 2); 
        },
        preset: filter.preset,
        onChange: function() {
            if(filter.onChange)
                filter.onChange(filter);
        }
    });
    
    this.range = this.slider.range;  
};



