var ActiveField;
function setActiveField(id)
{
	for (var i=0; i<document.forms.length;i++) if ($("#"+id, document.forms[i])) currentWin = $(document.forms[i]).attr("name");
	ActiveField = id;
}
var codeStatus = 0;
function validateInit()
{
	var errMSG = "";
	if (ActiveField) {
		var element2V = document.getElementById(ActiveField);
		if (element2V){
			if(element2V.type) var valElement = element2V.value;
			else var valElement = element2V.innerHTML;
			
			if (codeStatus == 0){
				if (null!=element2V.getAttribute("length")){
					val = element2V.getAttribute("length");
					if (!length(valElement, val)){
						errMSG += "Введено не допустимое количество символов! ";
					}
				}

				if (null!=element2V.getAttribute("isEmpty"))
					if (!isEmpty(valElement)){
						errMSG += "Поле обязательное для заполнения! ";
					}

				if (null!=element2V.getAttribute("isInt"))
					if (!isInt(valElement)){
						errMSG += "Можно вводить только цифры! ";
					}

				if (null!=element2V.getAttribute("regEx")){
					var reg = element2V.getAttribute("regEx");
					if (!regEx(valElement, reg)){
						errMSG += "Не правильный формат! ";
					}
				}

				if (null!=element2V.getAttribute("mail"))
					if (!mail(valElement)){
						errMSG += "Не правильно введен email адрес! ";
					}

				if (null!=element2V.getAttribute("url"))
					if (!url(valElement)){
						errMSG += "Не правильно введен URL ";
					}

				if (null!=element2V.getAttribute("datetime"))
					if (!datetime(valElement)){
						errMSG += "Неправильный формат ввода даты! ";
					}
	
				if (null!=element2V.getAttribute("checkCode"))
					if (!checkCode(valElement)){
						return;
					}
			}
			else{
				(codeStatus != "true") ? errMSG += "Введенное число не совпадает с картинкой! " : document.getElementById("code").disabled="true";
				codeStatus = 0;
			}
			if (errMSG != "") {
				if(null!=document.getElementById("error"+ActiveField)){removeElementById("error"+ActiveField);}
				var errorElement = document.getElementById("errorElement");
			    errorElement.style.display = "";
			    var newdiv = document.createElement('div');
			    newdiv.id = 'error'+ActiveField;
			    newdiv.style.position = "absolute";
			    kord = getPosition(element2V);
			    newdiv.style.top = kord.y+"px";
			    newdiv.style.left = kord.x+element2V.offsetWidth+5+"px";
			    newdiv.style.zIndex = "1000";
			    var text = "Ошибка: " + errMSG;
			    var textNode = document.createTextNode(text);
			    newdiv.appendChild(textNode);
			    errorElement.appendChild(newdiv);
				if (null != element2V.getAttribute("style")){
					if ((Browser != 'IE6') && (Browser != 'IE7')){
						var cssArray = element2V.getAttribute("style").split(";");
						if (Browser == "OP")
							if (cssArray[1] == " border-bottom: 3px solid #00FF00") SubmitStep[currentWin]++;
						else
							if (cssArray[1] == " border-color: rgb(204, 204, 204) rgb(204, 204, 204) rgb(0, 255, 0)") SubmitStep[currentWin]++;
						element2V.style.borderBottomColor="#FF0000";
					}
					else{
						if (element2V.style.borderColor == "#ccc #ccc #00ff00") SubmitStep[currentWin]++;
						element2V.style.borderColor="#ccc #ccc #ff0000";
					}
				}
				if ((Browser != 'IE6') && (Browser != 'IE7')) setElmAttr(document.getElementById("saveButton_"+currentWin), "class", "disabled");
				else document.getElementById("saveButton_"+currentWin).className="disabled";
			}
			else {
				if (null != element2V.getAttribute("style")){
					if ((Browser != 'IE6') && (Browser != 'IE7')){
						var cssArray = element2V.getAttribute("style").split(";");
						if (Browser == "OP"){if (cssArray[1] == " border-bottom: 3px solid #FF0000"){SubmitStep[currentWin]--;element2V.style.borderBottomColor="#00FF00";}}
						else{if (cssArray[1] == " border-color: rgb(204, 204, 204) rgb(204, 204, 204) rgb(255, 0, 0)"){SubmitStep[currentWin]--;element2V.style.borderBottomColor="#00FF00";}}
					}
					else{
						if (element2V.style.borderColor == "#ccc #ccc #ff0000"){
							SubmitStep[currentWin]--;
							element2V.style.borderColor="#ccc #ccc #00ff00";
						}
					}
				}
				if (SubmitStep[currentWin] == 0){
    				if ((Browser != 'IE6') && (Browser != 'IE7')) setElmAttr(document.getElementById("saveButton_"+currentWin), "class", "save");
					else document.getElementById("saveButton_"+currentWin).className="save";
				}
				if(null!=document.getElementById("error"+ActiveField))
					removeElementById("error"+ActiveField);
			}
		}
	}
}

function mail(str){
	if (str){
		var reg = new RegExp("^([a-z0-9])(([\-.]|[_]+)?([a-z0-9]+))*(@)([a-z0-9])((([-]+)?([a-z0-9]+))?)*((.[a-z]{2,3})?(.[a-z]{2,6}))$");
		if (reg.test(str))
			return true;
		return false;
	}
	else return true;
}

function datetime(str) {
	if (str){
		var reg = new RegExp("^((0[1-9])|([1-2][0-9])|(3[0-1]))\.((0[1-9])|(1[0-2]))\.[1-3][0-9]{3} - [0-2][0-9]\:[0-5][0-9]$");
		if (reg.test(str))
			return true;
		return false;
	}
	else return true;
}

function url(str) {
	if (str){
		var reg = new RegExp("(^$)|(^http://$)|^http:[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$");
		if (reg.test(str))
			return true;
		return false;
	}
	else return true;
}
function regEx(str, reg) {
	var reg = new RegExp(reg);
	if (!str) return true;
	if (reg.test(str))
		return true;
	return false;
}

function length(str, val) {
	if (str.length > val) return false;
	return true;
}

function isEmpty(str) {
	for (var i = 0; i < str.length; i++)
		if (" " != str.charAt(i))
			return true;
	return false;
}

function isInt(str) {
	for(var i=0;i<str.length;i++){
		if(!isDigit(str.charAt(i))){return false;}
	}
	return true;
}
function isDigit(num) {
	if (num.length>1){return false;}
	var string="1234567890";
	if (string.indexOf(num)!=-1){return true;}
	return false;
}

function checkCode(val) {
    JsHttpRequest.query(
        '/front/cap.php?code='+val,
        {},
        function(result, errors) {
			codeStatus = result["status"];
        },
        true
    );
    setTimeout("validateInit();",200);
}

Number.prototype.NaN0=function() { return isNaN(this) ? 0 : this; }
function getPosition(e){
    var left = 0;
    var top  = 0;

    while (e.offsetParent) {
        left += e.offsetLeft + (e.currentStyle ?
            (parseInt(e.currentStyle.borderLeftWidth)).NaN0() : 0);
        top  += e.offsetTop  + (e.currentStyle ?
            (parseInt(e.currentStyle.borderTopWidth)).NaN0() : 0);
        e = e.offsetParent;
    }

    left += e.offsetLeft + (e.currentStyle ?
            (parseInt(e.currentStyle.borderLeftWidth)).NaN0() : 0);
    top  += e.offsetTop  + (e.currentStyle ?
            (parseInt(e.currentStyle.borderTopWidth)).NaN0(): 0);

    return {x:left, y:top};
}

function getAlignedPosition(e) {
    var left = 0;
    var top  = 0;

    while (e.offsetParent) {
        left += e.offsetLeft + (e.currentStyle ?
            (parseInt(e.currentStyle.borderLeftWidth)).NaN0() : 0);
        top  += e.offsetTop  + (e.currentStyle ?
            (parseInt(e.currentStyle.borderTopWidth)).NaN0() : 0);
        e  = e.offsetParent;
        if (e.scrollLeft) {left -= e.scrollLeft; }
        if (e.scrollTop)  {top  -= e.scrollTop; }
    }

    var docBody = document.documentElement ?
        document.documentElement : document.body;

    left += e.offsetLeft +
        (e.currentStyle ?
                (parseInt(e.currentStyle.borderLeftWidth)).NaN0()
                : 0) +
        (IS_IE ? (parseInt(docBody.scrollLeft)).NaN0() : 0) -
        (parseInt(docBody.clientLeft)).NaN0();
    top  += e.offsetTop  +
        (e.currentStyle ?
                (parseInt(e.currentStyle.borderTopWidth)).NaN0()
                :  0) +
        (IS_IE ? (parseInt(docBody.scrollTop)).NaN0() : 0) -
        (parseInt(docBody.clientTop)).NaN0();

    return {x:left, y:top};
}

function removeElementById(nodeId) {
    document.getElementById(nodeId).parentNode.removeChild(document.getElementById(nodeId));
}

function walkTree(node, mapFunction, dataPackage) {
    if (node == null) return;
    mapFunction(node, dataPackage);
    for (var i = 0; i < node.childNodes.length; i++) {
        walkTree(node.childNodes[i], mapFunction, dataPackage);
    }
}

function searchTree(node, searchFunction, dataPackage) {
    if (node == null) return;
    var funcResult = searchFunction(node, dataPackage);
    if (funcResult) return funcResult;
    for (var i = 0; i < node.childNodes.length; i++) {
        var searchResult = searchTree(node.childNodes[i],
                            searchFunction, dataPackage);
        if (searchResult) return searchResult;
    }
}
function getElmAttr(elm, attrName, ns) {
    // IE6 fails getAttribute when used on table element
    var elmValue = null;
    try {
        elmValue = (elm.getAttribute
                    ? elm.getAttribute((ns ? (ns + NS_SYMB) : '')
                    + attrName) : null);
    } catch (e) { return null; }
    if (!elmValue && (Browser == "SF")) {
        elmValue = (elm.getAttributeNS
                    ? elm.getAttributeNS(ns, attrName)
                    : null);
    }
    return elmValue;
}

function setElmAttr(elm, attrName, value) {
	if ((Browser == 'IE6') || (Browser == 'IE7')) {
		elm.attrName = value;
	}
    else {
        elm.setAttribute(attrName, value);
    }
	return false;
}

function remElmAttr(elm, attrName, ns) {
    if ((Browser != "SF") || !ns) {
        return (elm.removeAttribute
                    ? elm.removeAttribute((ns ? (ns + NS_SYMB) : '')
                    + attrName) : null);
    } else {
        return (elm.removeAttributeNS
                    ? elm.removeAttributeNS(ns, attrName)
                    : null);
    }
}

function checkButton(e)
{
	if (e.keyCode == 13) {
		checkSubmitStep(currentForm);
	}
	else return true;
}
function checkSubmitStep(currentForm){
	if (SubmitStep[currentForm] != 0){return false;}
	else document.getElementById("addeditform_"+currentForm).submit();
}