// this file should contain all generic javascript functions that are used all over
//================  displayResults  =========================================
function displayResults(htmlData, where) {
  var results = document.getElementById(where);
  if(htmlData != '') {
    results.style.display = '';
    results.innerHTML     = htmlData;
  } else {
    results.style.display = 'none';
  }
}
//================  showElement  =============================================
function showElement(strID) {
  try { document.getElementById(strID).style.display = ""; } catch(ex) {}
}

//================  hideElement  =============================================
function hideElement(strID) {
  try { document.getElementById(strID).style.display = "none"; } catch(ex) {}
}

//================  checkDate  ===============================================
function checkDate(pre, formName) {
  var formObj = document.forms[formName];
  eval("var month = formObj." + pre + "Month;");
  eval("var day   = formObj." + pre + "Day;");
  eval("var year  = formObj." + pre + "Year;");
  if ((month.selectedIndex ==  4 || month.selectedIndex ==  6 || month.selectedIndex ==  9 || month.selectedIndex == 11) &&  day.selectedIndex > 30) {
    day.selectedIndex = 30;
  } else if (month.selectedIndex == 2) {
    if (isLeapYear(year.value) && day.selectedIndex > 29) day.selectedIndex = 29;
    else if (day.selectedIndex > 28)                      day.selectedIndex = 28;
  }
}

//================  isLeapYear  ==============================================
function isLeapYear(theYear) {
  if (theYear % 400 == 0) return true;
  if (theYear % 100 == 0) return false;
  if (theYear %   4 == 0) return true;
  return false;
}

//================  getDateString  ===========================================
function getDateString(y_obj,m_obj,d_obj) {
  var y = y_obj.options[y_obj.selectedIndex].value;
  var m = m_obj.options[m_obj.selectedIndex].value;
  var d = d_obj.options[d_obj.selectedIndex].value;
  if (y=='' || m=='') { return null; }
  if (d=='') { d=1; }
  return str = y + '-' + m + '-' + d;
}

//================  CleanWordHTML  ===========================================
function CleanWordHTML( str ) {
  str = str.replace(/<o:p>\s*<\/o:p>/g, "") ;
  str = str.replace(/<o:p>.*?<\/o:p>/g, "&nbsp;") ;
  str = str.replace( /\s*mso-[^:]+:[^;"]+;?/gi, "" ) ;
  str = str.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, "" ) ;
  str = str.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;
  str = str.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, "" ) ;
  str = str.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
  str = str.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
  str = str.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
  str = str.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
  str = str.replace( /\s*tab-stops:[^;"]*;?/gi, "" ) ;
  str = str.replace( /\s*tab-stops:[^"]*/gi, "" ) ;
  str = str.replace( /\s*face="[^"]*"/gi, "" ) ;
  str = str.replace( /\s*face=[^ >]*/gi, "" ) ;
  str = str.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, "" ) ;
  str = str.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
  str = str.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
  str = str.replace( /\s*style="\s*"/gi, '' ) ;
  str = str.replace( /<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;' ) ;
  str = str.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;
  str = str.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
  str = str.replace( /<SPAN\s*>(.*?)<\/SPAN>/gi, '$1' ) ;
  str = str.replace( /<FONT\s*>(.*?)<\/FONT>/gi, '$1' ) ;
  str = str.replace(/<\\?\?xml[^>]*>/gi, "") ;
  str = str.replace(/<\/?\w+:[^>]*>/gi, "") ;
  str = str.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
  str = str.replace( /<H1([^>]*)>/gi, '' ) ;
  str = str.replace( /<H2([^>]*)>/gi, '' ) ;
  str = str.replace( /<H3([^>]*)>/gi, '' ) ;
  str = str.replace( /<H4([^>]*)>/gi, '' ) ;
  str = str.replace( /<H5([^>]*)>/gi, '' ) ;
  str = str.replace( /<H6([^>]*)>/gi, '' ) ;
//  str = str.replace( /<\/H\d>/gi, '<br>' ) ; //remove this to take out breaks where Heading tags were
  str = str.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;
  str = str.replace( /<(B|b)>&nbsp;<\/\b|B>/g, '' ) ;
  str = str.replace( /<([^\s>]+)[^>]*>\s*<\/\1>/g, '' ) ;
  str = str.replace( /<([^\s>]+)[^>]*>\s*<\/\1>/g, '' ) ;
  str = str.replace( /<([^\s>]+)[^>]*>\s*<\/\1>/g, '' ) ;
  //some RegEx code for the picky browsers
  var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)","gi") ;
  str = str.replace( re, "<div$2</div>" ) ;
  var re2 = new RegExp("(<font|<FONT)([^*>]*>.*?)(<\/FONT>|<\/font>)","gi") ;
  str = str.replace( re2, "<div$2</div>") ;
	//  str = str.replace( /size|SIZE = ([\d]{1})/g, '' ) ; // stupid line removes all references to size.. wtf?
  return str ;
}

