// Copyright (c) 2009 by Mediaproduct
// http://mediaproduct.ru

var message_present = false;
var highlight_classname = "control-highlight";

function process_check(form, controls) {
	var str, ret, ok_res = true;
	message_present = false;
	reset_highlight(form, controls);
	for (var i=0; i<controls.length; i++) {
		str = "check_" + controls[i] + "(form)";
		if (!eval(str) && ok_res)
			ok_res = false;
	}
	return ok_res;
}

function check_length(form, name, min_length, max_length, message) {
	if ((min_length>-1 && form[name].value.length < min_length) || (max_length>-1 && form[name].value.length > max_length)) {
		message = message.replace(/%min%/g, min_length);
		message = message.replace(/%max%/g, max_length);
		highlight_control(form[name], !message_present);
		if (!message_present)  {
			alert(message); 
			message_present = true;
		}
		return false;
	}
	return true;
}


function check_emailformat(form, name, message) {
	if (!is_valid_email(form[name].value)) {
		highlight_control(form[name], !message_present);
		if (!message_present)  {
			alert(message); 
			message_present = true;
		}
		return false;
	}
	return true;
}

function check_urlformat(form, name, message) {
	if (!is_valid_url(form[name].value)) {
		highlight_control(form[name], !message_present);
		if (!message_present)  {
			alert(message); 
			message_present = true;
		}
		return false;
	}
	return true;
}

function is_valid_email(string) {
	var re = /^(\S+@).+\.(com|net|org|mil|edu|arpa|ru|gov|biz|info|aero|inc|name|[a-z]{2})$/i;
	return re.test(string);
}

function is_valid_url(string) {
    var r = /^(?:(?:https?|ftp|telnet):\/\/(?:[a-z0-9_-]{1,32}(?::[a-z0-9_-]{1,32})?@)?)?(?:(?:[a-z0-9-]{1,128}\.)+(?:com|net|org|mil|edu|arpa|ru|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?!0[^.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?:\/[a-z0-9.,_@%&?+=\~\/-]*)?(?:#[^ \'\"&<>]*)?$/i;
    return r.test(string);
}

function reset_highlight(form, controls) {
	for (var i=0; i<controls.length; i++) {
		if (typeof form[controls[i]] != "undefined")
			unhighlight_control(form[controls[i]]);
	}
}

function unhighlight_control(control) {
	if (typeof control == "undefined")
		return;
	control.className = control.className.replace(highlight_classname, "");
}

function highlight_control(control, focus) {
	if (typeof control == "undefined")
		return;
	control.className += (" " + highlight_classname);
	if (focus)
		control.focus();
}

