var ccSpellCounter;
var ccSpellCheckList = new Array();
function ccPreSpellCheck() {
  ccSpellCounter = 0;
  var type = null, ccSpellCheckAttr = null;
  var obj;
  var style;
  for (var  i=0; i<document.forms.length; i++ ) {
    var form = document.forms[i];
    for (var j=0; j<form.elements.length; j++ ) {
      obj = form.elements[j];
      type = obj.type;
      ccSpellCheckAttr = obj.getAttribute("ccSpellCheck");

      if ( type != "text" && type != "textarea" ) {
        continue;
      }

      if (obj.disabled) {
        continue;
      }
      if (ccSpellCheckAttr != null && ccSpellCheckAttr == "no") {
        continue;
      }
      if (document.all) { //IE
        if (obj.currentStyle.visibility == "hidden") {
          continue;
        }
      } else { //Firefox, Safari
        if (window.getComputedStyle(obj, null).getPropertyValue("visibility") == "hidden") {
          continue;
        }
      }
      if (typeof(noCheckFields) != 'undefined') {
        if ( noCheckFields.indexOf(obj.name) == -1 ) {
          recordSpellObj(obj);
        }
      } else {
        recordSpellObj(obj);
      }

    }
    
  }
  
  if (ccSpellCounter > 0) {
    openWin('spell', '/cc/help_spellFrame.html', 600,250, 'location=no,toolbar=no,menubar=no,resizable=yes,scrollbars=yes,status=yes', 0, 0);
  } else {
    if (ccHasRTFChecking()) {
      ccSpellCheckRTFCounter = 0;
      ccSpellCheckRTFAreas();
    } else {
      alert(ccPreSpellCheckI18n); //i18n, "You must type an entry before you can perform a spell check."
    }
  }
}

var anyNonSpace = /\S/;
function recordSpellObj(obj) {
  var fieldText = obj.value;
  if ( fieldText == null ) {return;}
  var isChar = anyNonSpace.test(fieldText); 
  if ( isChar ) {
    ccSpellCheckList[ccSpellCounter] = obj;
    ccSpellCounter++;
  }
}

function ccHasRTFChecking() {
  return (typeof(ccRTFObjArray)!="undefined" && assocArrayLength(ccRTFObjArray)>0);
}

var ccSpellCheckRTFList;
var ccSpellCheckRTFCounter = 0;
var ccSpellCheckRTFCount = 0;
function assocArrayLength(fooArray) {
  var j =0;
  ccSpellCheckRTFList = new Array();
  for (var i in ccRTFObjArray) {
    ccSpellCheckRTFList[j] = i;
    j++;
  }
  ccSpellCheckRTFCount = j;
  return j;
}

function ccSpellCheckRTFAreas() {
  if (ccSpellCheckRTFCounter<ccSpellCheckRTFCount) {
    ccRTFSpellChecker(ccSpellCheckRTFList[ccSpellCheckRTFCounter]);
    ccSpellCheckRTFCounter++;
  }
}

ccLoadScript("js/" + ccLang + "/ccPreSpellCheck-i18n.js");