// JavaScript Document
$(document).ready(function(){ 
	
	jQuery.browser.version.substr(0,3)=="6.0" ? $('img[src$=.png]').ifixpng() : null;
	   
   $("#erroCl").click(function() {
		$('#erroMessage').fadeOut('fast');  
    });
   		
	$("#erroMessageBody ol li").live('click', function() {
		$id=$(this).attr('title');
		$("#"+$id).fadeOut("fast").fadeIn("fast", function() {
			$(this).focus();
		})
	});
});

function checkForm(array, typeForm, typeLoad) {	
	var	any=/./i;
	var	anyT=/.*/i; // для пустого текста	
	var email=/^([\w.\-])+\@(([\w\-])+\.)[a-zA-Z0-9]{2,6}/gi;	
	var emailE=/^(([\w.\-])+\@(([\w\-])+\.)[a-zA-Z0-9]{2,6})?$/gi;
	var number=/^\d+$/;
	
	var img=/[\w]+\.(gif|jpg|bmp|png|jpeg)$/gi;
	var pdf=/[\w]+\.(pdf)$/gi;
	var login=/^[a-z0-9]{1,15}$/i;
	var pass=/^[a-z0-9_!@-]{1,20}$/i;
	var textm=/^[a-zA-Zа-яА-Я0-9 `!@\.#%\*_,---\(\)\\+\?"'\s]{1,255}$/i;	
	var site=/(^http:\/\/)([a-zA-Z\-]+\.)+\w+/;
	var time=/^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$/;
	var chip=/^([1-9]{1})+([0-9]{14})$/
	var chipE=/^(([1-9]{1})+([0-9]{14}))*$/ 
	
	var mainError=0;
	
	jQuery.each(array, function() { // бежим по всем элементам формы
						 
			id=this[0];				
			type=$("#"+id).attr("type");
									
			if(this[3]) // если есть дополнительная опция, длина поля
				checkLength(id, this[3]);
			
			if(type=='password') { // правила для паролей
				
					value=$("#"+id).val();	
					value2=$("#"+this[4]).val();			
					checkReg=eval(this[2]);
					
		         if($("#type").val()=='add') { // если добавляем
                     var a=!checkReg.test(value);
                     var b=(value!=value2);
			       } else { // при редактирвоании
                     var a=(value!="" || value2!="") && !checkReg.test(value);
                     var b=(value!="" || value2!="") && (value!=value2);
                   }

						
					if(a) {
						fillMessage(id, "Ошибка", this[1]);
						mainError+=1;
					} else {
						deleteMessage(id, this[1]);
						mainError+=0;
					} // конец проверки на eregi
			

					if(b) { // если пароли не равны
						if($("#erroMessageBody ol li[title='"+this[4]+"']:contains('Введёные пароли не совпадают')").length==0)
							fillMessage(id, "Ошибка", 'Введёные пароли не совпадают');
							mainError+=1;
					} else {
							deleteMessage(this[4], 'Введёные пароли не совпадают');
							deleteMessage(id, 'Введёные пароли не совпадают');
							mainError+=0;
					}	// конец если пароли не равны
		
			} // конец проверка паролей			


			if(type=='select-one' || type=='text' || type=='textarea') { // проверка на типы, если строковые
				value=$("#"+id).val();					
				checkReg=eval(this[2]);
				
				if(this[2]=='any' || this[2]=='anyT') {				
					
				if(value.indexOf('<?php ')>-1 || value.indexOf('<script')>-1 || value.indexOf('<? ')>-1) {
						fillMessage(id, "Ошибка", "Вы используете запрещенные теги");
						mainError+=1;
					}
					else {
						deleteMessage(id, "Вы используете запрещенные теги");
						mainError+=0;
					}
				}
				   	
				if(!checkReg.test(value)) {
					fillMessage(id, "Ошибка", this[1]);
					mainError+=1;
				} else {
					deleteMessage(id, this[1]);
					mainError+=0;
				}			
			} // конец строковые
			
			
			if(type=='radio' || type=='checkbox') { // проверка на типы, если выборные radio, выбираем определённого имени
				var name=$("#"+id).attr("name");
				var elem = $("#form :"+type+"[name='"+name+"']");
				var err=0;
					for(i=0; i<elem.length; i++) {	
						if(!$(elem[i]).attr('checked')) {
							err=1;
						} else {
							err=0;
							mainError+=0;
							deleteMessage(id, this[1]);
							break;
					}
				}
					if(err>0) { // значит ничто не выделено
					   fillMessage(id, "Ошибка", this[1]);
					   mainError+=1;
					}
			} // конец выборные	radio		
	}); // конец все элементы формы
	
	if(mainError>0 || typeForm=="one") 
		return false;
	 else {
		if(typeLoad=='loadScript') // грузим дальше по функции
			return true;
		else
			$("#form").submit();	// субмитим форму
	 }
}


function simpleCheck(form) {
jQuery.each(form, function() {									
	var id=this[0]; // получаем id поля
	var simpleForm=[this]; // делаем массив из одного поля		
	var type=$("#"+id).attr('type');
		
		if(type=='radio' || type=='checkbox') { // если выбрано radio, то каждому одни и те же события
			var name=$("#"+id).attr("name");
			var elem = $("#form :"+type+"[name='"+name+"']");				
			jQuery.each(elem, function(i) { // бежим по всем элементам формы
				$(this).change(function() {
					checkForm(simpleForm, 'one');
				});
			});
		}					
			
		$("#"+id).change(function() {
			if(type=='select-one')
				checkForm(simpleForm, 'one');
			}).keyup(function() { // на нажатия кнопок text и textarea
			if(type=='text' || type=='textarea' || type=='password')
				checkForm(simpleForm, 'one');
		}).change(function() { // сделано для календаря
			if(type=='text' && $("#"+id).attr('readonly')==true)
				checkForm(simpleForm, 'one');
			if(type=='text' || type=='textarea' || type=='password')
				checkForm(simpleForm, 'one');
		});
	});
}
		
function checkLength(id, maxNumber) {
	if($("#"+id).val().length<=maxNumber) {		
		var diff=maxNumber-$("#"+id).val().length;		
		if($("#"+id+"-len").length) { // если есть объект, то правим текстовку	
			$("#"+id+'-len').text(diff);
		} else 
			$("#"+id).after('<span class="lenField" id="'+id+'-len">'+diff+'</span>');
	} else 
		$("#"+id).val($("#"+id).val().substring(0, maxNumber));
}

function fillMessage(id, title, text) {

	if($("#erroMessageBody ol li").length) { // добавляем к существующим ошибкам
				
		if(!$("#erroMessageBody ol li[title='"+id+"']:contains('"+text+"')").length)
			$('<li title="'+id+'">'+text+'</li>').insertAfter("#erroMessageBody ol li:last").addClass('simpleErr');	
	
	} else  // если нет, то делаем первую запись
		$("#erroMessageBody").html("<ol><li title="+id+">"+text+"</li></ol>").addClass('simpleErr');			

	$("#erroMessage").fadeIn("fast");	
}

function deleteMessage(id, text) {
	if($("#erroMessageBody ol li[title='"+id+"']:contains('"+text+"')").length) { // если есть такая запись	
		if($("#erroMessageBody ol li").length==1) {	 // если запись последняя, то закрываем ещё и окно		
			$("#erroMessage").fadeOut("fast", function() {
				$("#erroMessageBody ol li[title='"+id+"']:contains('"+text+"')").remove();			
			});
		} else
			$("#erroMessageBody ol li[title='"+id+"']:contains('"+text+"')").remove();
	}
}

function checkSQLError(error) {
	if(error) {
	var text1="Ошибка при удалении объекта(ов)";
	var text2="Такой e-mail уже зарегистрирован";
	var text3="Ошибка при сохранении объекта(ов)";
	var text4="Ошибка при перемещении объекта(ов)";
	var text5="Каталог с таким именем уже существует";
	var text6="Такой адрес уже зарегистрирован";
	
	var value1='sql';
	var value2='login';
	var value3='sql';
	var value4='sql';	
	var value5='catalogName';
	var value5='sql';
	var value6='sql';	

	var a=error.substring(0,1);
	var b=error.substring(1,2);
	
	if(a==0) { // без ошибок и удаляем предыдущую
		deleteMessage(eval('value'+b), eval('text'+b));
		return true;
	} else { // заполняем поле
			fillMessage(eval('value'+a), "Ошибка SQL", eval('text'+a));		  
			return false;
		}
	}
}