"use strict";
/* global $ */

var htmlRenderer = htmlRenderer || {};

htmlRenderer.createLabel = function(properties, content) {
    return htmlRenderer.createBalancedTag("label", properties, content);
};

htmlRenderer.createInput = function(properties) {
    return htmlRenderer.createOpenTag("input", properties);
};

htmlRenderer.createHiddenInput = function(properties) {
    properties[type] = 'hidden';
    return htmlRenderer.createOpenTag("input", properties);
};

htmlRenderer.createFieldset = function(properties, content) {
    return htmlRenderer.createBalancedTag("fieldset", properties, content);
};

htmlRenderer.createForm = function(properties, content) {
    return htmlRenderer.createBalancedTag("form", properties, content);
};

htmlRenderer.createImg = function(properties) {
    return htmlRenderer.createOpenTag("img", properties);
};

htmlRenderer.createLink = function(properties, content) {
    return htmlRenderer.createBalancedTag("a", properties, content);
};

htmlRenderer.createParagraph = function(properties, content) {
    return htmlRenderer.createBalancedTag("p", properties, content);
};

htmlRenderer.createDiv = function(properties, content) {
    return htmlRenderer.createBalancedTag("div", properties, content);
};

htmlRenderer.createSpan = function(properties, content) {
    return htmlRenderer.createBalancedTag("span", properties, content);
};

htmlRenderer.createSelect = function(properties, content) {
    return htmlRenderer.createBalancedTag("select", properties, content);
}

htmlRenderer.createOption = function(properties, content) {
    return htmlRenderer.createBalancedTag("option", properties, content);
};

htmlRenderer.createBalancedTag = function(name, properties, content) {
    return htmlRenderer.createOpenTag(name, properties) + content + htmlRenderer.createCloseTag(name);
};

htmlRenderer.createOpenTag = function(name, properties) {

    var propertyString = "";

    for (var propertyName in properties) {
        if (propertyString.length > 0) {
            propertyString += " ";
        }
        propertyString += propertyName;
        propertyString += "=\"";
        propertyString += properties[propertyName];
        propertyString += "\"";
    }

    if (propertyString.length > 0) {
        propertyString = " " + propertyString;
    }

    return "<" + name + propertyString + ">";

};

htmlRenderer.createCloseTag = function(name) {
    return "</" + name + ">";
};
