/*
 * Add or connect to the individual. We are lazy, and assume if the outermost
 * div exists that the full required HTML structure hs been properly set up
 * by the server. We might not even use this functionality, but just in case
 */
window.intelesense_data.add_view((function( $, intelesense_data )
{
    function individual()
    {
        this.model = null;
        this.views = [];
        this.settings = {
            'display_time_zone':'utc',
            'synchronize_graphs':true
        };
        this.limited = false;
    };

    individual.prototype.init = function()
    {
        //get sensor data model
        this.model = intelesense_data.get_model('sensor_data');
        if(
            (navigator.userAgent.match(/iPhone/i)) ||
            (navigator.userAgent.match(/iPod/i)) ||
            ($.browser.msie && $.browser.version=="6.0"))
        {
            this.limited = true;
        }
    };

    individual.prototype.show = function(columns)
    {
        columns = columns || this.model.columns;
        var view = null;
        var i = 0;

        if(!this.views.length)
        {
            for(i in columns)
            {
                if(columns[i].display == 'flash graph')
                {
                    view = intelesense_data.get_view('chart',{column:columns[i],model:this.model});
                    view.show();
                    this.views.push(view);
                }
                else if (columns[i].display == 'image viewer')
                {
                    view = intelesense_data.get_view('images',{column:columns[i],model:this.model});
                    view.show();
                    this.views.push(view);
                }
            }
        }
        this.draw();
    };

    individual.prototype.draw = function()
    {
        for(var i in this.views)
        {
            //draw only the first item for mobile devices, and allow the others to be loaded on click.
            if(this.limited)
            {
                if(i==0)
                {
                    this.views[i].draw();
                }
            }
            else
            {
                this.views[i].draw();
            }
        }
    }

    individual.prototype.hide = function()
    {
        for(var i in this.views)
        {
            this.views[i].hide_view();
        }
    };

    return( new individual() );

})( jQuery, window.intelesense_data ));
