
// Everest - Customer Focused Quality
// Lynk Software, Inc.
// Copyright (c) 2001


var roColor = "#E8E9EC";
var highLightColor = "#BBC8E3";
var readOnly = false;
var lastTab ="";
var lastObj= "";
var lastRow = new String();
var lastId = new String( "" );
lastRow = -1;

function GetDataType( obj )
{

  var type = 1;
  
 switch(obj.className)
  {
    case "isNumeric"  :
    case "Numeric"  :
          type = 2;
          break;
    case "isMoney"    :
    case "Money"    :
          type = 3;
          break;
    case "percent"    :
          type = 4;
          break;
    case "isDate"     :
    case "Date"     :
          type = 5;
          break;
    case "time"       :
          type = 6;
          break;
    case "phone"      :
          type = 7;
          break;
    case "zip"        :
          type = 8;
          break;
    default:
          type = 1;
          break;
  }
  return( type );
}

function OnSubmitData( fromForm, toForm )
{
  var i;
  var form = fromForm;
  var obj;
  var names="";
  var types="";
  var data="";
  var sTag="";
  var isModified = false;

  for (f=0; f < form.length; f++)
  {
    obj = form.elements(f);
    
    if( obj.modified == 1 )
    {
      sTag = obj.tagName.toLowerCase();
      
      if ( sTag == "select" )
      {
        isModified = true;
        names += obj.name+"^";
        types += GetDataType( obj );
        types += "^";
        if (obj.selectedIndex >= 0 )
          data += obj.options[obj.selectedIndex].text+"^";
        else
          data += "^";
      }
      else if (( sTag == "input" ||
                 sTag == "textarea" ) &&
   	             obj.type != "button" )
      {
        isModified = true;

        names += obj.name+"^";
        types += GetDataType( obj );
        types += "^";
        data += obj.value+"^";
      }
    }
  }
  if( isModified )
  {
    toForm.Names.value = names;
    toForm.Types.value = types;
    toForm.Data.value = data;
  }
  
  return( isModified );
}    

function ValidEmailAddr( desc, email )
{
  var result = false;
  var format = /^([a-zA-Z0-9_\.\'\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

  if( !( result = format.test(email) ))
  {
    // Test embedded address
    addr = new String( email );
    val = new String( addr.match( /<+[a-zA-Z0-9_.'@-]*>+/ ));
    if( val != "null" )
    {
      len = val.length;
      if( len > 2 )
        val = val.substr( 1, len-2 );
      if( !( result = format.test(val) ))
      {
        addr = val;
      }
    }
  }
  if( !result )
    alert( desc + " '" + addr +
      "' not a valid email address.\nPlease provide fully qualified email address.\n\n" +
      "Example:  name@company.com\n" );
  
  return( result );
}

function ReverseName ( name )
{
  var revName = "";
  var val = new String( name );
  
  if( val.length > 0 )
  {
    if( val.search(",") == -1 )
    {
      revName = name;
    }
    else
    {
      parts = val.split(", ");
      if( parts.length > 1 )
      {
        revName = parts[1] + " " + parts[0];
      }
      else
      {
        revName = parts[0];
      }
    }
  }
  return( revName );
}

function DefaultFunc(e)
{
  if( e.keyCode == 13 )
  {
    OnSave();
    event.returnValue=false
    return true;
  }
}

function ChangeTab( fromTab )
{
  if( lastTab )
  {
    lastTab.style.backgroundImage= "url('images/TabBg.gif')";
  }

  fromTab.style.backgroundImage= "url('images/TabFg.gif')";
  lastTab=fromTab;
}

function Trim( val )
{
  work = new String( val );
  len = work.length;
  if( work.charAt(len-1) == ' ' )
    work = work.substr( 0, len-1 );
  return( work );
}

function TrimRight( val )
{
  var pos;
  var work = new String( val );
  var len = work.length;
  
  for( pos = len-1; pos > -1; pos-- )
  {
    if( work.charAt(pos) != ' ' )
      break;
  }
  if( pos < len )
    work = work.substr( 0, pos+1 );
    
  return( work );
}

function TrimLeft( val )
{
  var pos;
  var work = new String( val );
  var len = work.length;
  
  for( pos = 0; pos < len; pos++ )
  {
    if( work.charAt(pos) != ' ' )
      break;
  }
  if( pos > 0 )
    work = work.substr( pos, len );
    
  return( work );
}

function GetData( row, col )
{
  val = Trim( document.all.TblList.rows(row).cells(col).innerText );
  
  return( val );
}

function PutData( row, col, val )
{
  document.all.TblList.rows(row).cells(col).innerText = val;
}

function SetImage( row, col, image )
{
  document.all.TblList.rows(lastRow).cells(col).innerHTML = '<img src="'+ image.src + '">';
}

function SetChecked( row, col, state )
{
  if( state == 1 )
    SetImage( lastRow, col, checked );
  else
    SetImage( lastRow, col, unChecked );
}

function RowFocus(obj)
{
  obj.offsetParent.offsetParent.rows( obj.offsetParent.parentElement.rowIndex ).click();
}

function InitList()
{
  if( document.all.TblList.rows.length > 0 )
  {
    document.all.TblList.rows(0).click();
    document.all.TblList.rows(0).cells(0).focus();
  }
}

function SetRow( row )
{
  if( document.all.TblList.rows.length > row )
  {
    document.all.TblList.rows(row).click();
    document.all.TblList.rows(row).cells(0).focus();
  }
}

function RowEnter(obj, row)
{
  if( lastObj )
  {
    lastObj.bgColor = "#FFFFFF";
  }
  lastRow = row;
  lastId = obj.id;
  lastObj = obj;
  obj.bgColor = highLightColor;
  obj.focus;
}

function RowEvent(e, row)
{
  // 8 = Backspace
  // 9 = Tab
  // 13 = Enter Key
  // 35 = End
  // 36 = Home
  // 37 = Left Arrow
  // 38 = Up Arrow
  // 39 = Right Arrow
  // 40 = Down Arrow

  if( e.keyCode == 40 )
  {
    row = lastRow+1;
    if( row < document.all.TblList.rows.length )
    {
      document.all.TblList.rows(row).click();
      document.all.TblList.rows(row).cells(0).focus();
      lastRow = row;
    }
  }
  else if( e.keyCode == 38 )
  {
    row = lastRow-1;
    if( row >=0 )
    {
      document.all.TblList.rows(row).click();
      document.all.TblList.rows(row).cells(0).focus();
      lastRow = row;
    }
  }
  else if( e.keyCode == 13 )
  {
    SelectRow( row );
  }
}

function SessionExpired()
{
  alert( "Session has expired. \nPlease Login." );
  top.window.location.replace("Everest.asp");
}

function NewWindow( mypage, myname, wide, high, scroll)
{
  if( screen.width > 800 || wide < 750 )
    leftPos = (screen.width) ? (screen.width-wide)/2 : 0;
  else
    leftPos = 0;

  if( screen.height > 600 || high < 480 )
    topPos = (screen.height) ? (screen.height-high-60)/2 : 0;
  else
    topPos = 0;

  settings ='height='+high+',width='+wide+',top='+topPos +',left='+leftPos +',scrollbars='+scroll+',resizable, status=yes';
  wndPtr = window.open(mypage,myname,settings);

  CheckPopUp(wndPtr);

  return( wndPtr );
}

function CheckPopUp(wndPtr)
{
  var blocked = 0;
  if (wndPtr == null)
  {
    blocked = 1;
  }
  if (wndPtr == 0)
  {
    blocked = 1;
  }
  if (blocked == 1)
  {
    alert("Everest has been blocked by a pop up blocker");
  } 
}

function NewPopup( mypage, mydata, width, height, scroll)
{
  if( screen.width > 800 || width < 750 )
    leftPos = (screen.width) ? (screen.width-width)/2 : 0;
  else
    leftPos = 0;

  if( screen.height > 600 || height < 480 )
    topPos = (screen.height) ? (screen.height-height-60)/2 : 0;
  else
    topPos = 0;

  settings ='dialogHeight: '+height+'px; dialogWidth: '+width+'px; dialogTop='+topPos +'px; dialogLeft='+leftPos+'px; status: Yes';
  try
  {
    var result = new String( window.showModalDialog(mypage,mydata,settings));
  }
  catch(e)
  {
    CheckPopUp2(result);
  }
  return( result );
}

function CheckPopUp2(result)
{
  var blocked = 0;
  if (result == null)
  {
    blocked = 1;
  }
  if (blocked == 1)
  {
    alert("Everest has been blocked by a pop up blocker");
  } 
}

function ContextHelp( contextStr, sourceUrl )
{

//  helpPath = "../Help/frames.htm?" +contextStr;
  helpPath = "../CustomHelp/" +contextStr;
  NewWindow( helpPath, "Help", 800, 600, "yes" );
}

function SetupHelp( contextStr )
{
  helpPath = "../../Help/default.htm?" +contextStr;
  NewWindow( helpPath, "Help", 800, 600, "yes" );
}

function SetFormState( doc, form, state )
{
  var i;
  
  for (i=0; i < form.length; i++)
  {
	if ( form.elements[i].className == "Txt" ||
	     form.elements[i].className == "TxtArea" ||
	     form.elements[i].className == "Mask" ||
	     form.elements[i].className == "Btn" ||
	     form.elements[i].className == "RadioBtn" ||
	     form.elements[i].className == "Text" ||
	     form.elements[i].className == "Date" ||
	     form.elements[i].className == "Numeric" ||
	     form.elements[i].className == "Phone" ||
	     form.elements[i].className == "Money" ||
	     form.elements[i].className == "Time" ||
	     form.elements[i].className == "ChkBox" )
	{
	  ReadOnly( form.elements[i], state );
	}
	else if ( form.elements[i].className == "CalBtn" || 
	          form.elements[i].className == "SrchBtn" )
	{
      if( state )
        form.elements(i).style.visibility="hidden";
      else
        form.elements(i).style.visibility="visible";
	}
	else if ( form.elements[i].className == "TxtSrch" )
	{
	  if( state )
        form.elements[i].style.backgroundColor= roColor;
      else
        form.elements[i].style.backgroundColor= "#FFFFFF";
	}
  }
}    

function ReadOnly( obj, state )
{
  if( state )
  {
    if( obj.type == "select-one" )
    {
      obj.disabled=true;
      obj.style.backgroundColor= roColor;
    }
    else if( obj.type == "checkbox" || obj.type=="radio" || obj.type=="button" )
    {
      obj.disabled=true;
    }
    else
    {
      obj.readOnly=true;
      obj.style.backgroundColor= roColor;
    }
  }
  else
  {
    if( obj.type == "select-one" )
    {
      obj.disabled=false;
      obj.style.backgroundColor= "#FFFFFF";
    }
    else if( obj.type == "checkbox" || obj.type=="radio" || obj.type=="button" )
    {
      obj.disabled=false;
    }
    else
    {
      obj.readOnly=false;
      obj.style.backgroundColor= "#FFFFFF";
    }
  }
}

function NoSelect()
{
}

function GetCalendar( event, toObj )
{
  var startDate = toObj.value;
  var sRtn = ShowCalendar( event, startDate );

  if (sRtn!="")
  {
    toObj.value = sRtn;
  }
}

function ShowCalendar( e, startDate )
{
  col = e.screenX-10;
  row = e.screenY-10;

  var settings ="dialogTop="+ row + ";dialogLeft=" + col + ";dialogWidth=172pt;dialogHeight=165pt;status:no";

  //NewWindow( "Calendar.htm", "", 182, 175, "no")
  
  date = FormatMdy( startDate );
  var rtnVal = window.showModalDialog( "Calendar.htm", date, settings );
  return( rtnVal );
}

function PageBackspace(e)
{
  if( e.keyCode == 8 )
  {
   // e.returnValue = false;
  }
}

  function FormatMdy( fromDate )
  {
    var toDate="";
  
    if( mdy )
    {
      toDate = fromDate;
    }
    else
    {
      var tempDate = new String( fromDate );
      var dateArray = tempDate.split('/');
      if (dateArray.length == 3)
      {
        toDate = dateArray[1]+'/'+dateArray[0]+'/'+dateArray[2];
      }
    }
    return( toDate );
  }

  function GetCurMdy()
  {
    var iDate = new Date();
    var iDay = new String( iDate.getDate());
    var iMonth = new String( iDate.getMonth() + 1 );
    var iYear = iDate.getFullYear();

    if( iMonth.length == 1 )
      iMonth = "0" + iMonth;
    if( iDay.length == 1 )
      iDay = "0" + iDay;
	
    return iMonth + "/" + iDay  + "/" + iYear;
  }

  function CurDate()
  {
    var d = new Date();
    return( FormatDate( d ));
  }

  function CurTime()
  {
    var d = new Date();
    curTime = d.getHours() + ":" + d.getMinutes();
    curTime = GetTime(curTime);
    return( curTime );
  }

  function FormatDate(value)
  {
    sValue = new String(value);
    if ( sValue == 'null' || sValue.length == 0 ) return "";

    var iDate = Date.parse(sValue);
	
    iDate = new Date(iDate);
	
    //  Break the date into day, month, and year
    var iDay = new String (iDate.getDate());
    var iMonth = iDate.getMonth();
    var iYear = iDate.getFullYear();

    var iMonthNumber = new String( iMonth + 1 );
    if( iMonthNumber.length == 1 )
      iMonthNumber = "0" + iMonthNumber;
    if( iDay.length == 1 )
      iDay = "0" + iDay;

    if( mdy )	
      return iMonthNumber  + "/" + iDay  + "/" + iYear;
    else
      return iDay  + "/" + iMonthNumber  + "/" + iYear;
  }

function haveError( obj, desc )
{
  msg = "Please enter "+desc+"."
  alert( msg );
  //obj.focus();
  return false;
}

function hasValue( obj, obj_type, desc )
{
  if (obj_type == "TEXT" || obj_type == "PASSWORD")
  {
    if (obj.value.length == 0)
    {
      return haveError( obj, desc );
    }
    else 
      return true;
  }
  else if (obj_type == "NUMERIC" )
  {
    if (obj.value.valueOf() == 0)
    {
      return haveError( obj, desc );
    }
    else 
      return true;
  }
  else if (obj_type == "SELECT")
  {
    if (obj.selectedIndex < 0 )
    {
      return haveError( obj, desc );
    }
    else
    {
      data = new String( obj.options[obj.selectedIndex].text );
      if( data.length > 0 )
        return true;
      else
        return haveError( obj, desc );
    }
  }
  else if (obj_type == "RADIO" || obj_type == "CHECKBOX")
  {
    for (i=0; i < obj.length; i++)
    {
      if (obj[i].checked)
        return true;
    }
    return haveError( obj, desc );
  }
  alert( "No Match" );
}


