function checkform(f) {
	// Usage: <input name="fieldname" type="fieldtype" label="fieldname" required>
	//alert (navigator.appName);
	var border = "#a2a2a2";
	var emptyErrBorder = "#ff0000";
	var inputErrBorder = "#FF8000";
	var emptySelectLabel = new Array('-- Выберите из списка --','Выберите страну','Число','Месяц','Год','Выберите пол');
	var patternTime = /^([0]{0,2}|[0]?[1-9]{1}|1[0-9]{1}|2[0-4]{1}):[0-5]{1}[0-9]{1}$/;
	var patternURL = /^(http(s)?:\/\/)(([^\/]+\.)+)\w{2,}(\/)?.*$/i;
	var errMSG = ""; errEmpty = ""; errInput = ""; errSelect ="";
	var isFocus = false;
	for (var i = 0; i<f.elements.length; i++) {
	   //	alert('type: '+f.elements[i].nodeName+' name: '+f.elements[i].name+' value: '+f.elements[i].value+' label: '+f.elements[i].getAttribute("label"));
	   f.elements[i].style.borderColor = border;
	   if (null!=f.elements[i].getAttribute("required")) {
			 // Проверяем на не выбранные Select
			 if (f.elements[i].nodeName == 'SELECT') {
				 for (key in emptySelectLabel){
						if (f.elements[i].value == emptySelectLabel[key]) {
			            errSelect += "            - " + f.elements[i].getAttribute("label") + "\n";
						   f.elements[i].style.borderColor = emptyErrBorder;
						}
				 }
			 } 
			 // Проверяем на не заполненные поля
	       if (isEmpty(f.elements[i].value)) {
	          errEmpty += "            - " + f.elements[i].getAttribute("label") + "\n";
				 f.elements[i].style.border = '1px solid '+emptyErrBorder;
			 }
			 // Проверяем корректность поля с временем
	       if (f.elements[i].nodeName == 'INPUT' && f.elements[i].name == 'time' && !(patternTime).test(f.elements[i].value)) {
	          errInput += "            - " + f.elements[i].getAttribute("label") + "\n";
				 f.elements[i].style.border = '1px solid '+inputErrBorder;
			 }
			 // Проверяем корректность поля с email
	       if (f.elements[i].nodeName == 'INPUT' && f.elements[i].name == 'email' && !checkEmail(f.elements[i],'N')) {
	          errInput += "            - " + f.elements[i].getAttribute("label") + "\n";
				 f.elements[i].style.border = '1px solid '+inputErrBorder;
			 }
			 // Проверяем корректность URL в ссылках
			 if(f.elements[i].name == 'links_url[]' && !isEmpty(f.elements[i].value)) {
		   	//alert('type: '+f.elements[i].nodeName+' name: '+f.elements[i].name+' value: '+f.elements[i].value+' label: '+f.elements[i].getAttribute("label"));
				if(!(patternURL).test(f.elements[i].value)) { 				
	         	errInput += "            - " + f.elements[i].getAttribute("label") + "\n";
					f.elements[i].style.border = '1px solid '+inputErrBorder;
				}
			 }
			 if (("" != errEmpty || "" != errSelect || "" != errInput)  && !isFocus) {
				 if (f.elements[i].nodeName != 'TEXTAREA' && navigator.appName == 'Microsoft Internet Explorer') 
					 f.elements[i].focus();		
				 isFocus = true;
			 }
		}
	}
	if ("" != errEmpty || "" != errSelect || "" != errInput) {
		if ("" != errEmpty) 
			errEmpty = "      Не заполнены поля:\n" + errEmpty;
		if ("" != errSelect) 
			errSelect = "      Не выбраны из списка:\n" + errSelect;
		if ("" != errInput) 
			errInput = "      Заполнены с ошибкой:\n" + errInput;
	   errMSG = errEmpty + errSelect + errInput;
		alert("Обнаружены следующие ошибки:\n" + errMSG);
		if ("" != errMSG) 
			return false;
	}
}

function isEmpty(str) {
  for (var i = 0; i < str.length; i++)
     if (" " != str.charAt(i))
         return false;
     return true;
}

function checkEmail(field, empty_err) {
      var err = false;
      var res, x;
      if(!field) return true;
      if(field.value.length == 0) {
      	if(empty_err != 'Y') return true;
      	else err = true;
      }		
      var arrEmail = field.value.split('@');
      if(arrEmail.length != 2 || arrEmail[0].length < 1) err = true;
      if(!err) {
      	if(arrEmail[0].length > 2) res = arrEmail[0].search(/^[-\w][-\.\w]+[-\w]$/gi);
      	else res = arrEmail[0].search(/^[-\w]+$/gi);
      	if(res == -1) err = true;
      }
      if(!err) {
      	var arr2Email = arrEmail[1].split('.');
      	if(arr2Email.length < 2) err = true;
      }
      if(!err) {
      	var domenTail = arr2Email[arr2Email.length-1];
      	var _arr2Email = new Array();
      	for(x = 0; x < arr2Email.length-1; x++) _arr2Email[x] = arr2Email[x];
      	arr2Email = _arr2Email;
      	var domen = arr2Email.join('.');
      	res = domen.search(/^[-!#\$%&*+\\\/=?\.\w^`{|}~]+$/gi);
      	if(res == -1) err = true;
      	res = domenTail.search(/^[a-zA-Z]+$/gi);
      	if(res == -1 || domenTail.length < 2 || domenTail.length > 6) err = true;
      }

      return !err;
}

function imposeMaxLength(Object, MaxLen){
  return (Object.value.length <= MaxLen);
}

function check_gifts_submit(_name,id) {
	  if (document.getElementById('gift_type').value == '') {
		  alert('Выберите подарок!');
		  return false;	
	  }
	  if(is_run) return false;
      is_run = true;
 	  if (document.getElementById('view_card').checked) {
  		if (checkRequired(''))  {
         	document.getElementById(id).style.display = 'none';
         	_name.submit();
			//alert('Отправляем форму');
      	}
	  }else{
         	_name.submit();
			//alert('Отправляем форму');
   	  }

      is_run = false;
      return false;
}
