   Event.observe(window,'load',fncInit,false);
   
   function fncInit() {
       var aElements = Form.getElements('form1');
       for(var i=0;i<aElements.length;i++) {
	       Event.observe(aElements[i],'blur',fncBlurInput.bind(aElements[i]),false);
	       Event.observe(aElements[i],'focus',fncFocusInput.bind(aElements[i]),false);
	   }
	   
	   Event.observe($('password'),'keyup',fncPasswordStrength,false);
}

   
   function fncFocusInput() {
        var id = this.id;
        var colorSwap =  new fx.Color(this.id, {fromColor: "#FFFFFF", toColor: "#EFEFEF"});
        var borderSwap = new fx.Color(this.id, {fromColor: "#CCCCCC", toColor: "#0066FF", property: "borderColor"});
        colorSwap.toggle();
        borderSwap.toggle();

        $(id).parentNode.insertBefore($('warningfs'),$(id).nextSibling);
   }

   function fncBlurInput() {
        var id = this.id;
        var colorSwap =  new fx.Color(this.id, {fromColor: "#EFEFEF", toColor: "#FFFFFF"});
        var borderSwap = new fx.Color(this.id, {fromColor: "#0066FF", toColor: "#CCCCCC", property: "borderColor"});
        colorSwap.toggle();
        borderSwap.toggle();

        if (id == 'email' && $(id).value.length > 3) { 
            fncValidateEmail($(id));
        }

        if (id == 'password2') {
            fncPasswordMatch($(id));
        }
   } 

   function fncValidateEmail(objEmail) {
       var strEmail = objEmail.value;
       var pattern = /^[a-z][_.a-z0-9-]+@[a-z0-9][a-z0-9-]+\.[a-z]+([.]?[a-z][a-z]+)*/;
       var results = pattern.test(strEmail);
        
       if (results == false) {
           $('warningfs').style.top = getActualTop(objEmail) + 33;
           $('warningfs').style.left = getActualLeft(objEmail);
           $('warningmsg').innerHTML = "Please enter a valid email address.";
           $('warningfs').style.display = "block";
       } else {
           $('warningfs').style.display = "none";
       }

       return;
   }

   function fncPasswordMatch(objPassword2) {
       $('warningfs').style.top = getActualTop(objPassword2) + 33;
       $('warningfs').style.left = getActualLeft(objPassword2);

       if ($F('password').length == 0) {
           $('warningmsg').innerHTML = "You should enter a passwords first.";
           $('warningfs').style.display = "block"; 
       } else if ($F('password') != $F('password2')) {
           $('warningmsg').innerHTML = "Your password does not match.";
           $('warningfs').style.display = "block"; 
       } else {
           $('warningfs').style.display = "none";
       }
   }

   var giTest = 0;

   function fncPasswordStrength() {
       var iTest = 0;
	   var strInput = $F('password');
       if (strInput.length > 5) {iTest++;}
       if (strInput.match(/[A-Z]/)) {iTest++;}
       if (strInput.match(/[0-9]/)) {iTest++;}

       for (var i = 0; i <= strInput.length;i++) {
           if (strInput.charCodeAt(i) >= 33 && strInput.charCodeAt(i) <= 47) {iTest++; break;}
       }

       if (strInput.length <= 5) {iTest = 0;}

       var myEffect = new fx.Width($('pwstr'));
       myEffect.up =   function(value) { var step = 50; this.custom(value,value+step); }
       myEffect.down = function(value) { var step = 50; this.custom(value+step,value); }
       var d  = $('pwstr');

       switch (iTest) {
          case 0: if (iTest  < giTest){myEffect.down(100);} d.innerHTML = "Very Poor"; break;
          case 1: if (giTest < iTest) {myEffect.up(100);  } else if (iTest < giTest) {myEffect.down(100);} d.innerHTML = "Poor"; break;
          case 2: if (giTest < iTest) {myEffect.up(200);  } else if (iTest < giTest) {myEffect.down(200);} d.innerHTML = "Fair"; break;
          case 3: if (giTest < iTest) {myEffect.up(300);  } else if (iTest < giTest) {myEffect.down(300);} d.innerHTML = "Good"; break;
          case 4: if (giTest < iTest) {myEffect.up(400);  } else if (iTest < giTest) {myEffect.down(400);} d.innerHTML = "Very Good"; break;
       }
       giTest = iTest;
   }

function getActualLeft(oElement) {
    var iLeft = 0;
    var oNode = oElement;

    while (oNode != document.body) {
        iLeft += oNode.offsetLeft;
        oNode = oNode.offsetParent;
    }

    return iLeft;
}

function getActualTop(oElement) {

    var iTop = 0;
    var oNode = oElement;

    while (oNode != document.body) {
        iTop += oNode.offsetTop;
        oNode = oNode.offsetParent;
    }

    return iTop;
}


