﻿//----------------------------------------------------------------------------------------------
function serializePage() {

    var currentElement;

    var jsonPage = "";

    var inputElements = document.getElementsByTagName("input");

    for (i = 0; i < inputElements.length; i++) {

        currentElement = inputElements[i];

        if (currentElement.type == "text") {
            jsonPage += serializeTextElement(currentElement);
        }
        else if (currentElement.type == "checkbox" ||
                 currentElement.type == "radio") {
            jsonPage += serializeBoolElement(currentElement);
        }
    }

    jsonPage = jsonPage.substring(1, jsonPage.length - 1);

    document.getElementById("hfPageState").value = jsonPage;
}
//----------------------------------------------------------------------------------------------
function deserializePage(pageState, elementIDsForExclusionString) {

    var elementIDsForExclusion = elementIDsForExclusionString.split(',');

    var jsonPage = '{ "' + pageState + ' }';

    var deserializedDocument =
            eval("(" + jsonPage + ")");

    var currentElement;

    for (elementId in deserializedDocument) {
    
        currentElement = document.getElementById(elementId);

        var inArrayIndex = jQuery.inArray(elementId, elementIDsForExclusion);
        if (inArrayIndex != -1)
            continue;

        if (currentElement.type == "text") {
            currentElement.value = deserializedDocument[elementId];
        }
        else if (currentElement.type == "checkbox" ||
                 currentElement.type == "radio") {
            currentElement.checked = deserializedDocument[elementId];
        }
    }
}
//----------------------------------------------------------------------------------------------
function serializeTextElement(element) {
    return '"' + element.id + '":"' + element.value + '",';
}
//----------------------------------------------------------------------------------------------
function serializeBoolElement(element) {
    return '"' + element.id + '":' + element.checked + ',';
}
//----------------------------------------------------------------------------------------------