// JavaScript Document

var magic_STRING = "~voodoo!character@sequence#";

function valFCKEmpty () {
  var x, y;
  for (var i = 0; i < arguments.length; i++) {
    x = FCKeditorAPI.GetInstance(arguments[i]);
    if (x && x.GetXHTML(false) == "") {
      alert("заполните обязательные поля!\n\rвведите/выберите значение!");
      x.Focus();
      return false;
    }
  }
  return true;
}

function valMaxSelected () {
	var x, cnt = 0;
	x = d.getElementById(arguments[0]);
	var y = new Array, z = new Array;
	for (var i = 0; i < x.options.length; i++) {
		if (x.options[i].selected == true) {
			cnt++;
		}
	}
	if (cnt > Number(arguments[1])) {
		alert("нельзя выбрать больше '" + arguments[1] + "' пунктов одновременно!\n\rвыберите другие значения!");
      	x.focus();
      	return false;
	}
	return true;
}

function valFCKLong (fLength) {
  var x, y;
  for (var i = 1; i < arguments.length; i++) {
    x = FCKeditorAPI.GetInstance(arguments[i]);
    if (x && x.GetXHTML(false).replace(/<(.+?)>/g, " ").replace(/\r\n/g, " ").length > fLength) {
      alert("слишком много данных, \n\rмаксимальная длина не может превышать " + fLength + " символов!");
      x.Focus();
      return false;
    }
  }
  return true;
}

function isInArray (arr, value) {
	for (var i = 0; i < arr.length; i++) {
		if (arr[i] == value) {
			return i;
		}
	}
	return -1;
}

function valCross () {
	
	var x, ind;
	x = d.getElementById(arguments[0]);
	var y = new Array, z = new Array;
	for (var i = 0; i < x.options.length; i++) {
		if (x.options[i].selected == true) {
			y.push(x.options[i].value);
			z.push(i);
		}
	}
	
	for (var i = 1; i < arguments.length; i++) {
		ind = isInArray(y, arguments[i]);
		if (y.length > 1 && ind != -1) {
			alert("нельзя выбрать '" + x.options[z[ind]].innerText + "' одновременно с другими пунктами!\n\rвыберите другие значения!");
			x.focus();
			return false;
		}
	}
	return true;
}

function valDate() {
  var x;
  var y1 = new String, y2 = new String;
  var fDate = new Date;
  var fRE = /(\d{1,2})\.(\d{1,2})\.(\d{4})/;
  var fRE1 = /0(\d)\.(\d{1,2})\.(\d{4})/;
  var fRE2 = /(\d{1,2})\.0(\d)\.(\d{4})/;
  
  for (var i = 0; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x) {
      y1 = x.value;
      y1.match(fRE);
      t1 = Number(RegExp.$1); t2 = Number(RegExp.$2) - 1; t3 = Number(RegExp.$3);
      var fDate = new Date(t3, t2, t1);
      y1 = y1.replace(fRE1, "$1.$2.$3"); y1 = y1.replace(fRE2, "$1.$2.$3");
      y2 = fDate.getDate() + "." + (fDate.getMonth() + 1) + "." + fDate.getFullYear();
      if (x && y1 && y1 != y2) {
        alert('введите дату (дд.мм.гггг) !');
        x.focus();
        return false;
      }
    }
  }
  return true;
}

function valEmpty () {
  var x;
  for (var i = 0; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x && x.value == "") {
      alert("заполните обязательные поля!\n\rвведите/выберите значение!");
      x.focus();
      return false;
    }
  }
  return true;
}

function valIsHTML () {
  var x;
  for (var i = 0; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x && x.value != "" && (x.value.toLowerCase().indexOf("<html") != -1 || x.value.toLowerCase().indexOf("<body") != -1 || x.value.toLowerCase().indexOf("</html") != -1 || x.value.toLowerCase().indexOf("</body") != -1 || x.value.toLowerCase().indexOf("<!doctype") != -1)) {
      alert("обнаружен лишний html-код!\n\rвставьте только то, что находится ВНУТРИ тэга <body> (не включая сам <body>)!");
      x.focus();
      return false;
    }
  }
  return true;
}

function valCompare (f1, f2) {
  x1 = d.getElementById(f1);
  x2 = d.getElementById(f2);
  if (x1 && x2 && x1.value != x2.value) {
    alert("значения должны совпадать!");
    x1.focus();
    return false;
  }
  return true;
}

function valNum () {
  var x;
  var y = new String;
  for (var i = 0; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x) { 
      y = x.value;
      y = y.replace(/\,/g, ".");
      if (y && (isNaN(y))) {
        alert("введите/выберите число!");
        x.focus();
        return false;
      }
    }
  }
  return true;
}

function valNumPos () {
  var x;
  var y = new String;
  for (var i = 0; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x) {
      y = x.value;
      y = y.replace(/\,/g, ".");
      if (y && (isNaN(y) || (y <= 0))) {
        alert("введите/выберите положительное число!");
        x.focus();
        return false;
      }
    }
  }
  return true;
}

function valNumPos0 () {
  var x;
  var y = new String;
  for (var i = 0; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x) {
      y = x.value;
      y = y.replace(/\,/g, ".");
      if (y && (isNaN(y) || (y < 0))) {
        alert("введите/выберите неотрицательное число!");
        x.focus();
        return false;
      }
    }
  }
  return true;
}

function valNumInt () {
  var x;
  var y = new String;
  for (var i = 0; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x) {
      y = x.value;
      y = y.replace(/\,/g, ".");
      if (y && (isNaN(y) || (Math.floor(y) != y))) {
        alert("введите/выберите целое число!");
        x.focus();
        return false;
      }
    }
  }
  return true;
}

function valNumIntPos () {
  var x;
  var y = new String;
  for (var i = 0; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x) {
      y = x.value;
      y = y.replace(/\,/g, ".");
      if (y && (isNaN(y) || (y <= 0) || (Math.floor(y) != y))) {
        alert("введите/выберите целое положительное число!");
        x.focus();
        return false;
      }
    }
  }
  return true;
}

function valNumIntPosMax (fMax) {
  var x;
  var y = new String;
  for (var i = 1; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x) {
      y = x.value;
      y = y.replace(/\,/g, ".");
      if (y && (isNaN(y) || (y <= 0) || (Math.floor(y) != y)) || (y > fMax)) {
        alert("введите/выберите целое положительное число <= " + fMax + "!");
        x.focus();
        return false;
      }
    }
  }
  return true;
}

function valNumIntPos0 () {
  var x;
  var y = new String;
  for (var i = 0; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x) { 
      y = x.value;
      y = y.replace(/\,/g, ".");
      if (y && (isNaN(y) || (y < 0) || (Math.floor(y) != y))) {
        alert("введите/выберите целое неотрицательное число!");
        x.focus();
        return false;
      }
    }
  }
  return true;
}

function valEMail() {
  var x;
  var y = new String;
  for (var i = 0; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x) {
      y = x.value;
      if (y && (y.replace(/([\w-._]+@[\w-.]+)/g, magic_STRING + "$1" + magic_STRING) != magic_STRING + y + magic_STRING)) {
        alert("введите/выберите правильный e-mail адрес!");
        x.focus();
        return false;
      }
    }
  }
  return true;
}

function valAddBefore(fVal) {
  var x;
  for (var i = 0; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x && x.value) {
      x.value = fVal + x.value.replace(fVal, "");
    }
  }
}

function valExt(fExt) {
  var x;
  var y = new String;
  var flag = new Boolean;
  
  var arrExt = fExt.split(/, /g);
  
  for (var i = 1; i < arguments.length; i++) {
    x = d.getElementById(arguments[i]);
    if (x) {
      y = x.value;
      if (y) {
        for (var j = 0, flag = false; j < arrExt.length; j++) {
	  if (y.lastIndexOf(arrExt[j]) + arrExt[j].length == y.length) {
	    flag = true;
	  }
	}
	if (!flag) {
 	  alert("неправильный тип файла!\n\rрасширение файла должно быть среди указанных: " + fExt);
          x.focus();
          return false;
	}
      }
    }
  }
  return true;
}