/** flying text */
  function FlyFromRight (oImg,stopX)
  {
     oImg.style.pixelLeft -= 10;
     if (oImg.style.pixelLeft <= stopX) 
       oImg.style.pixelLeft = stopX;
     else
     {
       copyImg = oImg;
       copyX   = stopX;
       window.setTimeout ("FlyFromRight (copyImg,copyX);",10);
     }
  }

  function FlyFromLeft (oImg,stopX)
  {
     oImg.style.pixelLeft += 10;
     if (oImg.style.pixelLeft >= stopX) 
       oImg.style.pixelLeft = stopX;
     
     else
     {
       copyImg = oImg;
       copyX   = stopX;
       window.setTimeout ("FlyFromLeft (copyImg,copyX);",10);
     }
  }

  function FlyFromTop (oDiv,stopY)
  {
     oDiv.style.pixelTop += 10;
     if (oDiv.style.pixelTop >= stopY) 
       oDiv.style.pixelTop = stopY;
     else
     {
        copyDiv = oDiv;
        copyY   = stopY;
        window.setTimeout ("FlyFromTop (copyDiv,copyY);", 10);
     }     
  }

  function FlyFromBottom (oDiv,stopY)
  {
     oDiv.style.pixelTop -= 10;
     if (oDiv.style.pixelTop <= stopY) 
       oDiv.style.pixelTop = stopY;
     else
     {
        copyDiv = oDiv;
        copyY   = stopY;
        window.setTimeout ("FlyFromBottom (copyDiv,copyY);", 10);
     }     
  }


  function flyIn()
  { 
        i = currentSequence;

        switch (i)
        {
           // Fly From Top
           case 0: sequence[i].style.pixelTop = document.body.offsetTop 
                                              - sequence[i].offsetTop  
                                              - sequence[i].offsetHeight;
                   sequence[i].style.visibility= "visible";
                   window.setTimeout ("FlyFromTop (sequence[i],0);",10);
                   break;
      
           // Fly from Right
           case 1: case 2:  case 3:  case 4:  case 5:  
           case 6: case 7:  case 8:  case 9:  
        sequence[i].style.pixelLeft = document.body.offsetWidth
                                                - sequence[i].offsetLeft;
                    sequence[i].style.visibility= "visible";
                    window.setTimeout ("FlyFromRight (sequence[i],70);",70);
                    break;
 
           // Fly from Bottom
           case 10: sequence [i].style.pixelTop = document.body.offsetHeight
                                               - sequence[i].offsetTop;
                    sequence[i].style.visibility= "visible";
                    window.setTimeout ("FlyFromBottom (sequence[i],0);",10);
           default: break;
        }
    
       // prepare for the next sequence
       currentSequence++;     

      // stop when end of animation sequence is reached!
      if (currentSequence == sequence.length)
         window.clearInterval(iTimerID);
         
  }

  function initFlyingText()
  {
     // Define the order of objects in the animation sequence
     sequence = new Array (Text1, Text2, Text3, Text4, Text5, 
                           Text6, Text7, Text8, Text9, Text10, Text11);

     // setup the timer
     iTimerID= window.setInterval("flyIn()",1500);    

     // initialize where you are in the sequence
     currentSequence=0;
  }

/** end of flying text */

/** begin of news scrolling text */
// Courtesy of SimplytheBest.net (http://simplythebest.net/info/dhtml_scripts.html)
function checkBrowser(){
  this.ver=navigator.appVersion
  this.dom=document.getElementById?1:0
  this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
  this.ie4=(document.all && !this.dom)?1:0;
  this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;
  this.ns4=(document.layers && !this.dom)?1:0;
  this.bw=(this.ie5 || this.ie4 || this.ns4 || this.ns5)
  return this
}
bw=new checkBrowser()

lstart=200
loop=true 
speed=150
pr_step=5

function makeObj(obj,nest){
    nest=(!nest) ? '':'document.'+nest+'.'
  this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0;
    this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0;
  this.scrollHeight=bw.ns4?this.css.document.height:this.el.offsetHeight
  this.newsScroll=newsScroll;
  this.moveIt=b_moveIt; this.x; this.y;
    this.obj = obj + "Object"
    eval(this.obj + "=this")
    return this
}

function b_moveIt(x,y)
{
  this.x=x;
        this.y=y
  this.css.left=this.x
  this.css.top=this.y
}

function newsScroll(speed){
  if(this.y>-this.scrollHeight){
    this.moveIt(0,this.y-pr_step)
    setTimeout(this.obj+".newsScroll("+speed+")",speed)
  }else if(loop) {
    this.moveIt(0,lstart)
    eval(this.obj+".newsScroll("+speed+")")
    }
}

function newsScrollInit(){
  oNewsCont=new makeObj("divNewsCont")
  oNewsScroll=new makeObj("divNewsText","divNewsCont")
  oNewsScroll.moveIt(0,lstart)
  oNewsCont.css.visibility="visible"
  oNewsScroll.newsScroll(speed)
}

/** end of news scrolling text */

var timer

function change_logo_message(txt)
{
   var x=document.getElementById('logo_table').rows
   var y=x[0].cells
   y[2].style.color="#00AADD"
   y[2].innerHTML=txt
}


function inset(elmnt)
{
   elmnt.style.border="inset 2"
}

function outset(elmnt)
{
   elmnt.style.border="outset 0"
}

function blinklink()
{
   if (!document.getElementById('blink').style.color)
   {
  document.getElementById('blink').style.color="red"
   }
   if (document.getElementById('blink').style.color=="red")
   {
        document.getElementById('blink').style.color="purple"
   }
   else
   {
  document.getElementById('blink').style.color="red"
   }
   timer=setTimeout("blinklink()",100)
}

function stoptimer()
{
clearTimeout(timer)
}

/**
  Main Menu
*/
function createjsDOMenu() {
  mainMenu = new jsDOMenu(120, "", "relative", true);
  with (mainMenu) {
    addMenuItem(new menuItem("HOME", "homeItem", "/default.asp"));
addMenuItem(new menuItem("What's New", "homeItem", "events/2008/December/20081111_CBAA2009_News.htm"));
    addMenuItem(new menuItem("Events", "eventItem"));
    addMenuItem(new menuItem("Membership", "memberItem"));
    addMenuItem(new menuItem("Board", "boardItem"));

    addMenuItem(new menuItem("Sponsors", "homeItem", "/sponsors/sponsors.asp"));

    addMenuItem(new menuItem("ByLaw", "bylawItem", "/bylaw/Bylaws.html"));
    addMenuItem(new menuItem("Mailing List", "mailingItem"));
    addMenuItem(new menuItem("Contact Us", "contactItem", "/contact/contact.asp"));
    addMenuItem(new menuItem("Login", "loginItem", "/membership/logon.asp"));
    addMenuItem(new menuItem("-"));
    addMenuItem(new menuItem("Links", "linkItem")); // This is a submenu item.
    moveTo(10, 133);
    show();

  }
  linkMenu = new jsDOMenu(120, "", "relative");
  with (linkMenu) {
    addMenuItem(new menuItem("1000 Chinese Site", "", "http://www.1000site.com"));
    addMenuItem(new menuItem("ShenZhen Office in America", "", "http://www.shenzhenoffice.org"));
  }
  mainMenu.items.linkItem.setSubMenu(linkMenu);

  eventMenu = new jsDOMenu(120, "", "relative");
  with (eventMenu) 
  {
    addMenuItem(new menuItem("2008", "", "/events/2008Events.asp"));
    addMenuItem(new menuItem("2006", "", "/events/2006Events.asp"));
    addMenuItem(new menuItem("2005", "", "/events/2005Events.asp"));
    addMenuItem(new menuItem("2004", "", "/events/2004Events.asp"));
    addMenuItem(new menuItem("2003 Chinese New Year Gala", "", "/events/2003/2003ChineseNewYearGala.html"));
    addMenuItem(new menuItem("2002 Chinese New Year Gala", "", "/events/2002/NewYearGala2002-8.html"));
  }
  mainMenu.items.eventItem.setSubMenu(eventMenu);

  boardMenu = new jsDOMenu(120, "", "relative");
  with (boardMenu) {
    addMenuItem(new menuItem("Board", "", "/board/bod.html"));
    addMenuItem(new menuItem("President", "", "/board/president.asp"));
    addMenuItem(new menuItem("Vice President", "", "/board/vp.asp"));
    addMenuItem(new menuItem("Directors", "", "/board/board_members.asp"));
  }
  mainMenu.items.boardItem.setSubMenu(boardMenu);

  memberMenu = new jsDOMenu(120, "", "relative");
  with (memberMenu) {
    addMenuItem(new menuItem("Member Benefit", "", "/membership/benefit.html"));
    addMenuItem(new menuItem("Logon", "", "/membership/logon.asp"));
    addMenuItem(new menuItem("Join CBAA", "", "/membership/join_cbaa.asp"));
    //addMenuItem(new menuItem("Join CBAA", "", "/membership/CBAAMembershipApplication2005.pdf"));
    addMenuItem(new menuItem("Renew Membership", "", "/membership/logon.asp"));
  }
  mainMenu.items.memberItem.setSubMenu(memberMenu);

  mailingMenu = new jsDOMenu(120, "", "relative");
  with(mailingMenu) {
    addMenuItem(new menuItem("Add My Email", "", "/nonmember/add_email.asp"));
  }
  mainMenu.items.mailingItem.setSubMenu(mailingMenu);
}

/**
* scroll bar 
**/

function changeScrollBarColor()
{
   document.body.style.scrollbarBaseColor="#FFEEDD"
   document.body.style.scrollbarTrackColor="#FFFFFF"
   document.body.style.scrollbarHighlightColor="#FFFFFF"
   document.body.style.scrollbar3dlightColor="#00FFFF"
   document.body.style.scrollbarDarkshadowColor="#FF0000"
   document.body.style.scrollbarShadowColor="#FFEEFF"
   document.body.style.scrollbarArrowColor="red"
}

/** for membership registration */

function onError(error_message)
{
  alert(error_message);
}



function hasValue(obj, obj_type)
{
  if (obj_type == "TEXT" || obj_type == "PASSWORD")
  {
    if (obj.value.length == 0) 
      return false;
    else 
      return true;
  }
  else if (obj_type == "SELECT")
  {
    for (i=0; i < obj.length; i++)
    {
      if (obj.options[i].selected && obj.options[i].value != "")
      {
        return true;
      }
    }
    return false; 
  }
  else if (obj_type == "SINGLE_VALUE_RADIO" || obj_type == "SINGLE_VALUE_CHECKBOX")
  {
    if (obj.checked)
      return true;
    else
      return false; 
  }
  else if (obj_type == "RADIO" || obj_type == "CHECKBOX")
  {
    for (i=0; i < obj.length; i++)
    {
      if (obj[i].checked)
        return true;
    }
    return false; 
  }
}


//Returns true if value is a number or is NULL
//otherwise returns false 
function checkInteger(object_value)
{
  //Returns true if value is an integer defined as
  //   having an optional leading + or -.
  //   otherwise containing only the characters 0-9.
  var decimal_format = ".";
  var check_char;

  //The first character can be + -  blank or a digit.
  check_char = object_value.indexOf(decimal_format)
  //Was it a decimal?
  if (check_char < 1)
    return checknumber(object_value);
  else
  {
    return false;
  }
}



function numberrange(object_value, min_value, max_value)
{
  // check minimum
  if (min_value != null)
  {
    if (object_value < min_value)
      return false;
  }

  // check maximum
  if (max_value != null)
  {
    if (object_value > max_value)
      return false;
  }

  //All tests passed, so...
  return true;
}



//Returns true if value is a number or is NULL
//otherwise returns false 
function checknumber(object_value)
{
  //Returns true if value is a number defined as
  //   having an optional leading + or -.
  //   having at most 1 decimal point.
  //   otherwise containing only the characters 0-9.
  var start_format = " .+-0123456789";
  var number_format = " .0123456789";
  var check_char;
  var decimal = false;
  var trailing_blank = false;
  var digits = false;

  //The first character can be + - .  blank or a digit.
  check_char = start_format.indexOf(object_value.charAt(0))
  //Was it a decimal?
  if (check_char == 1)
    decimal = true;
  else if (check_char < 1)
  {
    return false;
  }

  //Remaining characters can be only . or a digit, but only one decimal.
  for (var i = 1; i < object_value.length; i++)
  {
       check_char = number_format.indexOf(object_value.charAt(i))
       if (check_char < 0)
        {
   return false;
       }
       else if (check_char == 1)
       {
   if (decimal)   // Second decimal.
         {
     return false;
         }
   else
     decimal = true;
       }
       else if (check_char == 0)
       {
   if (decimal || digits) 
     trailing_blank = true;
   // ignore leading blanks

       }
       else if (trailing_blank)
       {
   return false;
       }
       else
   digits = true;
  } 
  //All tests passed, so...
  return true;
}



function checkrange(object_value, min_value, max_value)
{
  //if value is in range then return true else return false

  if (object_value.length == 0)
    return true;


  if (!checknumber(object_value))
  {
    return false;
  }
  else
  {
    return (numberrange((eval(object_value)), min_value, max_value));
  }

  //All tests passed, so...
  return true;
}


function checkAreaCode(object_value)
{
  if (object_value.length != 3)
    return false;

  // check if first 3 characters represent a valid area code
  if (!checknumber(object_value.substring(0,3)))
    return false;
  else if (!numberrange((eval(object_value.substring(0,3))), 100, 1000))
      return false;

  return true;
}

//validate the phone number (7 digits) without area code
function checkphone7(object_value)
{
  if (object_value.length != 7 && object_value.length != 8)
    return false;

    // check if  characters 1 - 3 represent a valid exchange
    if (!checknumber(object_value.substring(0,3)))
      return false;
    else if (!numberrange((eval(object_value.substring(0,3))), 100, 1000))
      return false;

  // check if exchange/number separator is either a'-' or ' '
  if (object_value.charAt(3) == "+")
    return false;

  if (object_value.charAt(3) == "-" || object_value.charAt(3) == " ")
  {
    return (checkInteger(object_value.substring(4, 8)));
  }
  else
  {
    return (checkInteger(object_value.substring(3, 7)));
  }
}

/** will not be used */
/** 
function checkphone(object_value)
{
  if (object_value.length == 0)
    return true;

  if (object_value.length != 12)
    return false;

  // check if first 3 characters represent a valid area code
  if (!checknumber(object_value.substring(0,3)))
    return false;
  else
    if (!numberrange((eval(object_value.substring(0,3))), 100, 1000))
      return false;

  // check if area code/exchange separator is either a'-' or ' '
  if (object_value.charAt(3) != "-" && object_value.charAt(3) != " ")
    return false;

    // check if  characters 5 - 7 represent a valid exchange
    if (!checknumber(object_value.substring(4,7)))
      return false;
  else
    if (!numberrange((eval(object_value.substring(4,7))), 100, 1000))
      return false;

  // check if exchange/number separator is either a'-' or ' '
  if (object_value.charAt(7) != "-" && object_value.charAt(7) != " ")
    return false;

  // make sure last for digits are a valid integer
  if (object_value.charAt(8) == "-" || object_value.charAt(8) == "+")
    return false;
  else
  {
    return (checkInteger(object_value.substring(8,12)));
  }
}
***/

function checkzip(object_value)
{
  if (object_value.length != 5 && object_value.length != 10)
    return false;

  // make sure first 5 digits are a valid integer
  if (!checkInteger(object_value.substring(0,5)))
    return false;

  if (object_value.length == 5)
    return true;

  // check if separator is either a'-' or ' '
  if (object_value.charAt(5) != "-" && object_value.charAt(5) != " ")
    return false;

  // check if last 4 digits are a valid integer
  return (checkInteger(object_value.substring(6,10)));
}

function checkRegistrationForm1(form_obj)
{

  if  (!hasValue(form_obj.last_name, "TEXT" )) 
  {
    onError("Last Name Cannot be blank!");
    return false; 
  }

  if  (!hasValue(form_obj.first_name, "TEXT" )) 
  {
    onError("First Name Cannot be blank!");
    return false; 
  }

  if  (!hasValue(form_obj.street, "TEXT" )) 
  {
    onError("Street Address cannot be blank!");
    return false; 
  }

  if  (!hasValue(form_obj.city, "TEXT" )) 
  {
    onError("City name cannot be blank!");
    return false; 
  }

  if  (!checkzip(form_obj.zipCode.value)) 
  {
    onError("Error on Zip Code format!");
    return false; 
  }


  if  (!checkAreaCode(form_obj.homeAreaCode.value))
  {
    onError("Error on Area Code for home phone!");
    return false; 
  }

  if  (!checkphone7(form_obj.homePhoneNum.value))
  {
    onError("Error on Home Phone Number: " + form_obj.homePhoneNum.value);
    return false; 
  }

  if  (!hasValue(form_obj.email, "TEXT" )) 
  {
    onError("Email address cannot be blank!");
    return false; 
  }

  if  (!hasValue(form_obj.membership_type, "SELECT" )) 
  {
    onError("Please select membership type!");
    return false; 
  }

  return true;
}

function checkRegistrationForm2(form_obj)
{

  if  (!hasValue(form_obj.spouse_last_name, "TEXT" )) 
  {
    onError("Last Name Cannot be blank!");
    return false; 
  }

  if  (!hasValue(form_obj.spouse_first_name, "TEXT" )) 
  {
    onError("First Name Cannot be blank!");
    return false; 
  }

  if  (!checkAreaCode(form_obj.spouse_phone_area.value))
  {
    onError("Error on Area Code for home phone!");
    return false; 
  }

  if  (!checkphone7(form_obj.spouse_phone.value))
  {
    onError("Error on Home Phone Number: " + form_obj.homePhoneNum.value);
    return false; 
  }

  if  (!hasValue(form_obj.spouse_email, "TEXT" )) 
  {
    onError("Email address cannot be blank!");
    return false; 
  }

  return true;
}

function checkSignupForm(form_obj)
{

  if  (!hasValue(form_obj.last_name, "TEXT" )) 
  {
    onError("Last Name Cannot be blank!");
    return false; 
  }

  if  (!hasValue(form_obj.first_name, "TEXT" )) 
  {
    onError("First Name Cannot be blank!");
    return false; 
  }

  if  (!hasValue(form_obj.email, "TEXT"))
  {
    onError("Email address cannot be blank!");
    return false; 
  }

  if  (!hasValue(form_obj.password, "PASSWORD"))
  {
    onError("Password cannot be blank!");
    return false; 
  }

  if  (!hasValue(form_obj.password_2, "PASSWORD") ||
       form_obj.password_2.value != form_obj.password.value)
  {
    onError("Password doesn't match!");
    return false; 
  }


  return true;
}

function checkLoginForm(form_obj)
{
  if  (!hasValue(form_obj.login, "TEXT"))
  {
    onError("Email address cannot be blank!");
    return false;
  }

  if  (!hasValue(form_obj.passwd, "PASSWORD"))
  {
    onError("Password cannot be blank!");
    return false;
 }

 return true;
}

function checkUpdateLogonForm(form_obj)
{
  if  (!hasValue(form_obj.new_password, "PASSWORD" )) 
  {
    onError("Password Cannot be blank!");
    return false; 
  }

  if  (!hasValue(form_obj.new_email, "TEXT"))
  {
    onError("Email address cannot be blank!");
    return false; 
  }


  return true;
}

function checkActivityRegistrationForm(form_obj)
{
    if(!hasValue(form_obj.first_name, "TEXT"))
    {
      onError("First Name cannot be blank!");
      return false;
    }
    
    if(!hasValue(form_obj.last_name, "TEXT"))
    {
      onError("Last Name cannot be blank!");
      return false;
    }

    if(!hasValue(form_obj.num_adults, "TEXT"))
    {
      onError("Number of Adults cannot be blank!");
      return false;
    }
    
    if(hasValue(form_obj.num_adults, "TEXT") && !checkInteger(form_obj.num_adults.value))
    {
      onError("Number of Adults must be an valid number!");
      return false;
    }

    if(hasValue(form_obj.num_children_under4, "TEXT") && !checkInteger(form_obj.num_children_under4.value))
    {
      onError("The field for Number of Children Under 4 must be an valid number!");
      return false;
    }

    if(hasValue(form_obj.num_children, "TEXT") && !checkInteger(form_obj.num_children.value))
    {
      onError("The field value for Number of Children must be an valid number!");
      return false;
    }

    if(!hasValue(form_obj.member, "RADIO"))
    {
      onError("Choose the membership type!");
      return false;
    }
}

/** END OF membership registration */
