
function mcGetFollowingComment(node)
{
    var confirmStr = null;
    var c = node.nextSibling;
    while (c) {
       if (c.nodeName == "#text") {
          c = c.nextSibling;
          continue;
       }
       if (c.nodeName == "#comment") confirmStr = c.nodeValue;
       break;
    }
    return confirmStr;
}

function mcGetChildComment(node)
{
    var confirmStr = null;
    var c = node.childNodes[0];
    while (c) {
       if (c.nodeName == "#text") {
          c = c.nextSibling;
          continue;
       }
       if (c.nodeName == "#comment") confirmStr = c.nodeValue;
       break;
    }
    return confirmStr;
}




function mcTableRowMouseOver() {
    $(this).addClass("listRowHover");
}

function mcTableRowMouseOut() {
    $(this).removeClass("listRowHover");
}



function mcReplaceMainBodyForm(url) {
    return mcReplaceForm(url, '#bvmcMainBody');
}


function mcSubmitForm(form) {
    if (form != null) {
        var url = form.action;
        var sep = "?";
        if (url.indexOf("?") >= 0) sep = "&";
        var num_elements = form.elements.length;
        for (var i=0; i<num_elements; i++) {
            var el = form.elements[i];
            var elType = el.type;
            if (elType == 'hidden') {
                url = url + sep + el.name + "=" + escape(el.value);
                sep = "&";
            } else if (elType == 'checkbox') {
                if (el.checked) {
                   url = url + sep + el.name + "=" + escape(el.value);
                   sep = "&";
                }
            }
        }
         
        mcReplaceForm(url, '#bvmcMainBody');
    }
    return false;
}


function mcSubmitAllForm(form) {
    if (form != null) {
        var url = form.action;
        var sep = "?";
        if (url.indexOf("?") >= 0) sep = "&";
        var num_elements = form.elements.length;
        for (var i=0; i<num_elements; i++) {
            var el = form.elements[i];
            var elType = el.type;
            if (elType == 'hidden') {
                url = url + sep + el.name + "=" + escape(el.value);
                sep = "&";
            } else if (elType == 'text') {
                url = url + sep + el.name + "=" + escape(el.value);
                sep = "&";
            } else if (elType == 'checkbox') {
                if (el.checked) {
                   url = url + sep + el.name + "=" + escape(el.value);
                   sep = "&";
                }
            }
        }
         
        mcReplaceForm(url, '#bvmcMainBody');
    }
    return false;
}


function mcButtonAction(button, keys, values)
{
    var confirmStr = mcGetFollowingComment(button);
    if ((confirmStr == null) || (confirm(confirmStr))) {
       if ((keys != null) && (values != null)) {
          var len = keys.length;
          for (var i=0; i<len; i++) {
             var obj = button.form[keys[i]];
             if (obj != null) {
                obj.value = values[i];
                // alert("setting " + keys[i] + " to " + values[i]);
             }
          }
       }
       mcSubmitForm(button.form);
    }
    return false;
}

function mcSubmitAction(button, keys, values)
{
    var confirmStr = mcGetFollowingComment(button);
    if ((confirmStr == null) || (confirm(confirmStr))) {
       if ((keys != null) && (values != null)) {
          var len = keys.length;
          for (var i=0; i<len; i++) {
             var obj = button.form[keys[i]];
             if (obj != null) {
                obj.value = values[i];
                // alert("setting " + keys[i] + " to " + values[i]);
             }
          }
       }
       
       button.form.action = button.form.action.replace('/xpage/', '/xflow/');
       button.form.submit();
    }
    return false;
}

function mcReplaceForm(url, divid) {
    url = url.replace('/xflow/', '/xpage/');

    $.ajax({
        type: "GET",
        url: url,
        cache: false,
        success: function(msg) {
            var replaceDiv = $(divid);
            if (replaceDiv) {
               replaceDiv.html(msg);
               mcFixUp(replaceDiv);
            }
        }
    });
      
    return false;
}

function mcOpen800x400Window() {
    var popupUrl = this.href;
    var name = 'window_' + this.href.substr(this.href.lastIndexOf("=")+1);
    name = name.replace(/\//g, "");
      
    var windowFeatures = 'width=800,height=400,scrollbars=yes,resizable=yes';
    var popupWindow = window.open(popupUrl, name, windowFeatures);
    if (popupWindow != null) popupWindow.focus();
    return false;
}


function mcPerPageChanged() {
    var name = this.name;
    var listName = name.substr(0, name.length - "PerPage".length);
    var form = this.form;
    
    var perPage = form[listName + "PerPage"].value;
    var newPageNum = 1;
    if (perPage == 0) {
       newPageNum = 0;
    }
         
    var url = form.action +
       "?" + listName + "PerPage=" + perPage +
       "&" + listName + "PageNum=" + newPageNum;
           
    mcReplaceMainBodyForm(url);

    return false;
}

function mcSelectAll() {
   $("input.selectCheck", this.form).each(
         function() { this.checked = true; }
      );
   return false;
}


function bvcomSubmitEventCancel() {
    var form = this.form;
    if (form) {
       var eventField = form.event;
       if (eventField) {
          eventField.value = "cancel";
       }
       form.submit();
    }
}


function mcFixUp(scope) {
    // alert("mcFixUp invoked: " + scope);
    $("a.selfLink", scope).click(function() {
            return mcReplaceForm(this.href, '#bvmcMainBody');
        });

    $("a.selfActionLink", scope).click(function() {
            var confirmStr = mcGetChildComment(this);
            if ( (confirmStr == null) || (confirm(confirmStr)) ) {
               return mcReplaceForm(this.href, '#bvmcMainBody');
            }
            return false;
        });

    // $("a.selfChangeLink", scope).click(function() {
    //         return mcReplaceForm(this.href, '#bvmcMainBody');
    //     });

    // $("a.selfChangeActionLink", scope).click(function() {
    //         var confirmStr = mcGetChildComment(this);
    //         if ( (confirmStr == null) || (confirm(confirmStr)) ) {
    //            return mcReplaceForm(this.href, '#bvmcMainBody');
    //         }
    //         return false;
    //     });

    $("a.open800x400", scope).click(mcOpen800x400Window);
    $("div.pagination select", scope).change(mcPerPageChanged);
    $("input.selectAll", scope).click(mcSelectAll);
    $(".stripeTableBody tr:nth-child(even)", scope).addClass("listRowEven");
    $(".stripeTableBody tr", scope).hover(mcTableRowMouseOver, mcTableRowMouseOut);
    
    $(".buttonSubmitCancel", scope).each(
       function() {
          $(this).click(bvcomSubmitEventCancel);
       }
    );
}



function mcFixUpDoc() {
   mcFixUp(this);
}

$(document).ready(mcFixUpDoc);