<!-- Begin Javascript
// MY SCRIPTS
// Use this area to add new scripts that you need for your site

  // Namespace used to avoid naming collisions.
  var MyScript = {};

  MyScript.readCookie = function(name) {
    var value = "";

    var allCookies = document.cookie;
    var index = allCookies.indexOf(name + "=");

    if (index != -1) {
      var start = index + name.length + 1;

      var end = allCookies.indexOf(";", start);
      if (end == -1) { end = allCookies.length; }

      value = decodeURIComponent(allCookies.substring(start, end));
    }

    return value;    
  }

  // Displays an alert box type message.
  MyScript.displayUserMsgAlert = function(message, title, container) {
    var title = title || "Message";
    var container = $(container || "mainBody");
       
    if (container.select("#userMsgAlert").size() == 0) {
      var content = "<div id='userMsgAlert' style='margin-left:0; display:none'>"
                  + "  <div id='userMsgAlertTitle'>" + title + "</div>"
                  + "  <div id='userMsgAlertContentArea'>"
                  + "    <div id='userMsgAlertContent'>" + message + "</div>"
                  + "    <input type='button' id='userMsgAlertButton' value='OK'"
                  + "           onclick=\"$('userMsgAlert').hide(); if (typeof(alertClosed) == 'function') alertClosed();\"/>"
                  + "  </div>"
                  + "</div>";
      
      container.insert(content);
    }
    else {
      $("userMsgAlertTitle").update(title);
      $("userMsgAlertContent").update(message);
    }
    
    MyScript.displayPopUp("userMsgAlert", "userMsgAlertTitle", "userMsgAlertButton");
  }

  // Positions and displays "popUpContainer" in the middle of the page.  The "draggableHandle" and
  // "focusField" parameters are optional.
  MyScript.displayPopUp = function(popUpContainer, draggableHandle, focusField) {
    if (draggableHandle) { 
      new Draggable(popUpContainer, { 
        handle: draggableHandle, 
        onEnd: function() { if (focusField) $(focusField).activate(); } 
      }); 
    }
    
    var position = MyScript.calculatePageCenter(popUpContainer);

    if (!$(popUpContainer).visible()) {
      $(popUpContainer).setStyle({top: position.top + "px", left: position.left + "px"});
      $(popUpContainer).show();
      if (focusField) { $(focusField).activate(); }
    }
    else if (position.elementOffset.top < 0 || position.elementOffset.bottom > position.viewportDimension.height) {
      new Effect.Move(popUpContainer, { x: parseInt($(popUpContainer).getStyle("left")),
                                        y: position.top, mode:"absolute",
                                        afterFinish: function() { if (focusField) $(focusField).activate(); } });
    }
    else {
      if (focusField) { $(focusField).activate(); }
    }  
  }

  // Calculate top left coordinates to position "element" in center of page.
  MyScript.calculatePageCenter = function(element) {
    var documentOffset    = document.viewport.getScrollOffsets();
    var elementOffset     = $(element).viewportOffset();
    var viewportDimension = document.viewport.getDimensions();
    var elementDimension  = $(element).getDimensions();

    elementOffset.bottom = elementOffset.top + elementDimension.height;

    var top = Math.floor(documentOffset.top + (viewportDimension.height / 2) - (elementDimension.height / 2));
    var left = Math.floor((viewportDimension.width / 2) - (elementDimension.width / 2));

    return {top: top, left: left, elementOffset: elementOffset, viewportDimension: viewportDimension};
  }

  // Each property in "errorMsgs" is a field name and its value is an error message.
  MyScript.displayErrorMsgs = function(errorMsgs, errorMsgContainer) {
    var msgDisplay = "";
    var fieldNames = Object.keys(errorMsgs);

    if (fieldNames.length) {
      if (fieldNames.length == 1) {
        msgDisplay = errorMsgs[fieldNames[0]];
      }
      else {
        msgDisplay = "<ul>";
        for (var i = 0; i < fieldNames.length; i++) {
          msgDisplay += "<li>" + errorMsgs[fieldNames[i]] + "<\/li>"
        }
        msgDisplay += "<\/ul>";  
      }
      
      MyScript.setFieldLabelColor(fieldNames, "red");
      
      $(errorMsgContainer).update(msgDisplay);
      $(errorMsgContainer).style.display = "block";
      
      try {
        $(fieldNames[0]).activate();
      } catch(e) {}
    }
  }

  // Set color of field labels
  MyScript.setFieldLabelColor = function(fieldNames, fieldColor) {
    $A(fieldNames).each(function(fieldName) {
      try {
        $$("label[for^=" + fieldName + "]")[0].setStyle({color:fieldColor});
      } catch(e) {}      
    });  
  }

  // Builds an error msg string from the Prototype Ajax response object.
  MyScript.formatAjaxErrorMsg = function(ajaxResponse) {
    return "Response Code:  " + ajaxResponse.status + "\n"
         + "Description:  "   + ajaxResponse.statusText + "\n\n"
         + "Error Message:\n" + ajaxResponse.responseText;
  }

  // Are there user messages displayed?
  MyScript.messagesFound = function() {
    var container = $$('div#messages')[0];
    return container && container.cleanWhitespace().firstChild;
  }

  MyScript.clearMessages = function() {
    if (MyScript.messagesFound()) {
      $$('div#messages')[0].remove();
    }
  }

  // Are there error messages displayed?
  MyScript.errorsFound = function() {
    var container = $$('div#errors')[0];
    return container && container.cleanWhitespace().firstChild;
  }

  // Remove error msgs and reset color of error field labels.
  MyScript.clearErrors = function(container) {
    if (MyScript.errorsFound()) {
      var errorMsgContainer = $$('div#errors')[0];
      errorMsgContainer.next('br').remove();
      errorMsgContainer.remove();

      $(container).select('label span').each(function(e) {
        if (e.getStyle('color') == 'red') {
          e.replace(e.innerHTML);
        }
      });
    }
  }

  // Assign input focus to the first input error field found.
  MyScript.setErrorFieldFocus = function(container) {
    $(container).select('label span').each(function(e) {
      if (e.getStyle('color') == 'red') {
        $(e.up().readAttribute('for')).activate();
        throw $break;
      }
    });
  }

  // Toggle a class name on form fields as they receive and lose input focus.
  // The "className" and "excludeElements" parameters are optional.
  MyScript.setInputFocusStyle = function(formName, className, excludeElements) {    

    // Filter out unwanted form elements.
    var formElements = $(formName).getElements().reject(function(formElement) {
      return [excludeElements].flatten().indexOf(formElement.id) != -1 ||
             ['button','submit'].indexOf(formElement.readAttribute('type')) != -1
    });

    // Split form inputs into two arrays. One for select boxes and the other
    // for everything else.  [0]=Select Boxes [1]=Everything else
    formElements = formElements.partition(function(formElement) {
      return formElement.tagName == "SELECT";
    });

    className = className || "fieldInputFocus";

    // Handle IE focus events differently for select boxes.
    if (Prototype.Browser.IE) {
      formElements[0].invoke('observe', 'focusin', function(e) {
        e.element().addClassName(className);
      });    
      formElements[0].invoke('observe', 'focusout', function(e) {
        e.element().removeClassName(className);
      });    
    }
    else {
      formElements[0].invoke('observe', 'focus', function(e) {
        e.element().addClassName(className);
      });    
      formElements[0].invoke('observe', 'blur', function(e) {
        e.element().removeClassName(className);
      });    
    }
    
    // Set focus event observers for all other form elements.
    formElements[1].invoke('observe', 'focus', function(e) { 
      e.element().addClassName(className);
    });
    formElements[1].invoke('observe', 'blur', function(e) {
      e.element().removeClassName(className);
    });
  }

  // Display an input mask in a field when it's empty and apply a class name.
  // The mask and class name are removed when the field is populated.
  MyScript.applyFieldMask = function(elements, fieldMask, className) {
    className = className || "fieldMask";
    
    [elements].flatten().each(function(element) {
      if ($F(element).strip().length == 0) {
        element.addClassName(className).value = fieldMask;
      }
      
      element.observe('focus', function() {
        if ($F(this) == fieldMask) {
          this.clear().removeClassName(className).activate();
        }        
      });

      element.observe('blur', function() {
        if ($F(this).strip().length == 0) {
          this.addClassName(className).value = fieldMask;
        }
      });
    });    
  }
  
////////////////////re-loads an image ////////////////////////////////
// imgId - is the id of the image
// src - is the new source url of the image
  function reloadImage(imgId,src) {
  	var srcurl=src+'&nc='+new Date().getTime();
        document.getElementById(imgId).src = srcurl;
    }
    
    function reloadImage() {
    	var srcurl='/public.ejs?command=PublicCaptcha&nc='+new Date().getTime();
    	document.getElementById('cptImg').src = srcurl;
    }
 //////////////////////////////////////////////////////////////////  

// End Javascript -->
