var type = "IE";	//Variable used to hold the browser name

function testbr()
{

if (navigator.userAgent.indexOf("Opera")>=0)
	{
		 location.href="http://www.be-in-time.com/main_common/browser.html";
	}
if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4 ))
	{
	 //var params = navigator.appVersion.split(";");
	 //var params1 = params[2].split(")");
	 //alert("Your browser:        " + navigator.appName + "\nBrowser version:   " + params[1] + "\nWindows version: " + params1[0] + "\n\n          Your system is ready to use \n WEB-BASED APPOINTMENT SCHEDULER");
	} 
else 
	{
	 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 5 ))
		{
		 //alert("Your browser:        " + " Netscape / Mozilla" + "\nBrowser version:   " + "NN7+ or MO1.4+" +  "\n\n          Your system is ready to use \n WEB-BASED APPOINTMENT SCHEDULER");
	 	}
	 else
		 location.href="http://www.be-in-time.com/main_common/browser.html";
	}		
}

//detects the capabilities of the browser
function BrowserSniffer() {
	if (navigator.userAgent.indexOf("Opera")!=-1 && document.getElementById) type="OP";	//Opera
	else if (document.all) type="IE";														//Internet Explorer e.g. IE4 upwards
	else if (document.layers) type="NN";													//Netscape Communicator 4
	else if (!document.all && document.getElementById) type="MO";						//Mozila e.g. Netscape 6 upwards
	else type = "IE";
      //alert( "type:" + type); 
}

// Check whether IE4 or later.
var MS = navigator.appVersion.indexOf("MSIE");
window.isIE4 = (MS > 0) &&
               (parseInt(navigator.appVersion.substring(MS + 5, MS + 6)) 
               >= 4);

function lead0(val) {
  // Add leading 0s when necessary.
  return (val < 10) ? "0" + val.toString() : val;
}

function buildTime() {
  var time = new Date();
  var ampm = "AM";
  var h = time.getHours();
  // Fix military time and determine ampm.
  if (h >=12) {
    ampm = " PM";
  }
  if (h >12) {
    h = h - 12;
  }

  return lead0(h) + ":" + lead0(time.getMinutes()) + ":" +
               lead0(time.getSeconds()) + " " + ampm;
  
}

function buildDayOfWeek() {
  var dw = new Date();
  var ddw = dw.getDay();
  if (ddw == 0) mm = "Sunday";
  if (ddw == 1) mm = "Monday";
  if (ddw == 2) mm = "Tuesday";
  if (ddw == 3) mm = "Wednesday";
  if (ddw == 4) mm = "Thursday";
  if (ddw == 5) mm = "Friday";
  if (ddw == 6) mm = "Saturday";

  return mm;
}

function buildDate() {
  var d = new Date();
  var dd = d.getDate();
  var mm = d.getMonth();
  if (mm == 0)  mm = "Jan";
  if (mm == 1)  mm = "Feb";
  if (mm == 2)  mm = "Mar";
  if (mm == 3)  mm = "Apr";
  if (mm == 4)  mm = "May";
  if (mm == 5)  mm = "Jun";
  if (mm == 6)  mm = "Jul";
  if (mm == 7)  mm = "Aug";
  if (mm == 8)  mm = "Sep";
  if (mm == 9)  mm = "Oct";
  if (mm == 10) mm = "Nov";
  if (mm == 11) mm = "Dec";
  var yy = d.getFullYear();

  return mm + " " + dd + ", " + yy;
}

// Puts the contents of buildTime into the layer id
// Works with all browsers except Opera
function tick2id(id) {
	if (type=="IE") {
		document.all[id].innerHTML = buildTime();
	}
	if (type=="NN") { 
		document.layers[id].document.open();
		document.layers[id].document.write(buildTime());
		document.layers[id].document.close();
	}
	if (type=="MO") {
		document.getElementById(id).innerHTML = buildTime();
	}
}

function mytick2id()
{
  // 'clock' is id of div tag representing html clock
  tick2id('clock')  
  setTimeout("mytick2id()", 999)
  return
}

// Puts the contents of buildTime into the text input element
// to avoid second oscillation in netscape div/span
// Works with all browsers except Opera
function tick2text() {
	if (type=="IE") {
                document.all.clock.value = buildTime();  
	}
	if (type=="NN") { 
                document.clock.visibility='show'
                document.clock.document.open();
                document.clock.document.write('<center>'+ buildTime() +'</center>');
                document.clock.document.close();
	}
	if (type=="MO") {
                document.getElementById("clock").value = buildTime();
	}
}

function mytick2text()
{
  tick2text()  
  setTimeout("mytick2text()", 999)
  return
}

// ---------------------------------------------------------
// Function State/Province definition for registration form
// ---------------------------------------------------------
  usaStates = new Array();
  canadaStates = new Array();
  defaultStates = new Array();
  ii = 0;
  jj = 0;
  kk = 0;

           usaStates[ii] = "_Select one";
           ii++;  
           usaStates[ii] = "AK_ALASKA";
           ii++;
           usaStates[ii] = "AL_ALABAMA";
           ii++;
canadaStates[jj] = "_Select one";
           jj++;
canadaStates[jj] = "ALB_ALBERTA";
           jj++;
           usaStates[ii] = "AR_ARKANSAS";
           ii++;
           usaStates[ii] = "AZ_ARIZONA";
           ii++;
canadaStates[jj] = "BC_BRITISH COLUMBIA";
           jj++;
           usaStates[ii] = "CA_CALIFORNIA";
           ii++;
           usaStates[ii] = "CO_COLORADO";
           ii++;
           usaStates[ii] = "CT_CONNECTICUT";
           ii++;
           usaStates[ii] = "DC_DISTRICT OF COLUMBIA";
           ii++;
           usaStates[ii] = "DE_DELAWARE";
           ii++;
           usaStates[ii] = "FL_FLORIDA";
           ii++;
           usaStates[ii] = "GA_GEORGIA";
           ii++;
           usaStates[ii] = "GU_GUAM";
           ii++;
           usaStates[ii] = "HI_HAWAII";
           ii++;
           usaStates[ii] = "IA_IOWA";
           ii++;
           usaStates[ii] = "ID_IDAHO";
           ii++;
           usaStates[ii] = "IL_ILLINOIS";
           ii++;
           usaStates[ii] = "IN_INDIANA";
           ii++;
           usaStates[ii] = "KS_KANSAS";
           ii++;
           usaStates[ii] = "KY_KENTUCKY";
           ii++;
           usaStates[ii] = "LA_LOUISIANA";
           ii++;
           usaStates[ii] = "MA_MASSACHUSETTS";
           ii++;
canadaStates[jj] = "MAN_MANITOBA";
           jj++;
           usaStates[ii] = "MD_MARYLAND";
           ii++;
           usaStates[ii] = "ME_MAINE";
           ii++;
           usaStates[ii] = "MI_MICHIGAN";
           ii++;
           usaStates[ii] = "MN_MINNESOTA"
           ii++;
           usaStates[ii] = "MO_MISSOURI";
           ii++;
           usaStates[ii] = "MS_MISSISSIPPI";
           ii++;
           usaStates[ii] = "MT_MONTANA";
           ii++;
    defaultStates[kk] = "N/A_N/A";
           kk++;
canadaStates[jj] = "NBR_NEW BRUNSWICK";
           jj++;
           usaStates[ii] = "NC_NORTH CAROLINA";
           ii++;
           usaStates[ii] = "ND_NORTH DAKOTA";
           ii++;
           usaStates[ii] = "NE_NEBRASKA";
           ii++;
canadaStates[jj] = "NFL_NEWFOUNDLAND";
           jj++;
           usaStates[ii] = "NH_NEW HAMPSHIRE";
           ii++;
           usaStates[ii] = "NJ_NEW JERSEY";
           ii++;
           usaStates[ii] = "NM_NEW MEXICO";
           ii++;
canadaStates[jj] = "NOS_NOVA SCOTIA";
           jj++;
canadaStates[jj] = "NU_NUNAVUT";
           jj++;
           usaStates[ii] = "NV_NEVADA";
           ii++;
canadaStates[jj] = "NWT_NORTHWEST TERRITORIES";
           jj++;
           usaStates[ii] = "NY_NEW YORK";
           ii++;
           usaStates[ii] = "OH_OHIO";
           ii++;
           usaStates[ii] = "OK_OKLAHOMA";
           ii++;
canadaStates[jj] = "ONT_ONTARIO";
           jj++;
           usaStates[ii] = "OR_OREGON";
           ii++;
           usaStates[ii] = "PA_PENNSYLVANIA";
           ii++;
canadaStates[jj] = "PEI_PRINCE EDWARD ISLAND";
           jj++;
           usaStates[ii] = "PR_PUERTO RICO";
           ii++;
canadaStates[jj] = "QUE_QUEBEC";
           jj++;
           usaStates[ii] = "RI_RHODE ISLAND";
           ii++;
canadaStates[jj] = "SAS_SASKATCHEWAN";
           jj++;
           usaStates[ii] = "SC_SOUTH CAROLINA";
           ii++;
           usaStates[ii] = "SD_SOUTH DAKOTA";
           ii++;
           usaStates[ii] = "TN_TENNESSEE";
           ii++;
           usaStates[ii] = "TX_TEXAS";
           ii++;
           usaStates[ii] = "UT_UTAH";
           ii++;
           usaStates[ii] = "VA_VIRGINIA";
           ii++;
           usaStates[ii] = "VI_VIRGIN ISLANDS";
           ii++;
           usaStates[ii] = "VT_VERMONT";
           ii++;
           usaStates[ii] = "WA_WASHINGTON";
           ii++;
           usaStates[ii] = "WI_WISCONSIN";
           ii++;
           usaStates[ii] = "WV_WEST VIRGINIA";
           ii++;
           usaStates[ii] = "WY_WYOMING";
           ii++;
canadaStates[jj] = "YUK_YUKON";
           jj++;

  function displayStates(country_choice, state_choice)
  {
      // option1 is name of selected country
      // vec is states array pointed to static states array for particular country
      // iteSize is size of states array
      // option_list is options array of states
      // - function cleans option_list old values from previous choice of country
      // - function dynamically creates option_list new values in accordance with
      //   current choice of country 
      // opt_size is size of options array of states from previous choice of country

      var vec;
      var iteSize = 0;
      var option_list;
      var opt_size = 0;

      // get selected country name
      var index   = country_choice.selectedIndex;
      var option1 = country_choice.options[index].value;

      // clean old options
      opt_size = state_choice.options.length;
      for ( j = 0; j < opt_size; j++) {
        state_choice.options[0] = null;
      }
      // associate option_list with options of StateId select object of html form
      option_list = state_choice.options;

      // init states array
      if(option1 == "USA"){
          iteSize = ii;
          vec = usaStates;
      } else if(option1 == "Canada"){
          iteSize = jj;
          vec = canadaStates;
      } else {
          iteSize = kk;
          vec = defaultStates;
      }

      // dynamically create new option_list from static states array: XX_StateName
      // XX prefix is used as option value
      // StateName is used as option name
      for ( i = 0; i < iteSize; i++) {
          var params = vec[i].split("_");
          var option = new Option(params[1], params[0]);
          option_list[i] = option;
      }
  }

  function selectStates(country_choice, state_choice, shop_countries)
  {
      var vec;
      var iteSize  = 0;
      var opt_size = 0; 

      //alert("selectStates:" + country_choice + " and " + state_choice );

      opt_size = document.address_form.StateId.options.length;
      for ( j = 0; j < opt_size; j++) {
        document.address_form.StateId.options[0] = null;
      }

      // init states array
      if(country_choice == "USA"){
          iteSize = ii;
          vec = usaStates;
      } else if(country_choice == "Canada"){
          iteSize = jj;
          vec = canadaStates;
      } else {
          iteSize = kk;
          vec = defaultStates;
      }

      for ( i = 0; i < iteSize; i++) {
          var params = vec[i].split("_");
          var option = new Option(params[1], params[0]);
          document.address_form.StateId.options[i] = option;
          if(params[0] == state_choice)
          {
             document.address_form.StateId.options[i].selected = true;
          }
      }

      var option = new Option("Select one", "");
      document.address_form.CountryId.options[0] = option;

      vec = shop_countries.split("~");
      for ( i = 0; i < vec.length; i++)
      {
          var option = new Option(vec[i], vec[i]);
          document.address_form.CountryId.options[i+1] = option;
          if(vec[i] == country_choice)
          {
             document.address_form.CountryId.options[i+1].selected = true;
          }
      }

  }

// -----------------------------------------------

// these are functions of form fields validation

// -----------------------------------------------

function checkTextareaLength(formField, fieldLabel)
{
  var result = true;

  if(formField.value.length > 3000)
  {
     alert('Number of characters for the "' + fieldLabel +'" field exceeds max: 3,000');
     formField.focus();
     result = false;
  }

  return result;    
}

function validRequired(formField, fieldLabel)
{
  var result = true;
	
  if (formField.value == "")
  {
     alert('Please enter a value for the "' + fieldLabel +'" field');
     formField.focus();
     result = false;
  }
	
  return result;
}

function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validEmail(formField,fieldLabel)
{
  var result = true;

  if (!validRequired(formField,fieldLabel))
     result = false;
	
  if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
  {
     alert("Please enter a complete email address in the form: yourname@yourdomain.com");
     formField.focus();
     result = false;
  }
   
  return result;
}

function priceValue(str)
{
  return inValidCharSet(str,".0123456789");
}

function allDigits(str)
{
  return inValidCharSet(str,"0123456789");
}

function validPhone(str)
{
  return inValidCharSet(str,"-0123456789");
}

function inValidCharSet(str,charset)
{
  var result = true;

  // Note: doesn't use regular expressions to avoid early Mac browser bugs	
  for (var i=0;i<str.length;i++)
  if (charset.indexOf(str.substr(i,1))<0)
  {
    result = false;
    break;
  }
	
  return result;
}
// -----------------------------------------------
