﻿Controls.FotoGalery = function (id, obj) {
    obj = obj || {};
    ///#region private fields
    var _thisRef = this;
    var _isRendered = false;
    var _isTemplateGeted = false;
    ///#endregion

    ///#region private fields
    function _getSelf() {
        return $('#' + _thisRef.id);
    }
    function _getImageUrl(imgId, size) {

    }

    function _getTemplate(cb) {
        $.get(_thisRef.templatePath, function (data) { _getTemplateResult(data, cb); });
    }

    function _getHtml() {
        return $('script#' + _thisRef.templateId).html();
    }

    function _getTemplateResult(data, cb) {
        $('body').append(data);
        _isTemplateGeted = true;
        _thisRef.onReady();
        if (cb) cb();
    }

    function _render() {
        var resulthtml = _getHtml();
        resulthtml = resulthtml.replace('<%=view%>', Controls.ImageHelper.getImgSrc(_thisRef.imgs[0], 'Medium'));
        var previews = "";
        for (var i = 0; i < _thisRef.imgs.length; i++) {

            previews += "<div class='preview'><a style='color:white;' href=" + Controls.ImageHelper.getImgSrc(_thisRef.imgs[i]) + "><img val='" + _thisRef.imgs[i] + "' src='" + Controls.ImageHelper.getImgSrc(_thisRef.imgs[i], 'SmallProductPreview') + "' /></a></div>";
        }
        resulthtml = resulthtml.replace('<%=previews%>', previews);
        _getSelf().html(resulthtml);
        _appendEvents();

    }

    function _appendEvents() {
        $($('div.preview')[0]).addClass(_thisRef.selectedClass);
        $('div.preview a').click(function () {
            $('img.view').attr('src', Controls.ImageHelper.getImgSrc($(this).find("img").attr('val'), 'Medium'));
            _getSelf().find('div.' + _thisRef.selectedClass).removeClass(_thisRef.selectedClass);
            $(this).parent().addClass(_thisRef.selectedClass); return false;
        });
    }

    ///#endregion

    ///#region public fields
    this.id = id;
    this.imgs = obj.imgs || [];
    this.templatePath = obj.templatePath || "";
    this.templateId = obj.templateId || "";
    this.selectedClass = obj.selectedClass || "selected";
    ///#endregion

    ///#region public methods
    this.init = function () {

    }

    this.dataBind = function () {
        //databind
        this.render();
    }

    this.render = function () {
        if (_isTemplateGeted) {
            _render();
        }
        else _getTemplate(_render);
    }
    ///#endregion
    ///#region events
    this.onReady = obj.onReady || function () { };
    ///#endregion
}


