﻿/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("nl.materieelmarkt.Online.Extensions");

nl.materieelmarkt.Online.Extensions.ValidationClass = function(element) {
  nl.materieelmarkt.Online.Extensions.ValidationClass.initializeBase(this, [element]);
  this._labelClientID=null;
  this._label=null;
  this._classOK=null;
  this._classNOK=null;
  this._orgEvaluationfunction=null;
}

nl.materieelmarkt.Online.Extensions.ValidationClass.prototype = {
  initialize: function() {
    nl.materieelmarkt.Online.Extensions.ValidationClass.callBaseMethod(this, 'initialize');
    this._label=$get(this._labelClientID);
    var obj = this.get_element();
    this._orgEvaluationfunction = Function.createDelegate(obj, obj.evaluationfunction);
    obj.evaluationfunction = Function.createDelegate(this, this._onvalidate);
    this._onvalidate();
  },
  dispose: function() {
      nl.materieelmarkt.Online.Extensions.ValidationClass.callBaseMethod(this, 'dispose');
  },
  get_labelClientID: function() { return this._labelClientID; },
  set_labelClientID: function(value) { this._labelClientID=value; },
  get_classOK: function() { return this._classOK?this._classOK:"valid"; },
  set_classOK: function(value) { this._classOK=value; },
  get_classNOK: function() { return this._classNOK; },
  set_classNOK: function(value) { this._classNOK=value; },
  _onvalidate: function() {
    if (this._orgEvaluationfunction(this.get_element())) {
      Sys.UI.DomElement.removeCssClass(this._label, this.get_classNOK());
      Sys.UI.DomElement.addCssClass(this._label, this.get_classOK());
      return true;
    }
    else {
      Sys.UI.DomElement.removeCssClass(this._label, this.get_classOK());
      Sys.UI.DomElement.addCssClass(this._label, this.get_classNOK());
      return false;
    }
  }
}
nl.materieelmarkt.Online.Extensions.ValidationClass.registerClass('nl.materieelmarkt.Online.Extensions.ValidationClass', Sys.UI.Behavior);

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

