function report_js_error(msg, url, linenumber) {
  stuff=" URL: "+url+" - "+msg+"; line: "+linenumber;
  tmp = new Image();
  tmp.src = "/write_error.php?error="+stuff;
  return true;
}
function getCookie(Name) {   
	var search = Name + "="   
	if (document.cookie.length > 0) { 
		offset = document.cookie.indexOf(search)       
		if (offset != -1) { 
			offset += search.length
			end = document.cookie.indexOf(";", offset)
			if (end == -1) end = document.cookie.length
			return unescape(document.cookie.substring(offset, end))     
		}
	}
}
function setCookie(name, value) { 
	var expire = "0, 01-01-2020 00:00:00 GMT"
	document.cookie = name + "=" + escape(value) + "; expires=" + expire + "; path=/";
}
function Win2Escape(AStr){
	var Result='';
	for(var i=0;i<AStr.length;i++)
		if(AStr.charAt(i)>='А' && AStr.charAt(i)<='я')	Result+=Letters[AStr.charCodeAt(i)-0x0410];
		else if(AStr.charAt(i)=='Ё') Result+=Letters[64];
		else if(AStr.charAt(i)=='ё') Result+=Letters[65];
		else if(AStr.charAt(i)=='=') Result+='%3D';
		else if(AStr.charAt(i)=='&') Result+='%26';
		else Result+=AStr.charAt(i);
	return Result;
}
// -------------------------------------------------------------
function URLencode(sStr) {
	return (Win2Escape(sStr)).replace(/\+/g, '%2C').replace(/\"/g,'%22').replace(/\'/g, '%27');
}
// -------------------------------------------------------------
function startFlashing(block_id) {
	layer = document.getElementById(block_id);
	if (flashing==1) {
		layer.style.borderWidth='1px';
		layer.style.borderColor='#000000';
		if (layer.style.borderStyle.indexOf('none') == -1) {
			//alert(layer.style.borderStyle);
			layer.style.borderStyle='none';
		} else {
			layer.style.borderStyle='dotted';
		}
		window.setTimeout("startFlashing('"+block_id+"');", 100);
	} else {
		layer.style.borderStyle='none';
		layer.style.borderWidth='0px';
	}
}
// -------------------------------------------------------------
function AJAXRequest(url_param, ready_function, first_param, proc_function) {
	proc_function = proc_function || '';
	first_param = first_param || '';
	var xmlhttp=create_http_handle();
	if(xmlhttp) {
		xmlhttp.open("GET", url_param, true);
		xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
		xmlhttp.setRequestHeader("Pragma", "no-cache");
		xmlhttp.onreadystatechange=function() {
			if (xmlhttp.readyState==4) {
				eval(ready_function+'(\''+first_param+'\', xmlhttp.responseText);');
			}
		}
		if (proc_function) {
			eval(proc_function+'();');
		}
		xmlhttp.send(null);
		return false;
	}
}
// -------------------------------------------------------------
function create_http_handle(TYPE){
	var http_handle = false;
	if (window.XMLHttpRequest){
		http_handle = new XMLHttpRequest();
		if (http_handle.overrideMimeType){
			if (TYPE == "XML"){
				http_handle.overrideMimeType('text/xml');
			} else {
				http_handle.overrideMimeType('text/html');
			}
		}
	} else if (window.ActiveXObject){
		try {
			http_handle = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_handle = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_handle){
		alert("We are sorry but you are using an outdated browser.  To view this site you must update your browser.");
		return false;
	} else {
		return http_handle;
	}
}
// -------------------------------------------------------------
function getBrowserType()	 {
	var myUserAgent;
	var myMajor;
	myUserAgent = navigator.userAgent.toLowerCase();
	myMajor = parseInt(navigator.appVersion);
	re = /safari/i;
	if(re.exec(myUserAgent))								{	return "safari";	 }
	if( (myUserAgent.indexOf('mozilla') != -1) && (myUserAgent.indexOf('spoofer') == -1) && (myUserAgent.indexOf('compatible') == -1) && (myUserAgent.indexOf('opera') == -1) && (myUserAgent.indexOf('webtv') == -1)    )	{	return "nav";	}
	if (myUserAgent.indexOf("msie") != -1)				{	return "ie";		}
																		return "other";
}
// ------------------------------------------------------------

function teamFilter(team) {
	var url='/index.php?ajt=messages&doit=systemmodule&param1=name="teams" ajax="on" '; 
	AJAXRequest(url, 'resultFilter', 'gallery_result');
}

function resultFilter(param, result) {
	var param = document.getElementById(param);
	if(param) {
		param.innerHTML = result;
	}
}

function updateinputs_textareas() {
		var merged = [];
		if (!document.getElementsByTagName){ return; }
		var inputs = document.getElementsByTagName('input');
		var textareas = document.getElementsByTagName('textarea');
		if(inputs.length>0) for (var i=0; i<inputs.length; i++) merged.push(inputs[i]);
		if(textareas.length>0) for (var i=0; i<textareas.length; i++) merged.push(textareas[i]);
		for (var i=0; i<merged.length; i++){
				var inp = merged[i];
				inp.setAttribute('id',"inputlist"+i);
				var relAttribute = inp.getAttribute('rel');
				var sourceAttribute = inp.getAttribute('source');
				if(sourceAttribute && sourceAttribute!='') inp.setAttribute('sourceAttribute', sourceAttribute);
				var readonlyAttribute = inp.getAttribute('readonly') || inp.readOnly;
				var disabledAttribute = inp.getAttribute('disabled') || inp.disabled;
				var displayAttribute = inp.style.display;
				var visibilityAttribute = inp.style.visibility;
				if (relAttribute && relAttribute.toLowerCase().match('tips')){
					if(readonlyAttribute) continue;
					if(disabledAttribute) continue;
					if(displayAttribute == 'none') continue;
					if(visibilityAttribute == 'hidden') continue;
					var parent = inp.parentNode;
					if(parent.nodeName != 'SPAN')  continue;
					
					var Container = document.createElement("div");
					Container.setAttribute('id',"overlayCont"+i);
					Container.className = 'overlayCont';
					Container.style.position = 'absolute';
					Container.style.display = 'none';
					Container.style.zIndex = '100';
					Container.style.backgroundImage = 'url(/img/admin/tenka.png)';
					Container.style.backgroundPosition = 'right bottom';
					Container.style.paddingBottom = '8px';
					Container.style.paddingRight = '8px';
					Container.style.marginTop = inp.offsetHeight + "px";
					var divContainer = document.createElement("div");
					divContainer.setAttribute('id',"overlayTips"+i);
					divContainer.className = 'overlayTips';
					divContainer.style.borderTop = '1px solid #CCCCCC';
					divContainer.style.borderLeft = '1px solid #CCCCCC';
					divContainer.innerHTML = ""; Container.getAttribute('id');
					Container.appendChild(divContainer);
					parent.insertBefore(Container, inp);
					
					inp.TimerID = null;
					inp.stopclock = function() {
						if(this.TimerID) {
							clearInterval(this.TimerID);
							this.TimerID = null 
						}
					}
					inp.onblur = function() { 
						this.stopclock();
						var tId = this.id;
						var dId = 'overlayTips';
						var dIdArr = /inputlist(\d+)/.exec(tId);
						if(dIdArr) dId += dIdArr[1];
						this.TimerID = setInterval( function() {
							var inp = document.getElementById(tId);
							if(inp) inp.stopclock();
							var divContainer = document.getElementById(dId);
							if(divContainer) {
								divContainer.innerHTML=''; 
								divContainer.parentNode.style.display = 'none'; 
							}
						}, 300 );
					}
					inp.onkeyup = function (evt) {
						var dub = this;
						dub.stopclock();
						evt = (evt) ? evt : (window.event) ? window.event : ""
						if (evt) {
							var key = evt.keyCode || evt.which;
							var character = String.fromCharCode(key);
							var arrayOfStrings = dub.value.split(' ');
							var keyword = arrayOfStrings[arrayOfStrings.length-1];

							if (evt.modifiers) {
								var ALT = evt.modifiers & Event.ALT_MASK
								var CTRL = evt.modifiers & Event.CONTROL_MASK
							} else {
								var ALT = evt.altKey
								var CTRL = evt.ctrlKey
							}

							var ok = true;
							if(key == 32) ok = false; // _space_
							if(key == 188) ok = false; // ,
							if((key == 65) && (CTRL == true)) ok = false;	// CTRL+a
 							// Up, Down, Left, Right
							if((key == 37) || (key == 38) || (key == 39) || (key == 40)) return true;
							//  home				end
							if((key == 36) || (key == 35)) return true;
							if(ALT) return true;
							if(key == 46) return true;


							/*if(key == 40) {
								dub.onblur = null;
								var doit = true;
								var nod = divContainer.firstChild; 
								if(nod) {
									if(nod.nodeName != "A") {
										while(doit) {
											if(nod) {
												if(nod.nodeName != "A") nod = nod.nextSibling; 
											} else {
												doit = false;	
											}
										}
									}
								}
								if(nod) {
									nod.focus();
									divContainer.nextND = nod;
								}

								divContainer.onblur = function (evt) {
									divContainer.innerHTML=''; 
									divContainer.style.display = 'none'; 
									inp.onblur = function() { 
										this.stopclock();
										this.TimerID = setInterval( function() {
											divContainer.innerHTML=''; 
											divContainer.style.display = 'none'; 
											inp.stopclock();
											}, 300 );
									}
								}
								divContainer.onkeyup = function (evt) {
									evt = (evt) ? evt : (window.event) ? window.event : ""
									if (evt) {
										var key = evt.keyCode || evt.which;
										if(key == 40) {
											alert(divContainer.nextND.nodeName)
											var doit = true;
											var nod = this.nextSibling; 
											if(nod) {
												if(nod.nodeName != "A") {
													while(doit) {
														if(nod) {
															if(nod.nodeName != "A") nod = nod.nextSibling; 
														} else {
															doit = false;	
														}
													}
												}
											}
											if(nod) nod.focus();
										}
									}
								}
							}*/

							var dId = '';
							var dIdArr = /inputlist(\d+)/.exec(dub.id);
							if(dIdArr) dId = dIdArr[1];
							var divContainer = document.getElementById("overlayTips"+dId);

							if(ok)  {
								dub.TimerID = setInterval( function() {
									var xmlhttp=create_http_handle();
									dub.stopclock();
									if(xmlhttp) {
										xmlhttp.open("GET", '/index.php?ajt=messages&doit=systemmodule&param1=name="tipvars" ajax="on" keyword="'+encodeURIComponent(keyword)+'" source="'+encodeURIComponent(dub.getAttribute('sourceAttribute'))+'" ', true);
										xmlhttp.setRequestHeader("Content-type", "text/html; charset=utf-8");
										xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
										xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
										xmlhttp.setRequestHeader("Pragma", "no-cache");
										xmlhttp.onreadystatechange=function() {
											if (xmlhttp.readyState==4) {
												xmlhttp.responseText.type = "text/javascript";
												xmlhttp.responseText.onload = new function() {
													dub.stopclock();
													eval(xmlhttp.responseText);
													var tipsarr = tips || [];
													if(tipsarr.length > 0) {
														rest = '<ul>';
														for(var j=0; j<tipsarr.length; j++) {
															rest += '<li>&nbsp;&nbsp;<a href="#" onClick="setTips(\''+dub.id+'\', \''+tipsarr[j][0]+'\', \''+addslashes(tipsarr[j][1])+'\'); return false;" class="C_red"><nobr>'+tipsarr[j][1]+'</nobr></a>&nbsp;&nbsp;</li>';
														}
														rest += '</ul>';
														divContainer.innerHTML = rest;
														divContainer.parentNode.style.display = 'block';
													} else {
														suggestToAdd(dub.id, dub.value, divContainer, dub.getAttribute('sourceAttribute'));
													}
												}
											}
										}
										xmlhttp.send(null);
										return false;
									}
								}, 300);
							} else {
								this.stopclock();
								suggestToAdd(dub.id, dub.value, divContainer, dub.getAttribute('sourceAttribute'));
								return true;
							}
						}
					}
					inp.stopclock();
				}
		}
}


function suggestToAdd (id, value, divContainer, source)  {
	/* JAVASCRIPT  FUNCTIONALITY
	var myRe = /([^, ]+)(,| *)/g;
	var slAr = []; var slArSep = [];
	var mAr = myRe.exec(value);
	while (mAr)
	{
		if(mAr[1]!="") {
			slAr.push(mAr[1]);
			slArSep.push(mAr[2] || ' ');
		}
		mAr = myRe.exec(value);
	}
	var rest = '';
	var collect = '';
	if(slAr.length>0) {
		for(var i=0; i<slAr.length; i++) {
			collect += slAr[i];
			rest += '<nobr>`<b><i>'+collect+'</i></b>` <a href="#" onClick="return setNewTips(\''+encodeURIComponent(collect)+'\', \''+source+'\');" class="C_red">Добавить в словарь</a></nobr><br>';
			if(slArSep[i] == ',') collect = '';
			else collect += slArSep[i];
		}
	}
	if(rest!='') {
		divContainer.innerHTML=rest; 
		divContainer.style.display = 'block';
	} else {
		divContainer.innerHTML = '';
		divContainer.style.display = 'none';
	}
	*/
	var xmlhttp=create_http_handle();
	if(xmlhttp && value!='') {
		xmlhttp.open("GET", '/index.php?ajt=messages&doit=systemmodule&param1=name="tipvars" ajax="on" suggestion="'+encodeURIComponent(value)+'" source="'+encodeURIComponent(source)+'" elmid="'+id+'" ', true);
		xmlhttp.setRequestHeader("Content-type", "text/html; charset=utf-8");
		xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
		xmlhttp.setRequestHeader("Pragma", "no-cache");
		xmlhttp.onreadystatechange=function() {
			if (xmlhttp.readyState==4) {
				xmlhttp.responseText.onload = new function() {
					//alert(xmlhttp.responseText); return;
					if(xmlhttp.responseText!='') {
						divContainer.innerHTML=xmlhttp.responseText; // + "<br>" + divContainer.id; 
						divContainer.parentNode.style.display = 'block';
					} else {
						divContainer.innerHTML = '';
						divContainer.parentNode.style.display = 'none';
					}
				}
			}
		}
		xmlhttp.send(null);
		return false;
	}
}

function setNewTips(id, value, source) {
	var inp = document.getElementById(id);
	var xmlhttp=create_http_handle();
	if(xmlhttp && value!='') {
		if(inp) inp.disabled = true;
		xmlhttp.open("GET", '/index.php?ajt=messages&doit=systemmodule&param1=name="tipvars" ajax="on" newkeyword="'+value+'" source="'+encodeURIComponent(source)+'" ', true);
		xmlhttp.setRequestHeader("Content-type", "text/html; charset=utf-8");
		xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
		xmlhttp.setRequestHeader("Pragma", "no-cache");
		xmlhttp.onreadystatechange=function() {
			if (xmlhttp.readyState==4) {
				xmlhttp.responseText.onload = new function() {
					//alert(xmlhttp.responseText)
					if(inp) {
						inp.disabled = false;
						inp.focus();
					}
				}
			}
		}
		xmlhttp.send(null);
	}
	return false;
}

function setTips(elemid, id, ttl) {
	var inp = document.getElementById(elemid);
	if(inp) {
		var arrayOfStrings = inp.value.split(' ');
		var keyword = arrayOfStrings[arrayOfStrings.length-1];
		var reg = new RegExp(keyword+"$");
		inp.value = (inp.value+'').replace(reg, ttl);
		inp.focus();
	}
}

function stripslashes( str ) {
	return (str+'').replace(/\0/g, '0').replace(/\\([\\'"])/g, '$1');
}

function addslashes( str ) {
	return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
}

Event.observe(window, 'load', updateinputs_textareas, false);
