///////////////////////////////////////////////////////////////////////////////
//
//  KIUForm
// 
var KIUForm = (function (){
/* __classDef, tracks base classes
*/

// constructor
// Arguments: N/A
// Returns:   N/A 
  function KIUForm()
  {
    this.mInputCtrls = [];
    this.mButtonCtrls = [];
  }
  
// init
// 
  KIUForm.prototype.init = function()
  {
    for (var i = 0; i < this.mInputCtrls.length; i++)
      this.mInputCtrls[i].init();
    for (var i = 0; i < this.mButtonCtrls.length; i++)
      this.mButtonCtrls[i].init();
  }; 
  
// addInputCtrl
// 
  KIUForm.prototype.addInputCtrl = function(_ctrl)
  {
    this.mInputCtrls.push(_ctrl);
  }; 
  
// addButtonCtrl
// 
  KIUForm.prototype.addButtonCtrl = function(_ctrl)
  {
    this.mButtonCtrls.push(_ctrl);
  }; 
  
// ctrl
// 
  KIUForm.prototype.ctrl = function(_id)
  {
    for (var i = 0; i < this.mInputCtrls.length; i++)
      if (this.mInputCtrls[i].mCtrlId == _id)
        return this.mInputCtrls[i];
    for (var i = 0; i < this.mButtonCtrls.length; i++)
      if (this.mButtonCtrls[i].mCtrlId == _id)
        return this.mButtonCtrls[i];
    return null;
  }; 
  
// validate
// 
  KIUForm.prototype.validate = function()
  {
    var isOk = true;
    for (var i = 0; i < this.mInputCtrls.length; i++)
    {
      if (!this.mInputCtrls[i].validate())
        isOk = false;
    }
    for (var i = 0; i < this.mButtonCtrls.length; i++)
    {
      if (!this.mButtonCtrls[i].validate())
        isOk = false;
    }
    return isOk;
  }; 
  
// reset
// 
  KIUForm.prototype.reset = function()
  {
    for (var i = 0; i < this.mInputCtrls.length; i++)
      this.mInputCtrls[i].reset();
    for (var i = 0; i < this.mButtonCtrls.length; i++)
      this.mButtonCtrls[i].reset();
  }; 
  
  return KIUForm;
})();  

///////////////////////////////////////////////////////////////////////////////
//
//  KIUInputCtrl
// 
var KIUInputCtrl = (function (){
/* __classDef, tracks base classes
*/

// constructor
// Arguments: N/A
// Returns:   N/A 
  function KIUInputCtrl(_id, _prompt, _className, _validClassName)
  {
    this.mCtrlId = _id;
    this.mCtrl = null;
    this.mPrompt = _prompt;
    this.mClassName = _className;
    this.mValidClassName = _validClassName;
  };
  
// init
// 
  KIUInputCtrl.prototype.init = function()
  {
    var dis = this;
    // on blur
    var onBlur = function()
    {
      var value = dis.ctrl().value;
      if (!dis.validate())
      {
        dis.ctrl().value = dis.mPrompt;
        if (dis.mClassName)
          dis.ctrl().className = dis.mClassName;
      }
      else
      {
        dis.ctrl().className = dis.mValidClassName;
      }
    };
    this.ctrl().onblur = onBlur;
    // on focus
    var onFocus = function()
    {
      var value = dis.ctrl().value;
      if (!dis.validate())
        dis.ctrl().value = "";
    };
    this.ctrl().onfocus = onFocus;
  }; 
  
// ctrl
// 
  KIUInputCtrl.prototype.ctrl = function()
  {
    if (this.mCtrl == null)
      this.mCtrl = document.getElementById(this.mCtrlId);
    return this.mCtrl;
  }; 
  
// value
// 
  KIUInputCtrl.prototype.value = function()
  {
    return this.ctrl().value;
  }; 
  
// validate
// 
  KIUInputCtrl.prototype.validate = function()
  {
    var val = this.value();
    if (val.length == 0 || val == this.mPrompt)
    {
      this.reset();
      return false;
    }
    return true;
  }; 
  
// reset
// 
  KIUInputCtrl.prototype.reset = function()
  {
    this.ctrl().value = this.mPrompt;
    if (this.mClassName)
      this.ctrl().className = this.mClassName;
  }; 
  
  return KIUInputCtrl;
})();  

///////////////////////////////////////////////////////////////////////////////
//
//  KIUButtonCtrl
// 
var KIUButtonCtrl = (function (){
/* __classDef, tracks base classes
*/

// constructor
// Arguments: N/A
// Returns:   N/A 
  function KIUButtonCtrl(_id, _imgPath, _hoverImgPath)
  {
    this.mCtrlId = _id;
    this.mCtrl = null;
    this.mImgPath = _imgPath;
    this.mHoverImgPath = _hoverImgPath;
  };
  
// init
// 
  KIUButtonCtrl.prototype.init = function()
  {
    var dis = this;
    if (this.mHoverImgPath)
    {
      var onMouseOver = function() {dis.ctrl().src = dis.mHoverImgPath;}
      this.ctrl().onmouseover = onMouseOver;
    }
    if (this.mImgPath)
    {
      var onMouseOut = function() {dis.ctrl().src = dis.mImgPath;}
      this.ctrl().onmouseout = onMouseOut;
    }
  }; 
  
// ctrl
// 
  KIUButtonCtrl.prototype.ctrl = function()
  {
    if (this.mCtrl == null)
      this.mCtrl = document.getElementById(this.mCtrlId);
    return this.mCtrl;
  }; 
  
// validate
// 
  KIUButtonCtrl.prototype.validate = function()
  {
    return true;
  }; 
  
// reset
// 
  KIUButtonCtrl.prototype.reset = function()
  {
  }; 
  
  return KIUButtonCtrl;
})();  

