/**

 * handles the onclick popup when readmore is clicked

 * @param sandbox

 */
Cobalt.Website.Results.ReadMoreModule = function(sandbox)
{
    function handleNewReadMoreOnclick(e)
    {
        var hiddenElements = sandbox.dom(this).find(".further_information");
        var shortDescriptionElement = sandbox.dom(this).find(".description_short");
        var shortDescriptionExists =  sandbox.dom(shortDescriptionElement).length() > 0;

        var readMoreLink = sandbox.dom(this).find(".read_more");
        var readLessLink = sandbox.dom(this).find(".read_less");

        if (sandbox.dom(hiddenElements).addStyle("display") !== "none")
        {
            close(hiddenElements, shortDescriptionExists, shortDescriptionElement, readMoreLink, readLessLink);
        }
        else
        {
            open(shortDescriptionExists, shortDescriptionElement, hiddenElements, readMoreLink, readLessLink);
            firePixelTag(e);
        }
        e.stopPropagation();
        e.preventDefault();
        return false;
    }

    function close(hiddenElements, shortDescriptionExists, shortDescriptionElement, readMoreLink, readLessLink) {
        sandbox.dom(hiddenElements).slideUp(function() {
            if (shortDescriptionExists)
            {
                sandbox.dom(shortDescriptionElement).slideDown(function() {
                    showReadMoreLink(readMoreLink, readLessLink);
                });
            }
            else
            {
                showReadMoreLink(readMoreLink, readLessLink);
            }
        });
    }

    function open(shortDescriptionExists, shortDescriptionElement, hiddenElements, readMoreLink, readLessLink) {
        if (shortDescriptionExists)
        {
            sandbox.dom(shortDescriptionElement).slideUp(function() {
                sandbox.dom(hiddenElements).slideDown(function() {
                    showReadLessLink(readMoreLink, readLessLink);
                });
            });
        }
        else
        {
            sandbox.dom(hiddenElements).slideDown(function() {
                showReadLessLink(readMoreLink, readLessLink);
            });
        }
    }

    function showReadMoreLink(readMoreLink, readLessLink)
    {
        sandbox.dom(readLessLink).hide();
        sandbox.dom(readMoreLink).show();
    }

    function showReadLessLink(readMoreLink, readLessLink)
    {
        sandbox.dom(readMoreLink).hide();
        sandbox.dom(readLessLink).show();
    }

    function firePixelTag(e)
    {
        var vehicleDataManager = getVehicleDataManager();
        var vehicleId = vehicleDataManager.getVehicleIdByResultDomElement(e.target);
        var vinNumber = vehicleDataManager.getVINByVehicleId(vehicleId);
        var name = "ReadMore";
		
		sandbox.firePixelTag({
			eventName: 'com.cobaltgroup.ws.action.click.readmore',
			pageLabel: name,
			pageLayout: "VehicleSearchResults_" + name,
			pageName: "VehicleSearchResults",
			vin:vinNumber,
			requestUri:"/readMore.do?id="+vehicleId
		});

	}
    
    function getVehicleDataManager()
    {
		if (!Cobalt.Website.Results.VehicleDataManager) {
			return new Error("no vehicleDataManager instance");
		}
		return Cobalt.Website.Results.VehicleDataManager;
	}

    return {
		init:function()
        {
            sandbox.dom(".results_list_row .options").listenLive("click", handleNewReadMoreOnclick);
        },

        destroy:function()
        {
            //TODO: handle destroy
        }
    };
};

