﻿// tests the functionality of the Person class
function loadPersonTest()
{
  // create a Person named Mike
  var Mike = new AjaxTutorial.Person("Mike");
  
  // register a handler for the change event
  Mike.add_change(OnChangeHandler);
  
  // change the name, causing the change event to fire
  Mike.set_name("Michael");
  
  // create a SmartPerson named John with the IQ of 200
  var John = new AjaxTutorial.SmartPerson("John", 200);
      
  // register an event handler for SmartPerson's change event
  John.add_change(OnChangeHandler);
      
  // change John's IQ
  John.set_iq(100);
      
  // change John's name 
  John.set_name("Johnny");
}

// handler for change event of Person and SmartPerson
function OnChangeHandler(sender, args)
{
  // display info for events fired by Person
  if (AjaxTutorial.Person.isInstanceOfType(sender))
  {
    Sys.Debug.trace(
      String.format("Person changed its {0} from {1} to {2}",
        args.get_propertyName(), args.get_oldValue(), 
        args.get_newValue()));
  }
  
  // display info for events fired by Person
  else if (AjaxTutorial.SmartPerson.isInstanceOfType(sender))
  {
    Sys.Debug.trace(
      String.format(
        "SmartPerson {0} changed its {1} from {2} to {3}",
        sender, args.get_propertyName(),  
        args.get_oldValue(), args.get_newValue())); 
  }
}