﻿// JavaScript Document

var error_M = null;
var currentFailureField = null;

var _USERNAME_REG = /^([\?!\/]*)+\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
var _PASSWORD_REG = /^(?=.{6,20})(((?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\W))).*$/;
var _FREETEXT = /^[\n\r\t\s\ ]*[A-Za-z0-9א-ת_\*\#\!\?\.\,\@\^\'-.\+\=\/\\\"\:\$\-\!\:\;\&\(\)\%]{2}[\n\r\t\s\ ]*/;

function logIn() {
    var btn = document.getElementById(headerControl + "_btn_logIn");
	btn.click();
}

function logOut() {
    var btn = document.getElementById(headerControl + "_btn_logout");
    btn.click();
}

function validateAuthentication() {
	var isFormValid = true;
	var fieldsArray = [document.getElementById(headerControl + '_txtUserName'),document.getElementById(headerControl + '_txtUserPassword')];
	var isValidArr = new Array();
	isValidArr.push(ykValidatorLogIn(document.getElementById(headerControl + '_txtUserName'), "txtUserName", 6, _USERNAME_REG, true, "Username", " error"));
	isValidArr.push(ykValidatorLogIn(document.getElementById(headerControl + '_txtUserPassword'), "txtUserPassword", 2, _FREETEXT, true, "Password", " error"));
	var len = isValidArr.length;
	for (var i=0; i<len; i++) {
		if (isValidArr[i] == false) {
			isFormValid = false;
			currentFailureField = fieldsArray[i];
			currentFailureField.focus();
			break;
		}
	}
	if (isFormValid) {
		logIn();
	}				
}

function loginResponse(control,error_M) {
    var field = document.getElementById(headerControl + '_' + control)
    var errorNode = document.getElementById(control + "_err");
    if (field.parentNode.className.indexOf("error") == -1)
        field.parentNode.className += " error";
    errorNode.getElementsByTagName("td")[1].innerHTML = error_M;
    errorNode.style.display = "block";
    errorNode.style.width = errorNode.offsetWidth + "px";
	document.getElementById("passTxtLabel").style.display = "none";
    field.focus();
    return false;
}

function ykValidatorLogIn(field, fieldName, minLength, reg, req, msg, errorClass) {
    var errorNode = document.getElementById(fieldName + "_err");

    if ((field.value == "" || field.value == msg)  && req) {
		error_M = "Required field";
		if (field.parentNode.className.indexOf("error") == -1)
			field.parentNode.className += errorClass;
		errorNode.getElementsByTagName("td")[1].innerHTML = error_M;
		errorNode.style.display = "block";
		errorNode.style.width = errorNode.offsetWidth + "px";
		field.focus();
		return false;
	}
	else if (field.value.length > 0) {
		if (field.value.length < minLength) {
			error_M = minLength + " chars mininum required";
			if (msg == "Username")
				error_M = "Valid email requires " + minLength + " chars mininum";
			if (field.parentNode.className.indexOf("error") == -1)
				field.parentNode.className += errorClass;
			errorNode.getElementsByTagName("td")[1].innerHTML = error_M;
			errorNode.style.display = "block";
			errorNode.style.width = errorNode.offsetWidth + "px";
			field.focus();
			return false;			
		}
        else if (!reg.test(field.value)) {
			error_M = "Invalid characters";
			if (msg == "Password")
				error_M = msg + " must contain special characters";
			if (msg == "Username")
				error_M = "Valid email required";
			if (field.value.indexOf(msg) > -1)
				error_M = "Required field";
			if (field.parentNode.className.indexOf("error") == -1)
				field.parentNode.className += errorClass;
			errorNode.getElementsByTagName("td")[1].innerHTML = error_M;
			errorNode.style.display = "block";
			errorNode.style.width = errorNode.offsetWidth + "px";
			field.focus();
			return false;
		}
		else
		{
			if (field.parentNode.className.indexOf("error") > -1)
				field.parentNode.className = field.parentNode.className.replace(errorClass,"");
			errorNode.style.display = "none";
			return true;
		}
	}
	else {
		if (field.parentNode.className.indexOf("error") > -1)
			field.parentNode.className = field.parentNode.className.replace(errorClass,"");
		errorNode.style.display = "none";
		return true;
	}	
}
