// DEFINE VARIABLES

// whitespace characters
var whitespace = " \t\n\r";

function PromptErrorMsg(Field,strError)
{
        alert("You have entered an invalid date for " + strError + ".  Please make sure your date format is in M/D/Y format.");
        Field.focus();
}

// Returns true if string s is empty or
// whitespace characters only.
// Check whether string s is empty.

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isWhitespace (s)
{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

function isFixedLength (s,fixedLength,FielldName)
{

    if (s.length == fixedLength)
    {
       return true;
    }
    else
    {
       alert("You must enter a number of " + fixedLength + " digits in " + FielldName);
       return false;
    }
    return false;
}


function ForcePhoneNumber(objField,FieldName)
{
    var strField = new String(objField.value);

        var i = 0;
        for (i = 0; i < strField.length; i++)
                if (strField.charAt(i) < '0' || strField.charAt(i) > '9') {
                        alert(FieldName + " must be a valid numeric entry.  Please do not use commas or dollar signs or any non-numeric symbols.");
                        objField.focus();
                        return false;
                }

        return true;
}

function ForceNumber(objField,FieldName)
{
    var strField = new String(objField.value);

        var i = 0;
        for (i = 0; i < strField.length; i++)
                if (strField.charAt(i) < '0' || strField.charAt(i) > '9' ) {
                        alert(FieldName + " must be a valid numeric entry.  Please do not use commas or dollar signs or any non-numeric symbols.");
                        objField.focus();
                        return false;
                }

        return true;
}

function isDateNumber(strNum,method)
{
        var str = new String(strNum);
        var i = 0;

        if (isNaN(parseInt(str)) || parseInt(str) < 0) return false;

        if (method == 2)
                if (parseInt(str) > 31)
                        return false;
        if (method == 1)
                if (parseInt(str) > 12)
                        return false;

        for (i = 0; i < str.length; i++)
                if (str.charAt(i) < '0' || str.charAt(i) > '9')
                        return false;


        return true;
}

/* PURPOSE: Checks to see if the string is a valid date.  A valid
        date is defined as any of the following:

                MM/DD/YY, MM/DD/YYYY, M/D/YY, M/D/YYYY,
                MM-DD-YY, MM-DD-YYYY, M-D-YY, M-D-YYYY
*/

function ForceDate(strDate,strField)
{
        var str = new String(strDate.value);

        if (isWhitespace(str)) {
                return true;
                // if the field is empty, just return true...
        }

        var i = 0, count = str.length, j = 0;
        while ((str.charAt(i) != "/" && str.charAt(i) != "-") && i < count)
                i++;

        if (i == count || i > 2) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        var addOne = false;
        if (i == 2) addOne = true;

        if (!isDateNumber(str.substring(0,i),1)) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        j = i+1;
        i = 0;

        while ((str.charAt(i+j) != "/" && str.charAt(j+i) != "-") && i+j < count)
                i++;

        if (i+j == count || i > 2) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        if (!isDateNumber(str.substring(j,i+j),2)) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        j = i+3;
        i = 0;

        if (addOne) j++;

        while (i+j < count)
                i++;


        if (i != 2 && i != 4) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        if (!isDateNumber(str.substring(j,i+j),3)) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        return true;
}

function GoToPage(URL) {
  window.open(URL, '_top');
}

function PopUp(URL) {
  window.open(URL, '_blank');
}

function doMsg()
{
  alert("message");
}

function setFocus(field_id)
{
  var field=document.getElementById(field_id);
  field.focus();
}
function printNow()
{
  var pr = (window.print) ? 1 : 0;
  if (pr) {
          window.print();
  }else {
          alert("Sorry, your browser doesn't support this feature.");
          return false;
  }
}
function confirm_deletion(messege)
{
  assure = confirm(messege);
  if (assure !="0")
     return true;
  else
     return false;
}
function check_user_option(form_id,table_to_show,url)
{
  var found_it;
  var x=document.getElementById(form_id);
  for (var i=0; i<x.radioBrowse.length; i++)
  {
    if (x.radioBrowse[i].checked)
    {

      found_it = x.radioBrowse[i].value;
      if  (found_it ==1)
      {
        display_ShowHide(table_to_show);
      }
      else
      {
        GoToPage(url);
      }
    }
  }
}

function display_ShowHide(id)
{
  var target = document.getElementById(id);
  if (target.style.display == '') {
           target.style.display = 'none';
     return true;
  }
  if (target.style.display == "none") {
           target.style.display = '';
  }
}

function check_email(field_id)
{
  var field=document.getElementById(field_id);

  if (isWhitespace(field.value))
  {
                return true;
                // if the field is empty, just return true...
  }
  var pass;
  if(field.value)
  {
           pass=1;
           var str = field.value;
           var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
           var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
           if (!reg1.test(str) && reg2.test(str))
           {
            return true;
           }else{
            alert ("Please enter a Correct Email");
            field.focus();
            return false;
           }
  }
  if(pass != 1)
  {
     alert("Please enter an Email");
     field.focus();
     return false;
  }
}
function validateMailForm(form_id)
{
   var x=document.getElementById(form_id);

   if (isWhitespace(x.txtName.value))
   {
       alert ("you must enter your name");
       x.txtName.focus();
       return false;
   }
   if (isWhitespace(x.txtEmail.value) == true)
   {
       alert ("you must enter your email address");
       x.txtEmail.focus();
       return false;
   }
   if (check_email('txtEmail') == false)
   {
       x.txtEmail.focus();
       return false;
   }
   if (isWhitespace(x.txtPhone.value) == true)
   {
      alert("Please fill in the Phone Field");
      x.txtPhone.focus();
      return false;
   }
   if (ForceNumber(x.txtPhone,"Phone Number") == false)
   {
       x.txtPhone.value="";
       x.txtPhone.focus();
      return false;
   }
   return true;
}

function validateRequestForm(form_id)
{
   var x=document.getElementById(form_id);

   if (isWhitespace(x.txtFirstName.value))
   {
       alert ("you must enter your first name");
       x.txtFirstName.focus();
       return false;
   }
   if (isWhitespace(x.txtLastName.value))
   {
       alert ("you must enter your last name");
       x.txtLastName.focus();
       return false;
   }
   if (isWhitespace(x.txtEmail.value) == true)
   {
       alert ("you must enter your email address");
       x.txtEmail.focus();
       return false;
   }
   if (check_email('txtEmail') == false)
   {
       x.txtEmail.focus();
       return false;
   }
   return true;
}
function addRow()
{
     var tbl = document.getElementById('activitiesTable');
     var lastRow = tbl.rows.length;

     var iteration = lastRow;
     // creates a new row
     var row = tbl.insertRow(lastRow);

      // insert a cell
     var cellLeft = row.insertCell(0);
     var textNode = document.createTextNode(iteration);
     cellLeft.appendChild(textNode);

     appendElement(row,iteration,1,'text','txtTID','txtTID',10,0,'');
     appendElement(row,iteration,2,'text','txtLocation','txtLocation',20,0,'');
     appendElement(row,iteration,3,'text','txtTime','txtTime',5,0,0);
     appendElement(row,iteration,4,'text','txtBegAmount','txtBegAmount',20,0,0);
     appendElement(row,iteration,5,'text','txtAddAmount','txtAddAmount',20,0,0);
     appendElement(row,iteration,6,'text','txtTakeOut','txtTakeOut',20,0,0);
     appendElement(row,iteration,7,'text','txtCBalance','txtCBalance',20,1,0);
//     appendElement(row,iteration,8,'text','txtRemarks','txtRemarks',20);

     // get the hiddent field
     var fcount = document.getElementById('hiddenFCount');
     fcount.value = lastRow;
}

function removeRow()
{
     // grab the element again!
     var tbl = document.getElementById('activitiesTable');
     // grab the length!
     var lastRow = tbl.rows.length;
     // delete the last row if there is more than one row!
     if (lastRow > 2) tbl.deleteRow(lastRow - 1);
     calculateTotal('txtBegAmount');
     calculateTotal('txtAddAmount');
     calculateTotal('txtCBalance');
     calculateTotal('txtTakeOut');
//     calculateTotal('txtRemarks');

     // get the hiddent field
     var fcount = document.getElementById('hiddenFCount');
     fcount.value = tbl.rows.length - 1;
}

function appendElement(row,iteration,number,type,name,id,size,readonly,value)
{
     var cell = row.insertCell(number);
     var el = document.createElement('input');
     el.type = type;
     el.name = name + iteration;
     if (value != null)
       el.value = value;
     el.id = id + iteration;
     el.size = size;
     if (readonly == 1)
       el.readonly = " readonly";
     el.onchange = function(){calculateTotal(id);}
     cell.appendChild(el);
}

function calculateGrandTotals(){
     var total = 0;
     var total_id =document.getElementById('txtGTotal');
     var from_id =document.getElementById('txtFrom');
     var from_left =document.getElementById('txtLeft');
     var from_bank_id =document.getElementById('txtFromBank');
     var g_takeout_id =document.getElementById('txtGTakeOut');
     var takeout_id =document.getElementById('txtTakeOutSum');

     g_takeout_id.value = takeout_id.value;
     total += eval(from_id.value);
     total += eval(from_left.value);
     total += eval(from_bank_id.value);
     total += eval(g_takeout_id.value);
     total_id.value = total;
}

function calculateTotal(field_id)
{
     var sum = 0;
     var firstf_name = field_id + "1";
     var sumf_name = field_id + "Sum";

     var sumf =document.getElementById(sumf_name);
     var firstf =document.getElementById(firstf_name);
     var tbl = document.getElementById('activitiesTable');
     var lastRow = tbl.rows.length;
     if (lastRow>2)
     {
       for (var i = 1; i < lastRow; i++)
       {
          fname = field_id + i ;
          var f=document.getElementById(fname);
          var value = f.value;
          sum += eval(value);
       }
       sumf.value = sum;
     }
     else
     {
        sumf.value = firstf.value;
     }
}

function calculateCurrentBalance(field_id)
{
     var sum = 0;
     var firstBegAmountf =document.getElementById('txtBegAmount1');
     var firstAddAmountf =document.getElementById('txtAddAmount1');
     var firstTakeOutf =document.getElementById('txtTakeOut1');
     var firstf_name = field_id + "1";
     var sumf_name = field_id + "Sum";
     var sumf =document.getElementById(sumf_name);
     var firstf =document.getElementById(firstf_name);
     var tbl = document.getElementById('activitiesTable');
     var lastRow = tbl.rows.length;
     if (lastRow>2)
     {
       for (var i = 1; i < lastRow; i++)
       {
          fname = field_id + i ;
          fbeg  = 'txtBegAmount' + i;
          fadd  = 'txtAddAmount' + i;
          ftake = 'txtTakeOut' + i;
          var f      = document.getElementById(fname);
          var fbegf  = document.getElementById(fbeg);
          var faddf  = document.getElementById(fadd);
          var ftakef = document.getElementById(ftake);
          var cbalance = eval(fbegf.value) + eval(faddf.value) - eval(ftakef.value);
          f.value =  cbalance;
          var value = f.value;
          sum += eval(value);
       }
       sumf.value = sum;
     }
     else
     {
        cbalance =  eval(firstBegAmountf.value) + eval(firstAddAmountf.value) - eval(firstTakeOutf.value);
        firstf.value =  cbalance;
        sumf.value = firstf.value;
     }
}
