var bydayAr = new Array();
var bymonthdayAr = new Array();
var bysetposAr = new Array();
var bydayLabels = new Array("SU","MO","TU","WE","TH","FR","SA");
var bydayTrans = new Array( "SU"
, "MO"
, "TU"
, "WE"
, "TH"
, "FR"
, "SA"
);
// do a little form verifying
function validate_and_submit () {
  if ( form.name.value == "" ) {
    form.name.select ();
    showTab( 'details' );
    form.name.focus();
    alert ( "You have not entered a Brief Description.");
    return false;
  }
  if ( form.timetype &&
    form.timetype.selectedIndex == 1 ) {
    h = parseInt (isNumeric( form.entry_hour.value ));
    m = parseInt (isNumeric( form.entry_minute.value ));

    // Ask for confirmation for time of day if it is before the user's
    // preference for work hours.
    if ( h < 8 && form.entry_ampmA.checked ) {    if ( ! confirm ( "The time you have entered begins before your preferred work hours. Is this correct? "))
      return false;
   }
  }

  // is there really a change?
  changed = false;
  for ( i = 0; i < form.elements.length; i++ ) {
    field = form.elements[i];
    switch ( field.type ) {
      case "radio":
      case "checkbox":
        if ( field.checked != field.defaultChecked )
          changed = true;
        break;
      case "text":
      case "textarea":
        if ( field.value != field.defaultValue )
          changed = true;
        break;
      case "select-one":
 //Don't register a percentage change
      if ( form.elements[i].name == "percent")
        break;
//      case "select-multiple":
        for( j = 0; j < field.length; j++ ) {
          if ( field.options[j].selected != field.options[j].defaultSelected )
            changed = true;
        }
        break;
    }
  }
  if ( changed ) {
    form.entry_changed.value = "yes";
  }

//Add code to make HTMLArea code stick in TEXTAREA
 if (typeof editor != "undefined") editor._textArea.value = editor.getHTML ();

 //Check if Event date is valid
  var d = form.day.selectedIndex;
  var vald = form.day.options[d].value;
  var m = form.month.selectedIndex;
  var valm = form.month.options[m].value;
  var y = form.year.selectedIndex;
  var valy = form.year.options[y].value;
  var c = new Date(valy,valm -1,vald);
 if ( c.getDate () != vald ) {
   alert ("Invalid Event Date.");
  form.day.focus ();
   return false;
 }
 //Repeat Tab enabled, Select all of them
 if ( form.rpttype ) {
   for ( i = 0; i < elements['exceptions[]'].length; i++ ) {
     elements['exceptions[]'].options[i].selected = true;
   }
 }

 if ( form.due_day ) {
   //Check if Event due date is valid
   var d = form.due_day.selectedIndex;
   var vald = form.due_day.options[d].value;
   var m = form.due_month.selectedIndex;
   var valm = form.due_month.options[m].value;
   var y = form.due_year.selectedIndex;
   var valy = form.due_year.options[y].value;
   var c = new Date(valy,valm -1,vald);
   if ( c.getDate () != vald ) {
     alert ("Invalid Event Date.");
     form.due_day.focus ();
     return false;
   }
 }

 //set byxxxList values for submission
 var bydayStr = '';
 for ( bydayKey in bydayAr ) {
   if ( bydayKey == isNumeric ( bydayKey ) )
     bydayStr = bydayStr + ',' + bydayAr[bydayKey];
 }
 if ( bydayStr.length > 0 )
   elements['bydayList'].value = bydayStr.substr(1);
 //set bymonthday values for submission
 var bymonthdayStr = '';
 for ( bymonthdayKey in bymonthdayAr ) {
   if ( bymonthdayKey == isNumeric ( bymonthdayKey ) )
     bymonthdayStr = bymonthdayStr + ',' + bymonthdayAr[bymonthdayKey];
 }
 if ( bymonthdayStr.length > 0 )
   elements['bymonthdayList'].value = bymonthdayStr.substr(1);

 //set bysetpos values for submission
 var bysetposStr = '';
 for ( bysetposKey in bysetposAr ) {
   if ( bysetposKey == isNumeric ( bysetposKey ) )
     bysetposStr = bysetposStr + ',' + bysetposAr[bysetposKey];
 }
 if ( bysetposStr.length > 0 )
   elements['bysetposList'].value = bysetposStr.substr(1);

 form.submit ();
 return true;
}

function timetype_handler () {
  if ( ! form.timetype )
   return true;
  var i = form.timetype.selectedIndex;
  var val = form.timetype.options[i].text;
  if ( i != 1 ) {
    // Untimed/All Day
    makeInvisible ( "timeentrystart" );
    if ( form.timezonenotice ) {
      makeInvisible ( "timezonenotice" );
    }
    if ( form.duration_h ) {
      makeInvisible ( "timeentryduration" );
    } else {
      makeInvisible ( "timeentryend" );
    }
  } else {
    // Timed Event
    makeVisible ( "timeentrystart" );
    if ( form.timezonenotice ) {
      makeVisible ( "timezonenotice" );
    }

    if ( form.duration_h ) {
      makeVisible ( "timeentryduration" );
    } else {
      makeVisible ( "timeentryend" );
    }
  }
}

function rpttype_handler () {
  //Repeat Tab disabled
  if ( ! form.rpttype ) {
    return;
  }
  var expert = ( document.getElementById('rptmode').checked);
  var i = form.rpttype.selectedIndex;
  var val = form.rpttype.options[i].text;
  //alert ( "val " + i + " = " + val );
  //i == 0 none
  //i == 1 daily
  //i == 2 weekly
  //i == 3,4,5 monthlyByDay, monthlyByDate, monthlyBySetPos
  //i == 6 yearly
  //i == 7 manual  Use only Exclusions/Inclusions
 //Turn all off initially
  makeInvisible ( "rpt_mode" );
  makeInvisible ( "rptenddate1", true );
  makeInvisible ( "rptenddate2", true );
  makeInvisible ( "rptenddate3", true );
  makeInvisible ( "rptfreq", true );
  makeInvisible ( "weekdays_only" );
  makeInvisible ( "rptwkst" );
  //makeInvisible ( "rptday", true );
  makeInvisible ( "rptbymonth", true );
  makeInvisible ( "rptbydayln", true );
  makeInvisible ( "rptbydayln1", true );
  makeInvisible ( "rptbydayln2", true );
  makeInvisible ( "rptbydayln3", true );
  makeInvisible ( "rptbydayln4", true );
  makeInvisible ( "rptbydayextended", true );
  makeInvisible ( "rptbymonthdayextended", true );
  makeInvisible ( "rptbysetpos", true );
  makeInvisible ( "rptbyweekno", true );
  makeInvisible ( "rptbyyearday", true );
  makeInvisible ( "rptexceptions", true );
  //makeInvisible ( "select_exceptions_not", true );
  if ( i > 0 && i < 7 ) {
    //always on
    makeVisible ( "rptenddate1", true );
    makeVisible ( "rptenddate2", true );
    makeVisible ( "rptenddate3", true );
    makeVisible ( "rptfreq", true );
    makeVisible ( "rptexceptions", true);
    makeVisible ( "rpt_mode" );

    if ( i == 1 ) { //daily
      makeVisible ( "weekdays_only" );
    }

    if ( i == 2 ) { //weekly
      makeVisible ( "rptbydayextended", true );
      if (expert ) {
        makeVisible ( "rptwkst" );
      }
    }
   if ( i == 3 ) { //monthly (by day)
     if (expert ) {
        makeVisible ( "rptwkst" );
        makeVisible ( "rptbydayln", true );
        makeVisible ( "rptbydayln1", true );
        makeVisible ( "rptbydayln2", true );
        makeVisible ( "rptbydayln3", true );
        makeVisible ( "rptbydayln4", true );
     }
   }

   if ( i == 4 ) { //monthly (by date)
     if (expert ) {
       makeVisible ( "rptbydayextended", true );
       makeVisible ( "rptbymonthdayextended", true );
     }
   }

   if ( i == 5 ) { //monthly (by position)
      makeVisible ( "rptbysetpos", true );
   }

  if ( i == 6 ) {  //yearly
    if (expert ) {
        makeVisible ( "rptwkst" );
        makeVisible ( "rptbymonthdayextended", true );
        makeVisible ( "rptbydayln", true );
        makeVisible ( "rptbydayln1", true );
        makeVisible ( "rptbydayln2", true );
        makeVisible ( "rptbydayln3", true );
        makeVisible ( "rptbydayln4", true );
        makeVisible ( "rptbyweekno", true );
        makeVisible ( "rptbyyearday", true );
    }
  }
  if (expert ) {
    makeVisible ( "rptbydayextended", true );
    makeInvisible ( "weekdays_only" );
    makeVisible ( "rptbymonth", true );
  }
  }
  if ( i == 7 ) {
    makeVisible ( "rptexceptions", true);
  }
}

function rpttype_weekly () {
  var i = form.rpttype.selectedIndex;
  var val = form.rpttype.options[i].text;
 if ( val == "Weekly" ) {
   //Get Event Date values
   var d = form.day.selectedIndex;
   var vald = form.day.options[d].value;
   var m = form.month.selectedIndex;
   var valm = form.month.options[m].value -1;
   var y = form.year.selectedIndex;
   var valy = form.year.options[y].value;
   var c = new Date(valy,valm,vald);
   var dayOfWeek = c.getDay ();
   var rpt_day = bydayLabels[dayOfWeek];
   elements[rpt_day].checked = true;
 }
}
var tabs = new Array ();
tabs[0] = "details";
tabs[1] = "participants";
tabs[2] = "pete";
tabs[3] = "reminder";

var sch_win;

// Show Availability for the first selection
function showSchedule () {
  //var agent=navigator.userAgent.toLowerCase ();
  //var agent_isIE=(agent.indexOf("msie") > -1);
  var userlist = form.elements['participants[]'];
  var delim = '';
  var users = '';
  var cols = 9;
  //var w = 140 + ( cols * 31 );
  var w = 760;
  var h = 180;
  for ( i = 0; i < userlist.length; i++ ) {
    if (userlist.options[i].selected) {
      users += delim + userlist.options[i].value;
      delim = ',';
      h += 18;
    }
  }
  if (users == '') {
    alert("Please add a participant" );
    return false;
  }
  var features = 'width='+ w +',height='+ h +',resizable=yes,scrollbars=yes';
  var url = 'availability.php?users=' + users +
           '&form='  + 'editentryform' +
           '&year='  + form.year.value +
           '&month=' + form.month.value +
           '&day='   + form.day.options[form.day.selectedIndex].text;

  if (sch_win != null && !sch_win.closed) {
     h = h + 30;
     sch_win.location.replace( url );
     sch_win.resizeTo(w,h);
  } else {
     sch_win = window.open ( url, "showSchedule", features );
  }
}

function add_exception (which) {
 var sign = "-";
 if (which ) {
    sign = "+";
 }
 var d = form.except_day.selectedIndex;
 var vald = form.except_day.options[d].value;
 var m = form.except_month.selectedIndex;
 var valm = form.except_month.options[m].value;
 var y = form.except_year.selectedIndex;
 var valy = form.except_year.options[y].value;
 var c = new Date(valy,valm -1,vald);
 if ( c.getDate () != vald ) {
   alert ("Invalid Date");
   return false;
 }
 //alert ( c.getFullYear () + " "  + c.getMonth () + " " + c.getDate ());
 var exceptDate = String((c.getFullYear () * 100 + c.getMonth () +1) * 100 + c.getDate ());
 var isUnique = true;
 //Test to see if this date is already in the list
  with (form)
   {
      with (elements['exceptions[]'])
      {
         for (i = 0; i < length; i++)
         {
            if (options[i].text ==  "-" + exceptDate || options[i].text ==  "+" + exceptDate){
         isUnique = false;
         }
     }
   }
  }
 if ( isUnique ) {
    elements['exceptions[]'].options[elements['exceptions[]'].length]  = new Option( sign + exceptDate, sign + exceptDate );
    makeVisible ( "select_exceptions" );
    makeInvisible ( "select_exceptions_not" );
 }
}
function del_selected () {
   with (form)
   {
      with (elements['exceptions[]'])
      {
         for (i = 0; i < length; i++)
         {
            if (options[i].selected){
         options[i] = null;
         }
         } // end for loop
     if ( ! length ) {
       makeInvisible ( "select_exceptions" );
       makeVisible ( "select_exceptions_not" );
     }
     }
   } // end with document
}

function toggle_byday(ele){
  var bydaytext = bydayTrans[ele.id.substr(2,1)];
  var bydayVal = bydayLabels[ele.id.substr(2,1)];
  var tmp = '';
  if (ele.value.length > 4 ) {
    //blank
    ele.value = ele.id.substr(1,1) + bydaytext;
    tmp = ele.id.substr(1,1) + bydayVal;
  } else if (ele.value == ele.id.substr(1,1) + bydaytext) {
    //positive value
    ele.value =  (parseInt(ele.id.substr(1,1)) -6 ) + bydaytext;
    tmp = (parseInt(ele.id.substr(1,1)) -6 ) +  bydayVal;
  } else if (ele.value ==  (parseInt(ele.id.substr(1,1)) -6 ) +  bydaytext) {
    //negative value
  ele.value = "        ";
  tmp = '';
  }
  bydayAr[ele.id.substr(1)] = tmp;
}

function toggle_bymonthday(ele){
  var tmp = '';
  if (ele.value .length > 3) {
    //blank
  ele.value = tmp = ele.id.substr(10);
  } else if (ele.value == ele.id.substr(10)) {
    //positive value
  ele.value =  tmp = parseInt(ele.id.substr(10)) -32;
  } else if (ele.value ==  (parseInt(ele.id.substr(10)) -32 )) {
    //negative value
  ele.value = "     ";
  tmp = '';
  }
  bymonthdayAr[ele.id] = tmp;
}

function toggle_bysetpos(ele){
  var tmp = '';
  if (ele.value .length > 3) {
    //blank
  ele.value = tmp = ele.id.substr(8);

  } else if (ele.value == ele.id.substr(8)) {
    //positive value
  ele.value =  tmp = parseInt(ele.id.substr(8)) -32;
  } else if (ele.value ==  (parseInt(ele.id.substr(8)) -32 )) {
    //negative value
  ele.value = "    ";
  tmp = '';
  }
  bysetposAr[ele.id.substr(8)] = tmp;
}

function toggle_until () {
  //Repeat Tab disabled
  if ( ! form.rpttype ) {
    return;
  }
 //use date
 elements['rpt_day'].disabled =
  elements['rpt_month'].disabled =
  elements['rpt_year'].disabled =
  elements['rpt_btn'].disabled =
  elements['rpt_hour'].disabled =
  elements['rpt_minute'].disabled =
  ( form.rpt_untilu.checked != true );

 //use count
 elements['rpt_count'].disabled =
  ( form.rpt_untilc.checked != true );
 if ( elements['rpt_ampmA'] ) {
   if ( form.rpt_untilu.checked ) { //use until date
     document.getElementById('rpt_ampmA').disabled = false;
     document.getElementById('rpt_ampmP').disabled = false;
   } else {
     document.getElementById('rpt_ampmA').disabled = 'disabled';
     document.getElementById('rpt_ampmP').disabled = 'disabled';
   }
  }
}

function toggle_rem_when () {
  //Reminder Tab disabled
  if ( ! form.rem_when ) {
    return;
  }
 if ( elements['reminder_ampmA'] ) {
   if ( elements['rem_when_date'].checked == true ) {
   document.getElementById('reminder_ampmA').disabled = false;
   document.getElementById('reminder_ampmP').disabled = false;
  } else {
   document.getElementById('reminder_ampmA').disabled = 'disabled';
   document.getElementById('reminder_ampmP').disabled = 'disabled';
  }
 }
 elements['rem_days'].disabled =
   elements['rem_hours'].disabled =
   elements['rem_minutes'].disabled =
   elements['rem_beforeY'].disabled =
   elements['rem_relatedS'].disabled =
   elements['rem_beforeN'].disabled =
   elements['rem_relatedE'].disabled =
   elements['rem_when_date'].checked;

 elements['reminder_day'].disabled =
   elements['reminder_month'].disabled =
   elements['reminder_year'].disabled =
   elements['reminder_btn'].disabled =
   elements['reminder_hour'].disabled =
   elements['reminder_minute'].disabled =
  ( elements['rem_when_date'].checked != true );
}

function toggle_reminders () {
  //Reminder Tab disabled
  if ( ! form.rem_when ) {
    return;
  }
  toggle_rem_when ();
  makeInvisible ( "reminder_when",true );
  makeInvisible ( "reminder_repeat", true );
  if ( elements['reminderYes'].checked == true ) {
   makeVisible ( "reminder_when", true );
   makeVisible ( "reminder_repeat", true );
  }
}

function toggle_rem_rep (){
 elements['rem_rep_days'].disabled =
 elements['rem_rep_hours'].disabled =
 elements['rem_rep_minutes'].disabled =
 ( elements['rem_rep_count'].value == 0 );
}

function editCats (  evt ) {
  if (document.getElementById) {
    mX = evt.clientX   -160;
    mY = evt.clientY  + 150;
  }
  else {
    mX = evt.pageX  -160;
    mY = evt.pageY + 150;
  }
  var MyPosition = 'scrollbars=no,toolbar=no,left=' + mX + ',top=' + mY + ',screenx=' + mX + ',screeny=' + mY;
  var cat_ids = elements['cat_id'].value;
  var user = '';
  url = "catsel.php?form=editentryform&cats=" + cat_ids;
  if (user ) {
  url += "&user=" + user;
 }
  var catWindow = window.open (url,"EditCat","width=440,height=250,"  + MyPosition);
}

function displayInValid(myvar)
{
  alert ( "You have not entered a valid time of day.");
  myvar.select ();
  myvar.focus ();
}

function isNumeric(sText)
{
   //allow blank values. these will become 0
   if ( sText.length == 0 )
     return sText;
   var validChars = "0123456789";
   var Char;
   for (i = 0; i < sText.length && sText != 99; i++)
   {
      Char = sText.charAt(i);
      if (validChars.indexOf(Char) == -1)
      {
        sText = 99;
      }
   }
   return sText;
}

function completed_handler () {
  if ( form.percent ) {
    elements['completed_day'].disabled =
      elements['completed_month'].disabled =
      elements['completed_year'].disabled =
      elements['completed_btn'].disabled =
      ( form.percent.selectedIndex != 10 || form.others_complete.value != 'yes' );
  }
}

function onLoad () {
  if ( ! document.editentryform )
	  return false;
  //define these variables here so they are valid
  form = document.editentryform;
  elements = document.editentryform.elements;
  elementlength = document.editentryform.elements.length;

  //initialize byxxxAr Objects
  if ( form.bydayList ) {
    bydayList = form.bydayList.value;
    if ( bydayList.search( /,/ ) > -1 ) {
      bydayList = bydayList.split ( ',' );
      for ( key in bydayList ) {
        if ( key == isNumeric ( key ) )
        bydayAr[bydayList[key]] = bydayList[key];
      }
    } else if ( bydayList.length > 0 ) {
      bydayAr[bydayList] = bydayList;
    }
  }

  if ( form.bymonthdayList ) {
    bymonthdayList = form.bymonthdayList.value;
    if ( bymonthdayList.search( /,/ ) > -1 ) {
      bymonthdayList = bymonthdayList.split ( ',' );
      for ( key in bymonthdayList ) {
        if ( key == isNumeric ( key ) )
          bymonthdayAr[bymonthdayList[key]] = bymonthdayList[key];
      }
    } else if ( bymonthdayList.length > 0 ) {
      bymonthdayAr[bymonthdayList] = bymonthdayList;
    }
  }

  if ( form.bysetposList ) {
    bysetposList = form.bysetposList.value;
    if ( bysetposList.search( /,/ ) > -1 ) {
      bysetposList = bysetposList.split ( ',' );
      for ( key in bysetposList ) {
        if ( key == isNumeric ( key ) )
          bysetposAr[bysetposList[key]] = bysetposList[key];
      }
    } else if ( bysetposList.length > 0 ){
      bysetposAr[bysetposList] = bysetposList;
    }
  }

  timetype_handler ();
  rpttype_handler ();
  toggle_until ();
  toggle_reminders ();
  toggle_rem_rep ();
  completed_handler ();
}
