window.onerror = null;sender = {	  script 					: "/script/sender/form_input.php",	  block     			: "input_global_block",    label_prefix    : "input_label_block_", // префикс для блока описания поля    source_prefix   : "input_source_block_", // префикс для блока поля    check_prefix    : "input_check_block_", // префикс для блока описания ошибки поля    status_prefix   : "input_check_block", // префикс для блока статуса     label_class     : "input_label", // префикс для блока описания поля    source_class    : "input_source", // префикс для блока поля    check_class     : "input_check", // префикс для блока описания ошибки поля    input_class     :	"input_block",    button_class    :	"input_button",    status_class    :	"input_status",    sending_message :	"Спасибо. Ваше cобщение отправлено",    sending_message_error :	"Ошибка! Сообщение отправить не удалось",    elem				 		: Array(),    elem_error 			: Array(),    elem_button			: Array(),    elem_value 			: Array(),        error_write: function(el, bool, text){    	if (bool){    		document.getElementById(sender.check_prefix+el.id).innerHTML += text + '<br />';    	}    },         error_clear: function(el){    	if (document.getElementById(sender.check_prefix+el.id)){    		document.getElementById(sender.check_prefix+el.id).innerHTML="";				el.style.borderColor = "#000000";				el.style.borderWidth = "0px";			}    },     error: function(el,bool){    	if (document.getElementById("input_check_block_"+el.id)){    		if (bool){    			document.getElementById("input_check_block_"+el.id).style.visibility = "visible";					el.style.borderColor = "#FF0000";					el.style.borderWidth = "1px";				} else {					document.getElementById("input_check_block_"+el.id).style.visibility = "hidden";					el.style.borderColor = "#008000";					el.style.borderWidth = "1px";				}			}    },    clearAll : function(){  		for (var i = 0; i < sender.elem.length; i++) {     		var arg = sender.elem[i];      	if (arg[0]){      		var el = document.getElementById(arg[0]);      		el.value = "";       		sender.elem_value[el.id]['value'] = el.value;      	}    	}  	},       checkAll : function(e){    	var error = false;  		for (var i = 0; i < sender.elem.length; i++) {     		var arg = sender.elem[i];      	if (arg[0]){      		var el = document.getElementById(arg[0]);      		if (sender.check(el)) error=true;      	}    	}    	return error;  	},    check : function(e){    	if (e.id) var el=e;    		else var el = window.event ? window.event.srcElement : e.currentTarget;    	var is_error_all = false;    	sender.elem_value[el.id]['value'] = el.value;    	sender.error_clear(el);    	for (var i = 0; i < sender.elem_error.length; i++){    		var arg = sender.elem_error[i];    		if (arg[0]==el.id){    			var is_error = false;    			switch(arg[2]) {    				case "is_name":    					is_error = (el.value.match(/[\wа-яА-Я]+/))?false:true;    				break    				case "is_email":    					is_error = (el.value.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,5}$/)) ? false : true;    				break	    				case "is_email_correct":    					is_error = (el.value.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,5}$|^$/)) ? false : true;    				break	    				case "regexp":    				if (arg[3])    					is_error = (el.value.match('/'+arg[3]+'/')) ? false : true;    				break		    				case "min_length":    					var value = arg[3];    					is_error = (el.value.length >= value) ? false : true;    				break    				case "max_length":    					var value = arg[3];    					is_error = (el.value.length <= value) ? false : true;    				break    				case "is_select":    					var value = arg[3];    					is_error = (el.value != value) ? false : true;    				break    			}    			sender.error_write(el,is_error,arg[1]);    			if(is_error) is_error_all = true; 		    		}    	}    	sender.error(el,is_error_all);    	return is_error_all;    },    add_button : function(){    	sender.elem_button=sender.add_button.arguments;    },    add : function(){    	sender.elem.push(sender.add.arguments);    },    add_error : function(){    	sender.elem_error.push(sender.add_error.arguments);    },    init : function(){      for (var i = 0; i < sender.elem.length; i++) {     		var arg = sender.elem[i];    switch(arg [2]) {    	case "option":    		if (document.getElementById(arg[0])){        			var input_source = document.createElement("option");        			input_source.value = input_source.text = input_source.innerHTML = arg[1];        			input_source.defaultSelected = arg [3] ? arg [3] : false;    					var parent_select = document.getElementById(arg[0]);    					parent_select.appendChild(input_source);    		}        		break        		case "hidden":        			var input_source = document.createElement("input");    					input_source.id = arg [0];    					input_source.type = 'hidden';    					input_source.value = arg[3];    					sender.elem_value[arg[0]] = Array();      				sender.elem_value[arg[0]]['title'] = arg[1];      				div_block_source.appendChild(input_source);        		break      default:  		      if (arg[0]){      		sender.elem_value[arg[0]] = Array();      		sender.elem_value[arg[0]]['title'] = arg[1];        	var div_block = document.createElement("div");        	div_block.className = sender.input_class;        	var div_block_label = document.createElement("div");        	div_block_label.className = sender.label_class;        	div_block_label.id = sender.label_prefix+arg [0];        	div_block_label.innerHTML = arg[1];        	div_block.appendChild(div_block_label);        	var div_block_source = document.createElement("div");        	div_block_source.className = sender.source_class;        	div_block_source.id = sender.source_prefix+arg [0];        	switch(arg [2]) {    				case "textarea":    					var input_source = document.createElement("textarea");    					input_source.id = arg [0];    					input_source.cols = arg [3] ? arg [3] : 5;    					input_source.rows = arg [4] ? arg [4] : 5;        		break    				case "text":        			var input_source = document.createElement("input");    					input_source.id = arg [0];    					input_source.type = 'text';        		break        		case "select":        			var input_source = document.createElement("select");    					input_source.id = arg [0];        		break        		  				}        	div_block_source.appendChild(input_source);        	div_block.appendChild(div_block_source);        	sender.d(input_source,"blur", sender.check);        	var div_block_check = document.createElement("div");        	div_block_check.className = sender.check_class;        	div_block_check.id = sender.check_prefix+arg[0];        	div_block.appendChild(div_block_check);        	var global = document.getElementById(sender.block);        	global.appendChild(div_block);          	   		    				}			}		}			var arg_button = sender.elem_button;			if (arg_button[0]){					var input_source = document.createElement("input");    			input_source.type = 'button';    			input_source.className = sender.button_class;    			input_source.value = arg_button [0];    			sender.d(input_source,"click", sender.send);    			var global = document.getElementById(sender.block);    			global.appendChild(input_source);			}			var div_block_status = document.createElement("div");        	div_block_status.className = sender.status_class;					div_block_status.id = sender.status_prefix;					var global = document.getElementById(sender.block);					global.appendChild(div_block_status);  },  		send : function(){			if (!sender.checkAll()){			var req = new JsHttpRequest();    	req.onreadystatechange = function() {      	if (req.readyState == 4)      	if (req.responseJS) {      		sender.set_status(sender.sending_message);      		sender.clearAll();       	} else {       		sender.set_status(sender.sending_message_error);       	}    	}    	req.open(null, sender.script, true);    	req.send( {'value':sender.elem_value} );  		}		},				set_status : function(message){			 document.getElementById(sender.status_prefix).innerHTML = message;		},    d : function(o, e, a){      if (o.addEventListener) return o.addEventListener(e, a, false);      else if (o.attachEvent) return o.attachEvent("on" + e, a);      else return false;    }}sender.d(window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null, "load", sender.init);