function addEvent(obj, evType, fn){
 if (obj.addEventListener){
   obj.addEventListener(evType, fn, false);
   return true;
 } else if (obj.attachEvent){
   var r = obj.attachEvent("on"+evType, fn);
   return r;
 } else {
   return false;
 }
}

function getLabelForId(id) {
 var label, labels = document.getElementsByTagName('label');
 for (var i = 0; (label = labels[i]); i++) {
   if (label.htmlFor == id) {
     return label;
   }
 }
 return false;
}
function checkRequired(id) {
 var formfield = document.getElementById(id);
 var label = getLabelForId(id);
 if (formfield.value.length == 0) {
   label.className = 'problem';
 } else {
   label.className = 'completed';
 }
} 




function validateNumber(field, msg, min, max)
{
    if (!min) { min = 0 }
    if (!max) { max = 255 }
    
    if ( (parseInt(field.value) != field.value) ||  
           field.value.length < min || field.value.length > max)
    {
        alert(msg);
        field.focus();
        field.select();
        return false;
    }
    return true;
}

function validateString(field, msg, min, max) {
    if (!min) { min = 1 }
    if (!max) { max = 65535 }
    
    if (!field.value || field.value.length < min ||  
      field.value.max > max)
    {
        alert(msg);
        field.focus();
        field.select();
        return false;
    }
    return true;
}

/*-------------------------------------------

example usage for validata functions

<form action="handler"
onsubmit="return (
validateNumber(this.phone, 'Please enter a phone  
       number, numbers only', 5, 10) &&
validateString(this.firstName, 'Please  
       enter your first name', 3, 15) &&
validateString(this.lastName, 'Please  
       enter your last name', 3, 15)
);">

-------------------------------------------*/


/*------------------------------------------------------------
  Form "focus" effect for IE, since IE is too stupid
  to understand the :focus pseudo-class :b
*/
addEvent(window, 'load', function() {
 var input, textarea;
 var inputs = document.getElementsByTagName('input');
 for (var i = 0; (input = inputs[i]); i++) {
   addEvent(input, 'focus', oninputfocus);
   addEvent(input, 'blur', oninputblur);
 }
 var textareas = document.getElementsByTagName('textarea');
 for (var i = 0; (textarea = textareas[i]); i++) {
   addEvent(textarea, 'focus', oninputfocus);
   addEvent(textarea, 'blur', oninputblur);
 }
});
function oninputfocus(e) {
 /* Cookie-cutter code to find the source of the event */
 if (typeof e == 'undefined') {
   var e = window.event;
 }
 var source;
 if (typeof e.target != 'undefined') {
    source = e.target;
 } else if (typeof e.srcElement != 'undefined') {
    source = e.srcElement;
 } else {
   return;
 }
 /* End cookie-cutter code */
 source.style.border='2px solid #000';
}
function oninputblur(e) {
 /* Cookie-cutter code to find the source of the event */
 if (typeof e == 'undefined') {
   var e = window.event;
 }
 var source;
 if (typeof e.target != 'undefined') {
    source = e.target;
 } else if (typeof e.srcElement != 'undefined') {
    source = e.srcElement;
 } else {
   return;
 }
 /* End cookie-cutter code */
 source.style.border='2px solid #ccc';
} 

//------------------------------------------------------------


