function MsgBox(argc, argv){
	var str = "window.location.href='"+argc+"'";
	if (window.confirm(argv)) {
		setTimeout(str, 1);
	}
}

function MsgAccessDenied() {
	alert("Доступ закрыт");
}

function string_Trim(str,l){
	var re;
	if (l==null)
		re=/(^\s*)|(\s*$)/gi
	else
		re=(l)?/^\s*/:/\s*$/
	return (new String(str)).replace(re,'');
}


function checkEmail (sEmail) {
	var BAD = "\\`~!#$%^&*()+|{}[]:=;'\"<>,/?";
	sEmail = string_Trim(sEmail)
	if ((sEmail.lastIndexOf ('.') == (sEmail.length - 1)) ||
	(sEmail.lastIndexOf ('.') < sEmail.lastIndexOf ('@')) ||
	(sEmail.indexOf ('.') == -1) ||
	(sEmail.substr (0, 1) == '@') ||
	(sEmail.length < 6) ||
	(sEmail.indexOf (' ') != -1) ||
	(sEmail.indexOf (' @ . ') != -1) ||
	(sEmail.indexOf (' . ') != -1) ||
	(sEmail.indexOf (' @') != -1) ||
	(sEmail.indexOf ('. ') != -1) ||
	(sEmail.indexOf (' .') != -1) ||
	(sEmail.indexOf ('_@') != -1) ||
	(sEmail.indexOf ('@_') != -1) ||
	(sEmail.indexOf ('_.') != -1) ||
	(sEmail.indexOf ('._') != -1) ||
	(sEmail.indexOf ('_@_') != -1) ||
	(sEmail.indexOf ('..') != -1) ||
	(sEmail.indexOf ('@@') != -1) ||
	(sEmail.indexOf ('@.') != -1) ||
	(sEmail.indexOf ('.@') != -1) ||
	(sEmail.substr (sEmail.length - 1, 1) == '_') ||
	(sEmail.indexOf ('@') == -1 ))
	return false ;

	var symbol ;
	var l = sEmail.length ;
	for (var i = 0 ; i < l ; i++) {
	symbol = sEmail.substr (0, 1) ;

	if (BAD.indexOf (symbol) > 0) return false ;
	if (escape (symbol) == "%5C") return false ;
	if (escape (symbol) == "%A0") return false ;
	if (escape (symbol) == "%u044F") return false ;
	sEmail = sEmail.substr (1) ;
	}
	return true ;
}

function checkEmails(sEmail) {
	var i;
	aEmails = sEmail.split(";");
	for (i in aEmails) {
		if (!checkEmail(aEmails[i])) {
			return false;
		}
	}
	return true;
}


function messageBox(type, msg) 
{
 	return showModalDialog('js/messagebox.html', new Array(msg, type), 'dialogWidth:25;dialogHeight:8;resizable:0;help:0;status:0;scroll:0');
}

/* ===================== form validation ===========================================*/

function checkOnly(value, only, pos) {
	if(pos == null)pos = 0;
	if(((only == null) || only) && (pos < value.length))return false;
	return pos;
}
function checkNumber(value) {
	re = /^\d*$/;
	return re.test(value);
}

function _checkInt(value) {
	re = /^\d*$/;
	if(!re.test(value))return false;
	return((new Number(value)) < 2147483648);
}
function checkInt(value, sign, only, pos) {
	if(pos == null)pos = 0;
	if(((sign == null) || sign) && (value.charAt(pos) == '-' || value.charAt(pos) == '+'))pos++;
	start = pos;
	while(value.charAt(pos) >= '0' && value.charAt(pos) <= '9')pos++;
	if(start == pos)return false;
	return checkOnly(value, only, pos);
}
function checkYear(year) {
	//return((year < 50)?year + 2000:((year < 100)?year + 1900:((year > 9999)?0:year)));
	return year;
}
function checkDate(value, only, pos) {
	start = (pos == null)?0:pos;
	if(!(pos = checkInt(value, false, false, start))) return false;
	day = new Number(value.substring(start, pos));
	if(value.charAt(pos) == '.' || value.charAt(pos) == '/')start = pos + 1; else return false;
	if(!(pos = checkInt(value, false, false, start))) return false;
	month = new Number(value.substring(start, pos)) - 1;
	if(value.charAt(pos) == '.' || value.charAt(pos) == '/')start = pos + 1; else return false;
	if(!(pos = checkInt(value, false, false, start))) return false;
	year = checkYear(new Number(value.substring(start, pos)));
	date = new Date(year, month, day);
	if((year != date.getFullYear()) || (month != date.getMonth()) || (day != date.getDate()))return false;
	return checkOnly(value, only, pos);
}
function checkTime(value, only, pos) {
	start = (pos == null)?0:pos;
	if(!(pos = checkInt(value, false, false, start))) return false;
	if(new Number(value.substring(start, pos)) > 23) return false;
	if(value.charAt(pos) == ':')start = pos + 1; else return false;
	if(!(pos = checkInt(value, false, false, start))) return false;
	if(new Number(value.substring(start, pos)) > 59) return false;
	return checkOnly(value, only, pos);
}
function _checkFloat(value) {
	if(value == "")return true;
	re = /^\d*(,\d*)?$/;
	if(!re.test(value))return false;
	value = value.replace(/,/, ".");
	return(value.indexOf("" + new Number(value)) >= 0);
}
function checkFloat(value, sign, precision, only, pos) {
	if(pos == null)pos = 0;
	if(!(pos = checkInt(value, sign, false, pos)))return false;
	if(value.charAt(pos) == ',') {
		start = pos + 1;
		if(pos = checkInt(value, false, false, start)) {
			if((precision != null) && (precision > -1) && (pos > start + precision))pos = start + precision;
		} else pos = start;
	}
	return checkOnly(value, only, pos);
}
function checkEmailByRegexp(value)
{
	value=string_Trim(value);
	//re = /(^[A-Za-z0-9_])([A-Za-z0-9_.-]*)@((([A-Za-z0-9_-]{2,})\.){1,})(([A-Za-z]{2,})$)/;
	re = /(^[\w_])([\w_.-]*)@((([\w_-]{1,})\.){1,})(([A-Za-z]{2,})$)/;
	return (re.test(value));
}
function checkText(value){
	re=/^[A-Za-zА-Яа-яёЁ -]*$/;
	return (re.test(value));
}

function checkPhone(phone){
	var result = false;
	if (phone.substr(0,1)=='+') 
	{
		phone= phone.substr(1,phone.length-1);
	}
/*	if (phone.search(/\D|\./g) != -1)
		{
			return false;
		}*/
		
	re=/^[^\x41-\x5A\x61-\x7AА-Яа-я]*$/;
	result = re.test(phone);
	return result;
}
function checkRequired(element) {
	if(element.getAttribute("require") == "true" && (element.value == null ||
		element.value.replace(/(^\s*)|(\s*$)/g, "") == "")) {
		alert("Вы не заполнили поле '" + element.getAttribute("controlname") + "'."  +
			"\nПожалуйста, заполните все поля правильно.");
		elementFocus(element);
		return false;
	}
	return true;
}
function checkCustom(element) {
	var strCustomCheck = element.getAttribute("custom_check")
	if(strCustomCheck) {
		script = eval(strCustomCheck);
		if(!script) {
			elementFocus(element);
			return false;
		}
	}
	return true;
}

function checkType(element) {
	if(element.value == null || element.value == "") return true;
	var strValType = element.getAttribute("valtype");
	if( strValType != null && strValType != "") {
		switch(strValType.toLowerCase()) {
			case "int":
				if(!_checkInt(element.value)) {
					alert("Поле  '" + element.getAttribute("controlname") +
						"' должно быть правильного формата. \nПожалуйста, заполните его правильно.");
					elementFocus(element);
					return false;
				}
				break;
			case "float":
				real_val = element.value;
				repl_val = trimAll(real_val);
				repl_val = clearAllnbsp(repl_val);
				element.setAttribute("value", repl_val);
				if(!_checkFloat(element.value)) {
					alert("Поле '" + element.getAttribute("controlname") +
						"' должно содержать корректное дробное число. \nПожалуйста, заполните правильно все необходимые поля.");
					element.setAttribute("value", real_val);
					elementFocus(element);
					return false;
				}
				break;
			case "date":
				if(!checkDate(element.value)) {
					alert("Поле '" + element.getAttribute("controlname") +
						"' должно быть следующего формата даты 'dd.mm.yyyy'. \nПожалуйста, заполните его правильно.");
					elementFocus(element);
					return false;
				}
				break;
			case "time":
				if(!checkTime(element.value)) {
					alert("Поле '" + element.getAttribute("controlname") +
						"' должно содержать корректное время в формате 'ЧЧ:ММ'. \nПожалуйста, заполните правильно все необходимые поля.");
					elementFocus(element);
					return false;
				}
				break;
			case "e-mail":
				if(!checkEmailByRegexp(element.value)) {
					alert("Поле '" + element.getAttribute("controlname") +
						"' должно быть правильного формата. \nПожалуйста, заполните его правильно.");
					elementFocus(element);
					return false;
				}
				break;
			case "phone":
				if(!checkPhone(element.value)) {
					alert("Поле  '" + element.getAttribute("controlname") +
						"' должно быть правильного формата (не содержит буквы). \nПожалуйста, заполните его правильно.");
					elementFocus(element);
					return false;
				}
				break;
			case "textonly":
				if(!checkText(element.value)) {
					alert("Поле  '" + element.getAttribute("controlname") +
						"' должно быть правильного формата. \nПожалуйста, заполните его правильно.");
					elementFocus(element);
					return false;
				}
				break;
			case "number":
				if(!checkNumber(element.value)) {
					alert("Поле  '" + element.getAttribute("controlname") +
						"' должно быть правильного формата. \nПожалуйста, заполните его правильно.");
					elementFocus(element);
					return false;
				}
				break;
		}
	}
	return true;
}

function elementFocus(el) {
	if(el.getAttribute("type") != "hidden") el.focus();
}

function checkFields(formName) {
	var colControls = document.forms[formName].elements;
	var typeVal;
	for(var fldNdx = 0; fldNdx < colControls.length; fldNdx ++) {
		var tmpCntrl = colControls[fldNdx];
		
		
		if(tmpCntrl.getAttribute("readonly") == true ||
			tmpCntrl.getAttribute("disabled") == true) continue;
		var strTagName = tmpCntrl.tagName;
		
		if(strTagName != null)
			switch(strTagName.toLowerCase()) {
				case "input":
					typeVal = tmpCntrl.getAttribute("type");
					if (typeVal == null) typeVal = tmpCntrl.type;
					if (typeVal == "button" || typeVal == "password" ||
						typeVal == "reset" || typeVal == "submit" || typeVal == "radio" ) continue;
					break;
				case "textarea":
					break;
				case "select":
					if(!tmpCntrl.length > 0) continue;
					
					var selVal = tmpCntrl.options[tmpCntrl.selectedIndex].value;
					if (selVal != null && selVal != -1) {
						if(!checkRequired(tmpCntrl)) return false;
						if(!checkCustom(tmpCntrl)) return false;
					}
					continue;
					break;
				default:
					continue;
					break;
			}
		if (!checkRequired(tmpCntrl)) return false;
		if (!checkType(tmpCntrl)) return false;
		if (!checkCustom(tmpCntrl)) return false;
	}
	return true;
}

function sendForm(formName) {
	if(checkFields(formName)) {
		document.forms[formName].submit();
		return true;
	} else return false;
}

function new_win_modal(url,w,h,scroll,resize){
	var sc=(scroll==''?'no':'yes');
	var h1 = h;
	if(sc!='no'&&sc!='yes') {
		sc='no';
	} else {
		sc=scroll;
	}
	var w1=window.open('','win','resizable=yes,menubar=no,status=no,scrollbars=no,width=1,height=1,top=20,left=150');
	w1.close();
	w1=window.open(url,'win','resizable='+resize+',menubar=no,status=no,scrollbars='+sc+',width='+w+',height='+h1+',top=20,left=150');
	w1.onload=w1.focus;
	w1.focus();
}

function clearObj(str,hide){

	var obj = document.getElementById(str);
	var colInp = obj.getElementsByTagName('input');
	if (colInp.length>0)
	{
		for (var i = 0 ; i < colInp.length ; i++) {
			if (CheckInput(colInp[i]) && colInp[i].type.toLowerCase()!=hide)
				clearElement(colInp[i].id);
		};
	}
	var colInp = obj.getElementsByTagName('textarea');
	if (colInp.length>0)
	{
		for (var i = 0 ; i < colInp.length ; i++) {
			if (CheckInput(colInp[i]))
				clearElement(colInp[i].id);
		};
	}

}

function CheckInput(obj){
	switch (obj.type) {
		case "button" :
			return false;
			break;
		case "image" :
			return false;
			break;
		case "radio" :
			return false;
			break;
			
	}
	if (obj.id=='' || obj.id== null)
	{
		return false;
	}	
	return true;
}

function clearElement(str){

	var t = document.getElementById(str);
	switch (t.tagName.toLowerCase()){
		case "input": 
			if (t.type.toLowerCase()=="checkbox")
			{
				t.setAttribute("checked", false);
				t.checked = false;
				break;	
			}
			t.value = '';

		case "textarea": 
			t.value = '';
			break;
		
	};
}		

function PhoneReplace(str){
	
	var obj = document.getElementById(str);
	
	re = /[^A-Za-zА-Яа-я0-9]*/gi;
	obj.value = obj.value.replace(re,"");
	return true;

}

function defaultPhone(str)
{
	var obj = document.getElementById(str);
	var colInp = obj.getElementsByTagName('input');
	
	if (colInp.length>0)
	{
		for (var i = 0 ; i < colInp.length ; i++)
		{
			
			var strValType1 =colInp[i].getAttribute("valtype");
			if (strValType1 != null && strValType1.toLowerCase() == 'phone')
			{
				if (i+2< colInp.length)
				{
					var strValType2 =colInp[i+1].getAttribute("valtype");
					var strValType3 =colInp[i+2].getAttribute("valtype");
	
					if (strValType2 != null && strValType3 != null && strValType2.toLowerCase() == 'phone' && strValType3.toLowerCase() == 'phone'  )
					{
						if (colInp[i+1].value=='' && colInp[i+2].value=='' && colInp[i].value=='')
						{
								colInp[i].value='7';
						};
						
					};
				}; 	
			};		
		};
	};
	return true;
}

function ClearPhone(str,ss,hide)
{
	var phone = document.getElementById(str);
	var phoneTown = document.getElementById(str+'_town');
	var phoneCountry = document.getElementById(str+'_country');
	var st = phoneCountry.value;
	if (phoneCountry.value == null || phoneCountry.value == "" || st.length==1 )
	{
		if (phoneTown.value == "" && phone.value == "")
		{	
			if (hide=="1")
			{
				return false;
			}
			else
			{
				var delPhone = document.getElementById('deletePhone'+ss);
				delPhone.value = '1';
			}
		}
	}
	return true;
}

