
var idEvalPass = "";
var idLogin    = "";
var idEmail    = "";

function addLoadListener(func) {
	if (window.addEventListener) {
		window.addEventListener("load", func, false);
	} else if (document.addEventListener) {
		document.addEventListener("load", func, false);
	} else if (window.attachEvent) {
		window.attachEvent("onload", func);
	} else if (typeof window.onload != "function") {
		window.onload = func;
	} else {
		var oldonload = window.onload;
	    	window.onload = function() {
	    	oldonload();
			func();
	    };
  }
}

function addEventForm(element, eventType, func){
	if (element.addEventListener) {
		element.addEventListener(eventType, func, false);
	} else if (element.attachEvent) {
		element.attachEvent('on' + eventType, func);
  } else if (typeof element['on' + eventType] != "function") {
		element['on' + eventType] = func;
	} else {
		var oldfunc = element['on' + eventType];
		element['on' + eventType] = function() {
			oldfunc();
			func();
		};
  }
}

String.prototype.countChar = function(char) {
	var i     = 0;
	var count = 0;
	while (i < this.length) {
		var c = this.charAt(i);
		if (c.search(char) != -1) {
			count++;
		}
		i++;
	}
	return count;
};

Array.prototype.inArray = function(elem) {
	var i = 0;
	while (i < this.length) {
		if (this[i] == elem) {
			return true;
		}
		i++;
	}
	return false;
};

function getByTag(name) {
	return document.getElementsByTagName(name);
}

function makeArray(elem) {
	return (typeof(elem) == "object") ? elem : new Array(elem);
}

function getByType(type) {
	var arrInput     = getByTag('input');
	var returnInputs = new Array();
	var arrType      = makeArray(type);
	var i           = 0;	
	
	while (i < arrInput.length ) {
		if (arrType.inArray(arrInput[i].type)) {
			returnInputs.push(arrInput[i]);
		}
		i++
	}
	return returnInputs;
}

function displayReload() {
	if ($("up")) {
    $("up").style.diplay = "inline";
	  $("up").style.cursor = "pointer";
	  addEventForm($("up"),"click",majCaptcha);
	}  
}

function majCaptcha() {
	var img = document.createElement('img');
	var oldImg = $('captcha');
	img.id  = "captcha";
	img.src = "modules/users/captcha/captcha.php?r="+ Math.round(Math.random(0)*1000)+1;
	oldImg.parentNode.replaceChild(img,oldImg);
}

function evalPwd(id) {
	var cmpx = 0;
	var s    = $(id).value;
	
	if (s.length >= 6) {
		var bad = s.search("[a-z]") != -1 || s.search("[A-Z]") != -1 || s.search("[0-9]") != -1;
		if (bad) {
			cmpx++;
		}
		var mid = (s.search("[A-Z]") != -1 && s.search("[a-z]") != -1) || 
			(s.search("[A-Z]") != -1 && s.search("[0-9]") != -1) ||
			(s.search("[a-z]") != -1 && s.search("[0-9]") != -1) || 
			s.search("[\x20-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]") != -1 ||
			s.length >= 8;
		if (mid) {
			cmpx++;
		}
		var good =  (s.countChar("[0-9]") >= 2 && s.countChar("[a-z]") >= 2 && s.countChar("[A-Z]") >= 2) || s.length >= 10 ;
		if (good) {
			cmpx++;
		}
		var mgood =  (mid && s.search("[\x20-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]") != -1)  || s.length > 12 ;
		if (mgood) {
			cmpx++;
		}
		var vgood = mgood && s.search("[\x20-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]") != -1; 
		if (good && vgood) {
			cmpx++;
		}
	}
	//alert(cmpx);
	if (cmpx <= 1) {
		$("bad").className = "red";
		$("mid").className = "nrm";
		$("good").className = "nrm";
		$("vgood").className = "nrm";
	} else if (cmpx < 3) {
		$("bad").className = "yellow";
		$("mid").className = "yellow";
		$("good").className = "nrm";
		$("vgood").className = "nrm";
	} else if (cmpx < 4) {
		$("bad").className = "blue";
		$("mid").className = "blue";
		$("good").className = "blue";
		$("vgood").className = "nrm";
	} else {
		$("bad").className = "green";
		$("mid").className = "green";
		$("good").className = "green";
		$("vgood").className = "green";
	}
}

function showError(id, response) {
	if (!$("ex"+ id)) {
		var div = document.createElement('div');
		var texte = document.createTextNode(response);
		div.appendChild(texte);
		div.id = "ex"+ id;
		$(id).parentNode.appendChild(div);
		h = div.getStyle("height").replace("px","");
    new Fx.Style("ex"+ id, 'height', {duration:100}).start(0, h);
    
  }

	$(id).className  = $(id).className.replace("validation-passed","");
	$(id).className += " validation-failed";
}

function hideError(id) {
	if ($("ex"+ id)) {
		var div = $("ex"+ id);
		div.setOpacity(0);
    new Fx.Style("ex"+ id, 'height', {duration:500}).start(div.getStyle("height").replace("px",""), 0);
		$(id).parentNode.removeChild(div);
    $(id).className  = $(id).className.replace("validation-failed","");
		$(id).className += " validation-passed";
	}
}
	
function checkLogin(id) {
	if ($(id).value != "" || $("ex"+ id)) {
		new Ajax(urlCheck +'log&val='+ $(id).value,
		{
			method:'get',
			onComplete: function(response){
				var response = response.split("|") || "no response text";
				
				if (response[0].search("error3") != -1) {
					showError(id, response[1]);
				} else {
					hideError(id);
				}
			}
	  }).request();
	}
}

function checkEmail(id) {
	if ($(id).value != "" || $("ex"+ id)) {
		new Ajax(urlCheck +'mail&val='+ $(id).value,
		{
			method:'get',
			onComplete: function(response){
				var response = response.split("|") || "no response text";
				if (response[0].search("error1") != -1) {
					showError(id, response[1]);
				} else {
					hideError(id);
				}
			}
	  }).request();
	}
}
 
function checkValidEmail(id) {
	if ($(id).value != "" || $("ex"+ id)) {
		new Ajax(urlCheck +'mail&val='+ $(id).value,
		{
			method:'get',
			onComplete: function(response){
				var response = response.split("|") || "no response text";
				if (response[0].search("error1") != -1 || response[0].search("error2") != -1) {
					showError(id, response[1]);
				} else {
					hideError(id);
				}
			}
	  }).request();
	}
}

function displayNivPass() {
	if ($("nivpass")) {
		$("nivpass").style.display = "block";
	}	
}

function evalInput() {
	var arrInputs = getByType(new Array("text","password"));
	var i         = 0;
	
	while (i  < arrInputs.length) {
		if (arrInputs[i].className.search("\s?evalPass\s?") != -1) {
			idEvalPass = arrInputs[i].id;
			addEventForm(arrInputs[i], "keyup",function(){evalPwd(idEvalPass);});
			addEventForm(arrInputs[i], "blur",function(){evalPwd(idEvalPass);});
		}
		if (arrInputs[i].className.search("\s?exLogin\s?") != -1) {
			idLogin = arrInputs[i].id;
			addEventForm(arrInputs[i], "keyup",function(){checkLogin(idLogin);});
			addEventForm(arrInputs[i], "blur",function(){checkLogin(idLogin);});
		}
		if (arrInputs[i].className.search("\s?exEmail\s?") != -1) {
			idEmail = arrInputs[i].id;
			addEventForm(arrInputs[i], "keyup",function(){checkEmail(idEmail);});
			addEventForm(arrInputs[i], "blur",function(){checkValidEmail(idEmail);});
		}
		i++;
	}
}

window.addEvent('domready', displayNivPass);
window.addEvent('domready', evalInput);