﻿/// <reference path="../jquery.common.js" />
/// <reference path="../jquery.js" />
/// <reference path="../zw_Runtime.js" />
/// <reference path="../UC/zw_Helpers.js" />
var zw_externalcatalog = {
    init: function() {
        $('a[href*="/' + MvcActions.ExternalCatalogController.Name + '/' + MvcActions.ExternalCatalogController.Actions.Tree + '/"][' + Constants.zw_ExternalCatalogTree.depth + ']').live('click', function(event) { return zw_externalcatalog.get_toggle(this); });
        $('a[href*="/' + MvcActions.ExternalCatalogController.Name + '/' + MvcActions.ExternalCatalogController.Actions.Models + '/"]').live('click', function(event) { return zw_externalcatalog.get_models(this); });
        $('a[href*="/' + MvcActions.ExternalCatalogController.Name + '/' + MvcActions.ExternalCatalogController.Actions.Types + '/"]').live('click', function(event) { return zw_externalcatalog.get_types(this); });
    },

    get_any: function(element, nextPageAttrName, filterAttrName, destinationControlID, url) {

        element = $(element);
        var control = zw_externalcatalog.get_container(element);
        var properties = AjaxHelper.parseControlProperties(control);

        if (properties[nextPageAttrName])
            return true;
        else {

            var m = $(Constants.zw_ExternalCatalogManufacturers.ID);
            var mid = $(Constants.zw_ExternalCatalogModels.ID);
            var tid = $(Constants.zw_ExternalCatalogTypes.ID);
            var trid = $(Constants.zw_ExternalCatalogTree.ID);
            var inf = $(Constants.zw_ExternalCatalogSelectedInfo.ID);

            var filter = element[0].href.split("/").pop();
            var destinationControl = $(destinationControlID);
            if (destinationControl.length) {
                m.attr(filterAttrName, filter);
                mid.attr(filterAttrName, filter);
                tid.attr(filterAttrName, filter);
                trid.attr(filterAttrName, filter);
                inf.attr(filterAttrName, filter);
                properties = AjaxHelper.parseControlProperties(destinationControl);
            } else {
                destinationControl = control;
                properties[filterAttrName] = filter;
            }
            url = url + webUrl.param(properties);
            destinationControl.load(url, function() {
                if (nextPageAttrName == "cp_modelspage" || nextPageAttrName == "cp_typespage") {
                    trid.html("");
                }
                if (nextPageAttrName == "cp_modelspage") {
                    tid.html("");
                }

                if (inf.length) {
                    properties = AjaxHelper.parseControlProperties(inf);
                    url = MvcActions.ExternalCatalogController.Info();
                    url = url + AjaxHelper.parseControlPropertiesToUrl(inf);
                    inf.load(url, function() {
                        destinationControl.goTo();
                    });
                } else
                    destinationControl.goTo();
            });
            return false;
        }
    },

    get_models: function(element) {
        return zw_externalcatalog.get_any(element, "cp_modelspage", "cp_manufacturer", Constants.zw_ExternalCatalogModels.ID, MvcActions.ExternalCatalogController.Models());
    },

    get_types: function(element) {
        return zw_externalcatalog.get_any(element, "cp_typespage", "cp_modelid", Constants.zw_ExternalCatalogTypes.ID, MvcActions.ExternalCatalogController.Types());
    },

    get_toggle: function(element) {

        element = $(element);

        var control = zw_externalcatalog.get_container(element);

        var literal = Constants.zw_ExternalCatalogTree;

        var treeid = element[0].href.split("/").pop();
        var depth = element.attr(literal.depth);

        var url = MvcActions.ExternalCatalogController.Tree(treeid, depth);
        url = url + "&" + AjaxHelper.parseControlPropertiesToUrl(control);

        var contentContainer = control.comments(true, "CONTENT/ExternalCatalogTree/" + literal.expandTreeID + "=" + treeid);

        controls.get_expandcollapse(element, contentContainer, url);

        return false;

        //		externalCatalog.get_settings(container);

        //		var ec_searchtreeid = element.attr(externalCatalog.attributesNames.selectedTree);

        //		if (element.is("img"))
        //			element = container.find("span[" + externalCatalog.attributesNames.selectedTree + "='" + ec_searchtreeid + "']");

        //		var content = container.comments(true,
        //            "CONTENT/" + externalCatalog.controlsIDs.tree + "/" + externalCatalog.attributesNames.selectedTree + "=" + ec_searchtreeid);

        //		var hide = element.attr("state") == "expanded";
        //		if (element.attr("state")) {
        //			element.attr("state", hide ? "collapsed" : "expanded");
        //			var sibling = content[0].nextSibling;
        //			while (sibling) {
        //				if (sibling.nodeType === 8 && sibling.nodeValue === "END")
        //					break;
        //				if (hide)
        //					$(sibling).hide();
        //				else
        //					$(sibling).show();
        //				sibling = sibling.nextSibling;
        //			}
        //		}
        //		else {
        //			externalCatalog.selectedValues.ec_treeid = ec_searchtreeid;
        //			externalCatalog.selectedValues.ec_imageplus = externalCatalog.settings.imagePlusID;
        //			externalCatalog.selectedValues.ec_imageminus = externalCatalog.settings.imageMinusID;
        //			externalCatalog.selectedValues.ec_imageline = externalCatalog.settings.imageLineID;
        //			var settings = { "func": "GET_Tree" };
        //			$.extend(settings, externalCatalog.selectedValues);
        //			$.post(webSettings.get_ASHXUrl("ExternalCatalog.ashx"), settings, function (data, textStatus, XMLHttpRequest) {
        //				content.after(data);
        //				element.attr("state", "expanded");
        //			}, "html");
        //		}
        //		var image = container.find("img[ec_treeid='" + ec_searchtreeid + "']");
        //		if (image.length) {
        //			if (hide)
        //				image.attr("src", image.attr("src").replace(externalCatalog.settings.imageMinusID, externalCatalog.settings.imagePlusID));
        //			else
        //				image.attr("src", image.attr("src").replace(externalCatalog.settings.imagePlusID, externalCatalog.settings.imageMinusID));
        //		}
    },

    get_container: function(element) {
        var control = element.parents(Constants.zw_ExternalCatalogTree.ID);
        if (!control.length)
            control = element.parents(Constants.zw_ExternalCatalogTypes.ID);
        if (!control.length)
            control = element.parents(Constants.zw_ExternalCatalogModels.ID);
        if (!control.length)
            control = element.parents(Constants.zw_ExternalCatalogManufacturers.ID);
        return control;
    }
};
