var isAdvance = 0;
var daysofmonth = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daysofmonthLY = new Array( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function trimString (str)
{
  str = this != window? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

String.prototype.trim = trimString;

function displayResult()
{
  var resultObj = document.getElementById('result');

  resultObj.style.visibility="visible";
  resultObj.style.display="inline";
}


function doChangeLabel(idName, newLabelName)
{
  var labelObj = document.getElementById(idName);

  labelObj.innerHTML=newLabelName;
  labelObj.title= "Click for " + newLabelName;
}


function collapseAdvancedSearch(idName, loopTimes, labelName)
{
  for (i=1; i <=loopTimes ; i++)
  {
    var iframeObj = document.getElementById(idName + i);
    iframeObj.style.visibility="hidden";
    iframeObj.style.display="none";
  }

  doChangeLabel(labelName, "Advanced Search");
}

function expandAdvancedSearch(idName, loopTimes, labelName)
{
  for (i=1; i<=loopTimes ; i++)
  {
    var iframeObj = document.getElementById(idName + i);

    iframeObj.style.visibility="visible";
    iframeObj.style.display="block";
  }

  doChangeLabel(labelName, "Basic Search");
}

function fnSetValues(){
   var iHeight=window.screen.availHeight - 200 ;
   var iWidth=window.screen.availWidth -100 ;
   var sFeatures="height=" + iHeight + ",width=" + iWidth + ",top=0,left=0,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=1";
   return sFeatures;
}


function setTaggedVisible(hiddenObj)
{
  var sFieldNameOn = 'taggedSearchOn';
  var sTableNameOn = 'taggedSearchTable';
  var sFieldSetNameOn = 'taggedSearchFieldSet';
  var sTagExpand = 'taggedExpand';
  //var sFieldNameOff = 'taggedSearchOff';
  //var sLabelName = 'Tagged Search On';
  //var sHiddenField = 'param_Tagged';

  var advancedObjOn = document.getElementById(sFieldNameOn);
  var advancedTableObjOn = document.getElementById(sTableNameOn);
  var advancedFieldSetObjOn = document.getElementById(sFieldSetNameOn);
  var advancedExpandOn = document.getElementById(sTagExpand);
  //var advancedObjOff = document.getElementById(sFieldNameOff);
  //var labelObj = document.getElementById(sLabelName);
  //var hiddenObj = document.getElementById(sHiddenField);

  if (advancedObjOn.style.visibility == "visible")
  {
    advancedObjOn.style.visibility="hidden";
    advancedObjOn.style.display="none";
    advancedTableObjOn.style.visibility="hidden";
    advancedFieldSetObjOn.style.border="0px";
    advancedExpandOn.src="./images/expand.gif"
    //advancedObjOff.style.visibility="visible";
    //advancedObjOff.style.display="block";
    //labelObj.innerHTML = "Tagged Search On";
    //labelObj.title = "Click for " + labelObj.innerHTML;
    //hiddenObj.value = "no";
    document['form_iQueryForm']['param_Tagged']['value'] = "no";
    isTagged = 0;
    //alert("value off is " + hiddenObj.value);
    //alert("value off2 is " + document.getElementById('param_Tagged').value);
  }
  else
  {
    advancedObjOn.style.visibility="visible";
    advancedObjOn.style.display="block";
    advancedTableObjOn.style.visibility="visible";
    advancedFieldSetObjOn.style.border="1px solid #a9a9a9";
    advancedExpandOn.src="./images/contract.gif"
    //advancedObjOff.style.visibility="hidden";
    //advancedObjOff.style.display="none";
    //labelObj.innerHTML = "Tagged Search Off";
    //labelObj.title = "Click for " + labelObj.innerHTML;
    //hiddenObj.value = "yes";
    document['form_iQueryForm']['param_Tagged']['value'] = "yes";
    isTagged = 1;
    //alert("value on is " + hiddenObj.value);
    //alert("value on2 is " + document.getElementById('param_Tagged').value);
  }
}

function setDefaultValue()
{
  var resultsDisplayObj = document.getElementById("results_display");
  resultsDisplayObj.value = 10;
}


function set_focus(sField)
{
  var fieldObj = document.getElementById(sField).focus();
  //document.all[sField].focus();
}


function fnSetValues()
{
   var iHeight=window.screen.availHeight - 200 ;
   var iWidth=window.screen.availWidth -100 ;
   var sFeatures="height=" + iHeight + ",width=" + iWidth + ",top=0,left=0,status=yes,toolbar=no,menubar=yes,location=no,scrollbars=yes,resizable=1";
   return sFeatures;
}


// This function is used to transform date string to MM/DD/YYYY format

function transform(sDate)
{  var dDate;
   var nM;
   var sM;
   var nD;
   var sD
   var nY;
   var strDate;


   dDate = new Date(sDate);
   nM = dDate.getMonth()+1;
   nY = dDate.getFullYear();
   nD = dDate.getDate();

   sM = nM.toString();
   if (sM.length == 1) sM = "0" + sM;
   sD = nD.toString();
   if (sD.length == 1) sD = "0" + sD;

   strDate = (sD + "/" + sM + "/" + nY.toString());
   return (strDate);

}

function formatDate(date) {
    var n = 0;
    var month;
    var day;
    var year;
    var aDate;
    var newDate;
    aDate = date.split("/");
    n = aDate.length;
    switch(n) {
        case 1:
        if (aDate[0].length == 8)   // must be in form MMDDYYYY
        {
            month = aDate[0].substring(0, 2);
            day = aDate[0].substring(2, 4);
            year = aDate[0].substring(4);
        }
        newDate = month + "/" + day + "/" + year;
        break;
        case 3:
        if (aDate[0].length == 1)
        {
            month = "0" + aDate[0];
        }
        else
        {
            month = aDate[0];
        }
        if (aDate[1].length == 1)
        {
            day = "0" + aDate[1];
        }
        else
        {
            day = aDate[1];
        }
        year = aDate[2];
        newDate = month + "/" + day + "/" + year;
        break;
        default:
        // must be an invalid date input...
        newDate = date;
        break;
    }

    return newDate;
}


function formatDateold(date, sText) {
    var n = 0;
    var month;
    var day;
    var year;
    var aDate;
    var newDate;
    aDate = date.split("/");
    n = aDate.length;
    switch(n) {
        case 1:
        if (aDate[0].length == 8)   // must be in form MMDDYYYY
        {
            month = aDate[0].substring(0, 2);
            day = aDate[0].substring(2, 4);
            year = aDate[0].substring(4);
        }
        newDate = month + "/" + day + "/" + year;
        break;
        case 3:

        if (aDate[0].length == 1)
        {
            month = "0" + aDate[0];
        }
        else
        {
            month = aDate[0];
        }

        if (aDate[1].length == 1)
        {
            day = "0" + aDate[1];
        }
        else
        {
            day = aDate[1];
        }
        year = aDate[2];
        newDate = month + "/" + day + "/" + year;
        break;
        default:
        // must be an invalid date input...
        newDate = date;
        break;
    }

    if (newDate != "") {
        var month = newDate.substring(0, 2) - 0;
        var slash1 = newDate.substring(2, 3);
        var day = newDate.substring(3, 5) - 0;
        var slash2 = newDate.substring(5, 6);
        var year = newDate.substring(6, 10);


        if ((newDate.length != 10) || (slash1 != "/") || (slash2 != "/")) {
            alert (sText + " date must be in mm/dd/yyyy or mmddyyyy format.");
            return ('F');
        }
        var j = newDate.length - 1;
        while (j >= 0) {
            if (newDate[j] == ".") {
                alert (sText + " date must be in mm/ddd/yyyy or mmddyyyy format.");
                return ('F');
            }
            j--;
        }
        if (year<1999) {
            alert ("Invalid " + sText.toLowerCase() + " year value." + sText + " year must be 1999 or later.");
            return ('F');
        }
        if (month<1 || month>12) {
            alert (sText + " month must be between 01 and 12.");
            return ('F');
        }
        if ( (LeapYear(year) && (day > daysofmonthLY[month-1])) || (!LeapYear(year) && (day > daysofmonth[month-1])) ) {
            alert (sText + " day not valid for month/year.");
            return ('F');
        }
    }
    return newDate;
}

function LeapYear(year)
{
  if ((year/4) != Math.floor(year/4)) {
    return (false);
  } else {
    if (((year/100) == Math.floor(year/100)) && ((year/400) != Math.floor(year/400))) {
      return (false);
    } else {
      return (true);
    }
  }
}

function checkDateFormat(date, sText, sBoxName)
{
  re = /^(0[1-9]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/](19|20)\d\d$/;

  if ( !re.test(date) && date != "mm/dd/yyyy" && date != "" )
  {
    msg = "Date in " + sText + ": field must be in mm/dd/yyyy format.";
    alert(msg);
    sBoxName.value= 'mm/dd/yyyy';
    sBoxName.focus();
  }
  if (re.test(document.getElementById('param_iFromDate').value) && re.test(document.getElementById('param_iToDate').value))
  {
    checkDateRange(document.getElementById('param_iFromDate'), document.getElementById('param_iToDate'));
  }
}

function checkDateRange(startDateObj, endDateObj)
{
  var startDate = startDateObj.value;
  var endDate = endDateObj.value;
  var dsDate;
  var deDate;

  month = startDate.substring(0, 2);
  day = startDate.substring(3, 5);
  year = startDate.substring(6);
  month = month - 1;

  dsDate = new Date();
  dsDate.setMonth(month);
  dsDate.setDate(day);
  dsDate.setFullYear(year);

  month = endDate.substring(0, 2);
  day = endDate.substring(3, 5);
  year = endDate.substring(6);
  month = month - 1;

  deDate = new Date();
  deDate.setMonth(month);
  deDate.setDate(day);
  deDate.setFullYear(year);

  if (deDate < dsDate) {
    alert("End date must be later than Start date");
  }
}
