﻿    function GetGeneratedItemsById(strID, strTagName) {
    // GetGeneratedItemsById:  Get ASP-generated HTML item(s) by ID fragment.
    // strID:  The ID fragment (set in the ASP: tag)
    // strTagName:  The name of the generated tag (div, span, textarea, etc)
    // returns:  array of items or false if none found.
     //alert(strID + ", " + strTagName);
      var arrReturnItems = new Array();
     
      var ptrItems = document.getElementsByTagName(strTagName);

      var i;
      var j = 0;
      for (i = 0; i < ptrItems.length; i++) {
      
        var strThisFullID = ptrItems[i].id;
        var intThisLen = strThisFullID.length;
        var intScoreIndex = strThisFullID.lastIndexOf("_");
        intScoreIndex++;
        var strCurrentID = strThisFullID.slice(intScoreIndex, intThisLen);
        if (strCurrentID == strID) {
          arrReturnItems[j] = ptrItems[i];
          j++;
        }
      }
      if (j > 0) {
        return(arrReturnItems);
      } else {
        return(false);
      }
    }
    
    function SaveChanges() {
    // SaveChanges:  Save changes made on page.
      globalBoolIsButtonclick = true;
      var arrSave = GetGeneratedItemsById("btnSave", "a");
      if (arrSave) {
        var ptrSave = arrSave[0];
        var strHref = ptrSave.href;
        window.location = strHref;
      }
    }
    
    function ContentHasChanged() {
    // ContentHasChanged:  Method called when content has been changed.
      document.getElementById("changedSpan").innerHTML = "Page is changed. Click SAVE to save changes.";
      window.onbeforeunload = function() {
        // alert('globalBoolIsButtonClick = ' + globalBoolIsButtonClick);
        if (!globalBoolIsButtonClick) {
          if(confirm("Page has changed. Do you wish to save changes?\n\nClick OK to save changes.\nClick Cancel to discard changes.")) {
            SaveChanges();
          }
        }
      }
    }
    
    function UpdateCountSpan(strID, strSpanID) {
        
      var arrFields = GetGeneratedItemsById(strID, "textarea");
       
      if (arrFields) {
        var ptrField = arrFields[0];
        var ptrSpan = document.getElementById(strSpanID);
        ptrSpan.innerHTML = ptrField.value.length;
        
      }
    }
    
    function BindUpdateEvents() {
    // BindUpdateEvents:  Bind the update events to the various CMS nodes.
    //
    // Textareas in header:  need length counters and ContentHasChanged.
      var ptrTitle = GetGeneratedItemsById("txtTitle", "textarea");
      if (ptrTitle) {
        for (i = 0; i < ptrTitle.length; i++) {
          ptrTitle[i].ononkeydown = function() {
            UpdateCountSpan("txtTitle", "titleSpan");
            ContentHasChanged();
          }
          ptrTitle[i].onkeyup = function() {
            UpdateCountSpan("txtTitle", "titleSpan");
            ContentHasChanged();
          }
        }
      }
      var ptrKeywords = GetGeneratedItemsById("txtKeywords", "textarea");
      if (ptrKeywords) {
        for (i = 0; i < ptrKeywords.length; i++) {
          ptrKeywords[i].onkeydown = function() {
            ContentHasChanged();
          }
          ptrKeywords[i].onkeyup = function() {
            ContentHasChanged();
          }
        }
      }
      var ptrDescription = GetGeneratedItemsById("txtDesc", "textarea");
      if (ptrDescription) {
        for (i = 0; i < ptrDescription.length; i++) {
          ptrDescription[i].onkeydown = function() {
            UpdateCountSpan("txtDesc", "descriptionSpan");
            ContentHasChanged();
          }
          ptrDescription[i].onkeyup = function() {
            UpdateCountSpan("txtDesc", "descriptionSpan");
            ContentHasChanged();
          }
        }
      }

      // Content Nodes
      // Attach events to EDIT buttons.
      var ptrButtons = GetGeneratedItemsById("btnEdit", "a");
      if (ptrButtons) {
        var i; 
        for (i=0; i < ptrButtons.length; i++) {
          ptrButtons[i].onclick = function() {
            globalBoolIsButtonClick = true;
            // alert('globalBoolIsButtonClick = ' + globalBoolIsButtonClick);
            ContentHasChanged();
          }
        }
      }

      // Buttons:  These are all okay to click on, so we must add
      // to them each an event that sets the globalBoolIsButtonClick
      // variable to true so we won't trip the unsaved changes dialogue
      // when we leave the page.
      var ptrButtons = GetGeneratedItemsById("btnClose", "a");
      if (ptrButtons) {
        for (i = 0; i < ptrButtons.length; i++) {
          ptrButtons[i].onclick = function() {
            globalBoolIsButtonClick = true;
          }
        }
      }    
      ptrButtons = GetGeneratedItemsById("btnEditMeta", "a");
      if (ptrButtons) {
        for (i = 0; i < ptrButtons.length; i++) {
          ptrButtons[i].onclick = function() {
            globalBoolIsButtonClick = true;
          }
        }
      }
      ptrButtons = GetGeneratedItemsById("btnSave", "a");
      if (ptrButtons) {
        for (i = 0; i < ptrButtons.length; i++) {
          ptrButtons[i].onclick = function() {
            globalBoolIsButtonClick = true;
          }
        }
      }
    }