if ( navigator.userAgent.substr( 0, 34 ) == 'Mozilla/4.0 (compatible; MSIE 6.0;'
  || navigator.userAgent.substr( 0, 34 ) == 'Mozilla/4.0 (compatible; MSIE 7.0;'
  || navigator.userAgent.substr( 0, 34 ) == 'Mozilla/4.0 (compatible; MSIE 8.0;'
  || navigator.userAgent.match( /Firefox\/1\.5/ )
  || navigator.userAgent.match(/Firefox\/2\./)
  || navigator.userAgent.match(/Firefox\/3\./) 
  || navigator.userAgent.substr( 0, 6 ) == 'Opera/' )

(function(){

var watermarkFocus = function( event ) {
  var input = event.srcElement || event.target;
  if ( !input.isWatermark && input.value != input.watermark ) 
    return;
  input.isWatermark = false;
  input.value = '';
  input.className = input.originalClassName;
};


var watermarkBlur = function( event ) {
  var input = event.srcElement || event.target;
  input.isWatermark = input.value == '' || input.value == input.watermark;
  if ( input.isWatermark ) {
    input.className = input.watermarkStyle || input.originalClassName;
    input.value = input.watermark;
  }
};


var watermarkStart = function() {
  var inputs = document.getElementsByTagName( "input" );
  for ( var i = inputs.length - 1; i >= 0; i-- ) {
    var input = inputs[ i ];
    var watermark = input.getAttribute( "watermark" ) || '';
    var watermarkStyle = input.getAttribute( "watermarkStyle" ) || '';
    if ( watermark == '' && watermarkStyle == '' )
      continue;
    input.watermark = watermark;
    input.watermarkStyle = watermarkStyle;
    if ( input.addEventListener ) {
      input.addEventListener( "focus", watermarkFocus, false );
      input.addEventListener( "blur", watermarkBlur, false );
    } else {
      input.attachEvent( "onfocus", watermarkFocus );
      input.attachEvent( "onblur", watermarkBlur );
    }
    input.originalClassName = input.className;
    input.isWatermark = input.value == '' || input.value == input.watermark;
    if ( input.isWatermark ) {
      input.value = input.watermark;
      input.className = input.watermarkStyle || input.originalClassName;
    }
  }
}


var validatorSubmit = function() {
  var form = typeof event == 'object' ? ( event.srcElement || event.target ) : this;
  var elements = form.elements;
  for ( var i = 0; i < elements.length; i++ ) {
    var element = elements[ i ];
    var minlength = parseInt( element.getAttribute( "minlength" ), 10 );
    if ( typeof minlength == 'number' && element.value.length < minlength ) {
      element.focus();
      var message = element.getAttribute( "requiredMessage" ) || form.getAttribute( "requiredMessage" ) 
        || document.getElementsByTagName( "body" )[ 0 ].getAttribute( "requiredMessage" );
      if ( message )
        alert( message );
      return false;
    }
  }
  return true;
}


var validatorStart = function() {
  var forms = document.getElementsByTagName( "form" );
  for ( var i = forms.length - 1; i >= 0; i-- ) {
    var form = forms[ i ];
    if ( form.addEventListener )
      form.addEventListener( "submit", validatorSubmit, false );
    else
      form.attachEvent( "onsubmit", validatorSubmit );
  }
}


if ( window.addEventListener ) {
  window.addEventListener( "load", watermarkStart, false );
  window.addEventListener( "load", validatorStart, false );
} else {
  window.attachEvent( "onload", watermarkStart );
  window.attachEvent( "onload", validatorStart );
}


window.sortTableInt = function( cell, direction ) {
  while ( typeof cell.cellIndex == 'undefined' )
    if ( !( cell = cell.parentNode ) )
      return;
  if ( typeof direction == 'undefined' )
    direction = -1;
  var tbody = cell.parentNode.parentNode;
  var table = cell.parentNode.parentNode.parentNode;
  var column = cell.cellIndex;
  if ( table.sortedFor == column + 'x' + direction )
    direction = -direction;
  var rows = [];
  for ( var i = 1; i < table.rows.length; i++ )
    rows.push( table.rows[ i ] );
  rows.sort( function(a,b) {
    return direction * ( parseInt( a.cells[ column  ].getAttribute( 'intValue' ) ) -
      parseInt( b.cells[ column  ].getAttribute( 'intValue' ) ) );
  } );
  for ( var i = 0; i < rows.length; i++ )
    tbody.appendChild( rows[ i ] );
  table.sortedFor = column + 'x' + direction;
};

})();
