﻿var needErrMess = true;

function validateInit(element){
	var errMSG = "";
	if (element) {
		if (element){
			if($(element).attr('type')) var valElement = $(element).attr('value');
			else var valElement = $(element).html();

			var validators = $(element).attr('validator').split(',');
			$(validators).each(function(){
				var rule = this+'';
				switch (rule) {
					case 'nomsg' : needErrMess = false; break;
					case 'required' :
						if (!isEmpty(valElement)){
							errMSG += "Поле обязательное для заполнения! ";
						}
					break;
					case 'int' :
						if (!isInt(valElement)){
							errMSG += "Можно вводить только цифры! ";
						}
					break;
					case 'mail' :
						if (!mail(valElement)){
							errMSG += "Не правильно введен email адрес! ";
						}
					break;
					case 'url' :
						if (!url(valElement)){
							errMSG += "Не правильно введен URL ";
						}
					break;
					case 'float' :
						if (!isFloat(valElement)){
							errMSG += "Можно вводить только числа с плавающей точкой! ";
						}
					break;
					case 'datetime' :
						if (!datetime(valElement)){
							errMSG += "Неправильный формат ввода даты! ";
						}
					break;
					default :
						if(this.indexOf('length') >= 0)	{
							var expr = new RegExp('[0-9]+','g');
							val = expr.exec(this);
							if (!length(valElement, val)){
								errMSG += "Введено не допустимое количество символов! ";
							}
						}
						break;
						
						if(this.indexOf('regex') >= 0)	{
							var expr = new RegExp('[^()]+','g');
							val = expr.exec(this);
							if (!regEx(valElement, reg)){
								errMSG += "Не правильный формат! ";
							}
						}
						break;

						if(this.indexOf('equal') >= 0) {
							var expr = new RegExp('[a-zA-Z0-9_-]+','g');
							val = expr.exec(this);
							if (!isEqual(valElement, val)){
								errMSG += "Пароли не совпадают! ";
							}
						}
						break;

						if(this.indexOf('unique') >= 0) {
							//TODO
							uniqueEl['name'] = ActiveField;
							uniqueEl['val'] = valElement;
							$(element).css("borderBottom","2px solid #FFFF00");
							if (uniqueEl['name'] == ActiveField) clearTimeout(uniqueEl['timer']);
							uniqueEl['timer'] = setTimeout('if (uniqueEl["val"] == document.getElementById(uniqueEl["name"]).value){unique(uniqueEl["val"],document.getElementById(uniqueEl["name"]).getAttribute("unique"),uniqueEl["name"]);}','2000');
							return false;
						}
						break;
				}
			});

			return validateColorChange(errMSG, element);
		}
	}
}
function validateColorChange(errMSG, element){
	if (errMSG != "") {
		if (needErrMess) {
			eleOffset = $(element).offset();
			var top = eleOffset.top-91; 
			var left = eleOffset.left+121;
			var ErrorMessageDiv = '<div class="errorElement" style="top: '+top+'px; left: '+left+'px;">'+
									'<div class="errorDiv" id="error'+$(element).attr('id')+'"></div>'+
									'<div class="errorStr2"></div><div class="errorStr">Ошибка: '+errMSG+'</div></div>'; 
			$(ErrorMessageDiv).insertAfter(element);
		}

		var color = $(element).attr("color");
		if (null!=color){
			if (color == "vGreen") {
				$(element).attr("color", "vRed");
				$(element).css("borderBottom","2px solid #FF0000");
				return '+';
			}
		}
		
		return '=';
	}
	else {
		var color = $(element).attr("color");
		if (null!=color){
			if (color == "vRed") {
				$(element).attr("color", "vGreen");
				$(element).css("borderBottom","2px solid #00FF00");
				var errorEl = $(element).parent().find('.errorElement').each (function() {$(this).remove();});
				return '-';
			}
		}
		
		return '=';
	}
}

function enableSaveButtons(element) {
    var saveButton = $(element).find("#saveButton").get(0);
    var saveOnlyButton = $(element).find("#saveOnlyButton").get(0);
	
    $(saveButton).attr('class','save');
    $(saveButton).removeAttr('disabled');
    if(saveOnlyButton) {
        $(saveOnlyButton).attr('class','save');
        $(saveOnlyButton).removeAttr('disabled');
    }
}

function disableSaveButtons(element) {
    var saveButton = $(element).find("#saveButton").get(0);
    var saveOnlyButton = $(element).find("#saveOnlyButton").get(0);

    $(saveButton).attr('class','disabled');
    $(saveButton).attr('disabled','true');
    if(saveOnlyButton) {
        $(saveOnlyButton).attr('class','disabled');
        $(saveOnlyButton).attr('disabled','true');
    }
}

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("^(https?:\/\/)?(([0-9a-z_!~*'().&=+$%-]+:)?[0-9a-z_!~*'().&=+$%-]+@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!~*'()-]+\.)*([0-9a-z][0-9a-z-]{0,61})+[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+\/?)$");
		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)))// && (Exeption != str))
			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 isFloat(str){
	if (str){
		var reg = new RegExp("^(([0-9]+((\.|,)[0-9]+)?)|(([0-9]*(\.|,))?[0-9]+))$");
		return reg.test(str);
	}
	else return true;

}

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 checkSubmitStep(form){
	if (form.validation > 0){return false;}
	else return true;
}

function checkButton(e,form)
{
	if (Browser == "IE6" || Browser == "IE7") var keyPressed = (window.event) ? window.event.keyCode : ev.keyCode;
	else var keyPressed = e.keyCode;
	if (keyPressed == 13) {
		mode = 'save';
		$(form).submit(); 
	}
	else return true;
}
