<!--
//var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
var g_firstDstDate = 'empty';    // Start of daylight savings as mm/dd/yy HH:MM:SS ('' if none)
var g_secondDstDate = 'empty';   // End of daylight savings as mm/dd/yy HH:MM:SS ('' if none)
var g_months = [ 'January(01)', 'February(02)', 'March(03)', 'April(04)', 'May(05)', 'June(06)', 'July(07)', 'August(08)', 'September(09)', 'October(10)', 'November(11)', 'December(12)' ];

//************************************************************
document.getElementsByName = function (actualName)
{ // Get an array of reference to elements of this type ('a', 'input' and so forth)
var unFiltered = document.getElementsByTagName('*');
var filtered = [];
for (i = 0; i < unFiltered.length; i++)
  {
  if (unFiltered[i].getAttribute('name') == actualName)
    {
    filtered.push(unFiltered[i]);
    }
  }
return filtered;
}


//************************************************************
function detectGMTOffset()
{  // Returns the offset to GMT
var currentDate = new Date()
var date1 = new Date(currentDate.getFullYear(), 0, 1, 0, 0, 0, 0);
var temp = date1.toGMTString();
var date2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
return((date1 - date2) / (1000.0 * 60.0 * 60.0));
}


//************************************************************
function detectDaylightSavings()
{  // Returns True (1) if Daylight savings time is locally used
var currentDate = new Date()
var jan_localms = new Date(currentDate.getFullYear(), 0, 1, 0, 0, 0, 0);
var jun_localms = new Date(currentDate.getFullYear(), 6, 1, 0, 0, 0, 0);
var temp = jan_localms.toGMTString();
var jan_gmtms = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
var temp = jun_localms.toGMTString();
var jun_gmtms = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
   // 3600000 = (1000 * 60 * 60) = ms per hour
var WinterGMToffset = (jan_localms - jan_gmtms) / 3600000;
var SummerGMToffset = (jun_localms - jun_gmtms) / 3600000;
//alert('Summer GMT offset' + SummerGMToffset + ' vs.  Winter GMT offset ' + WinterGMToffset);
return (SummerGMToffset == WinterGMToffset) ? false : true;
}


//************************************************************
function makeGMTOffsetList()
{  // Makes the HTML select list
var offset_list = [-12.0, -11.0, -10.0, -9.0, -8.0, -7.0, -6.0, -5.0, -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0 ,4.0, 5.0, 5.5, 6.0, 6.5, 7.0, 8.0, 9.0, 9.5, 10.0, 11.0, 12.0 ];
var newList = '<select name="time_offset" size="1">' + "\n";
var testvalue =  detectGMTOffset();

for(var limit = offset_list.length; 0 < limit;)
  {
  limit--;
  newList += '<option value="' + offset_list[limit] + '"';
  if(offset_list[limit] == testvalue)
    {
    newList += ' selected ';
    }
  newList += '>' + offset_list[limit] + '</option>' + "\n";
  }
  
newList += '</select>' + "\n";
this.document.write(newList);
} 


//************************************************************
function makeDaylightOptions()
{  // Makes the HTML select list
var newList = '<select name="daylightsavings" size="1">';
if(true == detectDaylightSavings())
  {
  newList += '<option value="Yes">Yes</option>';
  newList += '<option value="No">No</option>';
  } else
  {
  newList += '<option value="No">No</option>';
  newList += '<option value="Yes">Yes</option>';
  }
newList += '</select>' + "\n";
this.document.write(newList);
} 


//************************************************************
function makeDurationList(setValue)
{  // Makes the list for how much captioning is required(-1 to
   //   check cookie, decimal number to preselect duration)
var preset = parseFloat(setValue);

if(-1.0 == setValue)
  {  // Preload from cookie if requested
  var theCookie = getMarketCookie();
  if('undefined' != typeof(theCookie))
    {
    var preset = 1 * theCookie.split('|')[3]; // [0] = mm/dd/yyy,  [1] = hh:mm,  [2] = timeZone,  [3] = duration
    } else
    {
    preset = 1.0;
    }
  }
  
var newList = '<select name="requestDuration" id="requestDurationID" size="1">' + "\n";
var increment = 0.5;

for(var currentValue =  0.5; 24.0 >= currentValue; currentValue += increment)
  {
  if(preset == currentValue)
    {  // Preselect preset
    newList += '<option value="' + currentValue + '"  selected>' + currentValue + '</option>' + "\n";
    }else
    {
    newList += '<option value="' + currentValue + '">' + currentValue + '</option>' + "\n";
    }
  }
  
newList += '</select>' + "\n";

this.document.write(newList);
} 


//************************************************************
// (Watch out!  The preset date does not work on Mozilla refresh)
function makeDatePicker(setValue, name)
{  // Pick a date (set Value is -1 to use cookie or a date string (see below for more)
var currentDate = new Date();  // Safety setting in case the Cookie is not set
if(undefined == name)
  {  // Set default name prefix if none is given
  name = 'request';
  }
  
if(-1 != setValue)
  {  // Set date if given as "November 8 2005", "Nov 8, 2005", 2005-11-23 12:14:05, etc.
  if(true == RegExp('^[0-9]{4}').test(setValue))
    {  // Untangle YYYY-MM-DD into MM/DD/YYYY and keep trailing text (hopefully HH:MM:[SS])
    setValue = YMDtoDMY(setValue);
    }
  currentDate = new Date(Date.parse(setValue));  // Mozilla needs MM/DD/YYYY here
  } else
  {  // Preload from cookie if requested
  var theCookie = getMarketCookie();
  if('undefined' != typeof(theCookie))
    {
    var rawArray = theCookie.split('|'); // [0] = mm/dd/yyy,  [1] = hh:mm,  [2] = timeZone,  [3] = duration
    var dateArray = rawArray[0].split('/');
    var timeArray = rawArray[1].split(':');
    currentDate = new Date(dateArray[2], dateArray[0] - 1,
                         dateArray[1], timeArray[0], timeArray[1], 0, 0);
    }
  }
  
var index = 0;
var testindex;

// Build month selector
var newList = '<select name="' + name + 'Month" id="' + name + 'MonthID" size="1">' + "\n";
for(index = 0; 12 > index; index++)
  {
  testindex = 1 + (index * 1);  // This dance converts character to numeric and adds one
                                //  otherwise it would be concatination
  newList += '<option value="' + testindex + '"';
  if(currentDate.getMonth() == index)
    {
    newList += ' selected';     // Do not use 'selected="selected"' 
    }
  newList += '>' + g_months[index] + '</option>' + "\n";
  }
newList += '</select>' + "\n" + '<big><b>/</b></big>';

// Build day selector
newList += '<select name="' + name + 'Day" id="' + name + 'DayID" size="1">' + "\n";
for(index = 1; 32 > index; index++)
  {
  newList += '<option value="' + index + '"';
  if(currentDate.getDate() == index)
    {
    newList += ' selected';
    }
  newList += '>' + index + '</option>' + "\n";
  }
newList += '</select>' + "\n" + '<big><b>/</b></big>';

// Build year selector
newList += '<select name="' + name + 'Year" id="' + name + 'YearID" size="1">' + "\n";
for(index = 0; 4 > index; index++)
  {
  var year = index + currentDate.getFullYear();
  newList += '<option value="' + year + '">' + year + '</option>' + "\n";
  }
newList += '</select>' + "\n";

this.document.write(newList);
}



//************************************************************
// Watch out!  The preset time does not work on Mozilla refresh
function makeTimePicker(setValue, name)
{  // Pick a date (set Value is -1 to use cookie or a date string (see below for more)
var currentDate = new Date();  // Safety setting in case the Cookie is not set
var index = 0;
var rounded_minutes;

if(undefined == name)
  {  // Set default name prefix if none is given
  name = 'request';
  }

if(-1 != setValue)
  {  // Set date if given as "November 8 2005", "Nov 8, 2005", 2005-11-23 12:14:05, etc.
  if(true == RegExp('^[0-9]{4}').test(setValue))
    {  // Untangle YYYY-MM-DD into MM/DD/YYYY and keep trailing text (hopefully HH:MM:[SS])
    setValue = YMDtoDMY(setValue);
    }

  currentDate = new Date(Date.parse(setValue));
  } else
  {  // Preload from cookie if requested
  var theCookie = getMarketCookie();
  if('undefined' != typeof(theCookie))
    {
    var rawArray = theCookie.split('|'); // [0] = mm/dd/yyy,  [1] = hh:mm,  [2] = timeZone,  [3] = duration
    var dateArray = rawArray[0].split('/'); // [0] = month, [1] = day, [2] = year
    var timeArray = rawArray[1].split(':');
    currentDate = new Date(dateArray[2], dateArray[0] - 1,
                         dateArray[1], timeArray[0], timeArray[1], 0, 0);
    }
  } 

// Build hour selector
var newList = '<select name="' + name + 'Hour" id="' + name + 'HourID" size="1">' + "\n";
for(index = 0; 24 > index; index++)
  {
  newList += '<option value="' + index + '"';
  if(currentDate.getHours() == index)
    {
    newList += ' selected';     // Do not use 'selected="selected"' 
    }
  newList += '>' + ((10 > index)? ('0' + index) : index) + '</option>' + "\n";
  }
newList += '</select>' + "\n" + '<big><b>:</b></big>';

// Build minute selector
newList += '<select name="' + name + 'Minute" id="' + name + 'MinuteID" size="1">' + "\n";

rounded_minutes = 15 * parseInt((7 + currentDate.getMinutes()) / 15);
for(index = 0; 60 > index; index += 15)
  {
  newList += '<option value="' + index + '"';
  if(rounded_minutes == index)
    {
    newList += ' selected';
    }
  newList += '>' + ((0 == index)? '00' : index) + '</option>' + "\n";
  }
newList += '</select>' + "\n";

this.document.write(newList);
}


//************************************************************
function validate()
{
var entriesToTest = document.getElementsByTagName('input');
}


//************************************************************
// Daylight Savings
//   Run "DetermineSwitchDates(year)" to set the globals
//   then use giveDstStartDate() or giveDstEndDate() as
//   often as you wish to get when DST kicks in and out. 
//*******************
// Determine when daylight savings starts and stops
//  input: year [like from JS var year = new Date().getYear()]
//  output: '' (empty string) if no daylight savings
//          'mm/dd/yyyy HH:MM:SS CR/LF mm/dd/yyyy HH:MM:SS'
//************************************************************
function DetermineSwitchDates(year)
{
if (typeof(year) != 'string')
  {  // No input?  Get the current year.
  year = new Date().getYear();
  }
if (year < 1000)
  {
  year += 1900;
  }
var firstSwitch = 0;
var secondSwitch = 0;
var lastOffset = 99;

   // Loop through every month of the current year
for (i = 0; i < 12; i++)
  {
    // Fetch the timezone value for the month
  var newDate = new Date(Date.UTC(year, i, 0, 0, 0, 0, 0));
  var tz = -1 * newDate.getTimezoneOffset() / 60;

    // Capture when a timzezone change occurs
  if (tz > lastOffset)
    {
    firstSwitch = i-1;
    } else
    {
    if (tz < lastOffset)
      {
      secondSwitch = i-1;
      }
    }
  lastOffset = tz;
  }

   // Go figure out date/time occurences a minute before
   //  a DST adjustment occurs
g_secondDstDate = FindDstSwitchDate(year, secondSwitch);
g_firstDstDate = FindDstSwitchDate(year, firstSwitch);

if (g_firstDstDate == '' || g_secondDstDate == '')
  {
  g_firstDstDate = '';
  g_secondDstDate = '';
  return '';
  } else
  {
  return g_firstDstDate + "\n" + g_secondDstDate;
  }
}


//************************************************************
// Daylight Savings
//*******************
// Helper finds a point when daylight savings changes
//************************************************************
function FindDstSwitchDate(year, month)
{
   // Set the starting date
var baseDate = new Date(Date.UTC(year, month, 0, 0, 0, 0, 0));
var changeDay = 0;
var changeMinute = -1;
var baseOffset = -1 * baseDate.getTimezoneOffset() / 60;
var dstDate;

   // Loop to find the exact day a timezone adjust occurs
for (day = 0; day < 50; day++)
  {
  var tmpDate = new Date(Date.UTC(year, month, day, 0, 0, 0, 0));
  var tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;

   // Check if the timezone changed from one day to the next
  if (tmpOffset != baseOffset)
    {
    var minutes = 0;
    changeDay = day;

      // Back-up one day and grab the offset
    tmpDate = new Date(Date.UTC(year, month, day-1, 0, 0, 0, 0));
    tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;

      // Count the minutes until a timezone change occurs
    while (changeMinute == -1)
      {
      tmpDate = new Date(Date.UTC(year, month, day - 1, 0, minutes, 0, 0));
      tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;

        // Determine the exact minute a timezone change
        //  occurs
      if (tmpOffset != baseOffset)
        {
          // Back-up a minute to get the date/time just
          // before a timezone change occurs
        tmpOffset = new Date(Date.UTC(year, month,
                             day-1, 0, minutes-1, 0, 0));
        changeMinute = minutes;
        break;
        } else
        {
        minutes++;
        }
      }

       // Add a month (for display) since JavaScript counts
       //  g_months from 0 to 11
    dstDate = 1 + (1 * tmpOffset.getMonth());
       // Pad the month as needed
    if (dstDate < 10)
      {
      dstDate = "0" + dstDate;
      }
        // Add the day and year
     dstDate += '/' + tmpOffset.getDate() + '/' + year + ' ';
        // Capture the time stamp
     tmpDate = new Date(Date.UTC(year, month,
                         day - 1, 0, minutes - 1, 0, 0));
     dstDate += tmpDate.toTimeString().split(' ')[0];
     return dstDate;
     }
   }
 return '';
 }
 

//************************************************************
// Daylight Savings
//*******************
// Returns a point when daylight savings first changes.
//  Returns an empty string if no daylight saving
//    hint: use giveDstStartDate().split(' ', 1)[0] for date,
//          split(' ', 2)[1] for a time stamp (all strings)
//************************************************************
function giveDstStartDate()
{ // If DetermineSwitchDates() hasn't been called, returns DST
  //   start for the current year

if('empty' == g_firstDstDate)
  {
  DetermineSwitchDates();
  }
return g_firstDstDate;
} 


//************************************************************
// Daylight Savings
//*******************
// Returns a point when daylight savings reverts.
//  Returns an empty string if no daylight saving
//    hint: use giveDstEndDate().split(' ', 1)[0] for date,
//          split(' ', 2)[1] for a time stamp (all strings)
//************************************************************
function giveDstEndDate()
{ // If DetermineSwitchDates() hasn't been called, returns DST
  //   revert date for the current year
if('empty' == g_secondDstDate)
  {
  DetermineSwitchDates();
  }
return g_secondDstDate;
} 


//************************************************************
// Daylight Savings
//*******************
// Returns a text statement about DST.
//************************************************************
function giveDstStatement()
{
var resultStr = '';
var tempMonth = ''; 
var tempYear = ''; 
var tempArray = [];

if('' == giveDstStartDate())
  {
  resultStr = 'daylight savings time is not used';
  } else
  {

  tempArray = g_firstDstDate.split(' ')[0].split('/');
  tempMonth = g_months[tempArray[0] - 1];
  tempYear = tempArray[2];
  resultStr = 'daylight savings starts on ' + tempArray[1] +  ' ' + tempMonth.replace(/\(/, '<small><b class=\"soft\">\(') + '</b></small>  and ends on ';
  tempArray = g_secondDstDate.split(' ')[0].split('/');
  tempMonth = g_months[tempArray[0] - 1];
  resultStr += tempMonth.replace(/\(/, '<small><b class=\"soft\">\(') + '</b></small> '  + tempArray[1]  + ' during ' + tempYear;
  }
return resultStr;
}


//************************************************************
function submission()
{
var name_element = document.getElementById('requestDayID');
var textday =  name_element.value;
name_element = document.getElementById('requestMonthID');
var textmonth =  name_element.value;
name_element = document.getElementById('requestYearID');
var textyear =  name_element.value;
name_element = document.getElementById('requestHourID');
var texthour =  name_element.value;
name_element = document.getElementById('requestMinuteID');
var textminute =  name_element.value;
name_element = document.getElementById('requestDurationID');
var textduration =  name_element.value;
name_element = document.getElementById('requestZoneID');
var textzone =  name_element.value;
setMarketCookie(textmonth + '/' + textday + '/' + textyear + '|' + texthour + ':' + textminute + '|' + textzone + '|' + textduration);
//alert(textmonth + '/' + textday + '/' + textyear + "\n" + texthour + ':' + textminute + ' '  + textzone + ' for ' + textduration + ' hours ');
}



//************************************************************
//  Cookie functions
//************************************************************
function setMarketCookie(cookieValue)
{ // sets 24 hour cookie with data from globals
var expires_date = new Date();
expires_date.setTime(expires_date.getTime()+ 86400000);  // one day cookie (68400?)
document.cookie = 'CaptionMarketRequest=' + encodeURIComponent(cookieValue) + '; expires=' + expires_date.toGMTString() + '; path=/; domain=captionmarket.com';
//alert('stored ' + cookieValue);
}


function getMarketCookie()
{ // gets the 24 hour cookie & restores globals
var cookieString = document.cookie;
if(0 < cookieString.length)
  {
  cookie_value = cookieString.match ( '(^|;)[\s]*CaptionMarketRequest=([^;]*)' );
  if(null != cookie_value)
    {
    return decodeURIComponent(cookie_value[2]);
    }
//alert('recovered ' +  decodeURIComponent(cookie_value[2]));
  }
// No return statement forces what amounts to a "undef" where typeof() returned 'undefined';
}


function deleteOrderCookie()
{ // deletes the 24 hour cookie
document.cookie = "CaptionMarketRequest=; expires=0; path=/; domain=captionmarket.com";
} 



function YMDtoDMY(YMD)
{ // Takes "yyyy-mm-dd ..." and makes "mm/dd/yyyy ..."
var patt=/\D/g;

var pieces = YMD.split(' ', 2);  // Divide into date and whatever follows the space
pieces[0] = pieces[0].replace(patt,"/");  // Replace non-digits with slashes to be safe
var date_pieces = pieces[0].split('/', 3); // Divide into yyyy, mm, dd by any non-digit (now a slash) delimiter
YMD = '';
//alert('There are ' + date_pieces.length + ' date pieces in ' + date_pieces);

if(3 <= date_pieces.length)
  {  // Return an empty string if we don't have year, month & day
  YMD = date_pieces[1] + '/' + date_pieces[2] + '/' + date_pieces[0];
  if(undefined != pieces[1])
    {  // If there is any text after yyyy-mm-dd add it back in
    if('' != pieces[1])
      {
      YMD += ' ' + pieces[1];
      }
    }
  }
//alert('YMD is :' + YMD);
return YMD;
}


//-->
