﻿get_element = document.all ?
	function(n) {return document.all[n]} : (document.getElementById ? (function(n){return document.getElementById(n)}) : null);

var crnt;
var crntDiv;
var crntSEO;
var crntDivSEO;

var dbl_backspace = 0;
var cur_drop_count = 0;
var show_num = 0;
var ln = 0;
var dropdown_visible = 0;


var the_form = document.forms['form1'];
if (!the_form) 
	the_form = document.form1;
var lbSearch;
var divEmail;
var tbEmail;
var valid1, valid2;
var lastRgnClass = '';

function on_key_down(tb, div, e, mode)
{
    key_code = e.keyCode;
    lbSearch = document.getElementById('ucSearchForm_lbSearch');
    
    //уборка валидов с формы рассылки
    divEmail = document.getElementById('ucset_btnSubs');
    valid1 = document.getElementById('ucset_revseb');
    valid2 = document.getElementById('ucset_rfvseb');
	// блокируем отработку клавиш
	if ((key_code == 38) || (key_code == 40))
	{
//	    if(div.childNodes[0].childNodes.length > 0) {
//	        var ul = div.childNodes[0];
//		    var li;
//		    var a;
//		    cur_drop_count = 0;
//		    for(i = 0; i < ul.childNodes.length; i++) {
//		        li = ul.childNodes[i];
//				a = li.childNodes[0];
//				a.className = "";
//				a.style.textDecorationNone = true;
//				if( i == show_num )
//				{
//				   a.className = "ftb_dropdown_a_active";
//				   tb.value = remove_bold(a.innerHTML);
//				   handChanged = false;
//				}
//				cur_drop_count++;
//		    }
//		    if(cur_drop_count == 0) { div.style.display = 'none'; }
//		    else { div.style.display = 'block'; }
//	    }
		return false;
	}
	if (key_code == 13)
	{
	    if(!mode)
	    {
	        if(divEmail != null)
	        {
	            divEmail.removeChild(valid1);
	            divEmail.removeChild(valid2);
	        }
	        if(dropdown_visible == 1)
	        {
				return preventEnter(e);
			}
	        else
	        {
				lbSearch.click();
	        }
	    }
		if (dropdown_visible == 1)  // enter при видимом попапе - игнорируем - он будет обработан в on_key_up()
		{
			return preventEnter(e);
		} 
		else
		{ // enter при закрытом попапе - делаем submit формы
		    //ucSearchForm_lbSearch.click()
	        //tbEmail.disabled = true;
	        if(divEmail != null)
	        {
	            divEmail.removeChild(valid1);
	            divEmail.removeChild(valid2);
	        }
		    lbSearch.click();
		}
	}
	return true;
}

function getHTTPRequestObject()
{
	var xmlHttpRequest;
//	if (typeof ActiveXObject != 'undefined') {
//		xmlHttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
//	} else if (typeof XMLHttpRequest != 'undefined') {
//		xmlHttpRequest = new XMLHttpRequest();
//		//xmlHttpRequest.overrideMimeType('text/xml');
//	} else {
//		xmlHttpRequest = false;
//	}
	if(window.XMLHttpRequest)
	    xmlHttpRequest = new XMLHttpRequest();
	else if (window.ActiveXObject)
	{
	    try {
	        xmlHttpRequest = new ActiveXObject('Msxml2.XMLHTTP');
	    } catch(e) {}
	    try {
	        xmlHttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
	    } catch(e) {}
	}
	return xmlHttpRequest;
}

//для ajax запоминаем значение введенное в текстбокс
var tb_prev = '';
var tb_hand = '';

function on_key_up(tb, div, e, mode, isRgn, lang)
{
    key_code = e.keyCode;
	// перемещения курсора вверх/вниз
	var flag = false;
	var handChanged = true;
	if ((key_code == 38) || (key_code == 40))
	{
		if (key_code == 38)
		{
			show_num--;
			if (show_num < 0)
				show_num = cur_drop_count - 1;
		} else
		{
			show_num++;
			if (show_num >= cur_drop_count)
				show_num = 0;
		}
		if(!mode)
		{
		    tb.value = tb.value.substr(0, ln);
		}
		else
		{
		    var ul = div.childNodes[0];
		    var li;
		    var a;
		    cur_drop_count = 0;
		    for(i = 0; i < ul.childNodes.length; i++)
		    {
		        li = ul.childNodes[i];
				a = li.childNodes[0];
				a.className = "";
				a.style.textDecorationNone = true;
				if( i == show_num )
				{
				   a.className = "ftb_dropdown_a_active";
				   tb.value = remove_bold(a.innerHTML);
				   handChanged = false;
				}
				cur_drop_count++;
		    }
		    if(cur_drop_count == 0)
		    {
		        div.style.display = 'none';
		    }
		    else { div.style.display = 'block'; }
		}
	} else
	if((key_code == 13) && mode && (dropdown_visible == 1))
	{
	    reset_text_box(tb, div);
	    return preventEnter(e);
	} else
	// enter - оставляем текущее значение и прячем попап
	if ((key_code == 13) && (dropdown_visible == 1))  
	{
		if(!mode)
		{
		    reset_text_box(tb, div);
		    highlight_text_box(tb);
		    return preventEnter(e);
		}
	} else
	// escape - очищаем поле и прячем попап
	if((key_code == 27) && mode && (dropdown_visible == 0))
	{
	    tb_hand = tb.value;
	    reset_text_box(tb, div);
	} else
	if ((key_code == 27) && (dropdown_visible == 1))
	{
	    if(!mode)
	    {
		    tb.value = '';
		    reset_text_box(tb, div);
		    highlight_text_box(tb);
		}
		else
		{
		    tb.value = tb_hand;
		    //tb_hand = '';
		    reset_text_box(tb, div);
		}
		return true;
	} else
	{
		show_num = 0;
		// игнорируемые клавиши
		if ((key_code >= 9 && key_code < 32) || (key_code >= 33 && key_code <= 46) || (key_code >= 112 && key_code <= 123)) 
			return;
	}
	
	// при необходимости (если есть выделенная область) - имитируем нажатие backspace 2-й раз
	if ((key_code == 8) && (dbl_backspace == 1))
		tb.value = tb.value.substr(0, tb.value.length - 1);
	dbl_backspace = 0;

	// show/hide элементов списка
	//режим контрола не ajax
	if(!mode)
	{
		var temp = document.getElementById('ucSearchForm_divSfHint');
		if(temp != null)
		{
			temp.style.display = 'none';
		}
	    show_text = "";
	    cur_drop_count = 0;
    	var ul = div.childNodes[0];
    	var li;
    	ln = tb.value.length;
    	for (i = 0; i < ul.childNodes.length; i++)
    	{
    		li = ul.childNodes[i];
			if(cur_drop_count < 7)
			{
			a = li.childNodes[0];
			a.className = "";
			if ((tb.value.toUpperCase() == a.innerHTML.substr(0, ln).toUpperCase()) && (ln > 0))
			{
				li.style.display = 'block';
				a.style.textDecorationNone = true;
				if (cur_drop_count == show_num)
				{
					show_text = a.innerHTML;
					a.className = "ftb_dropdown_a_active";
				}
				cur_drop_count++;
			} else
				li.style.display = 'none';
			}
			else
				li.style.display = 'none';
    	}
	}
	//если режим контрола ajax
	else if(tb_prev != tb.value && handChanged && tb.value.length > 0)
	{
        show_text = "";
        cur_drop_count = 0;
        var httpRequester = getHTTPRequestObject();
        var url = '/Handlers/SeoQueryHint.ashx?query=' + escape(tb.value) + '&tbId=' + escape(tb.id);
        if(isRgn == 1)
            url = '/Handlers/RegionsHint.ashx?query=' + escape(tb.value) + '&lang=' + lang;
        httpRequester.onreadystatechange = function()
        {
            if(httpRequester.readyState == 4) 
            {
                if(httpRequester.status == 200)
                {
//                    if(isRgn == 1)
//                    {
//                        /*lbRgnHint = document.getElementById('ucSearchForm_divSfHint');
//                        if(lbRgnHint.className != 'hidden')
//                            lastRgnClass = lbRgnHint.className;
//                        lbRgnHint.className = 'hidden';*/
//                    }
                    var ul = div.childNodes[0];
                    ul.innerHTML = decodeURIComponent(httpRequester.responseText).replace(/\+/g, ' ');
                    if(httpRequester.responseText == '')
                    {
                        reset_text_box(tb, div);
                    }
                    else
                    {
                        cur_drop_count = div.childNodes.length;
                        div.style.display = 'block';
                    }
                }
            }
        };
        httpRequester.open("GET", url, true);
        httpRequester.send(null);
        tb_prev = tb.value;
        tb_hand = tb.value;
	}
    
    if(tb.value.length == 0)
    {
        tb_prev = '';
        tb_hand = '';
    }
	
	// если есть элементы для попап - отобразить его, иначе - спрятать
	if (cur_drop_count > 0)
	{
		dropdown_visible = 1;
		div.style.display = 'block';
	} else
	{
		dropdown_visible = 0;
		div.style.display = 'none';
	}
	
	// подсветка окончания
	if(!mode)
	{
    	if (show_text != "")
    	{
    		tb.value = show_text;
    		highlight_text_box(tb);
    		
    		if (ln < tb.value.length)
    			dbl_backspace = 1;
    	}
	}
	return true;
}

function preventEnter(e)
{
	var isIE = (navigator.userAgent.indexOf("MSIE") != -1);
	e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;
	e.returnValue = false;
	if(isIE == false)
	{
		e.preventDefault();
	}
	
	if(lastRgnClass != '')
    {
        lbRgnHint = document.getElementById('ucSearchForm_divSfHint');
        lbRgnHint.className = lastRgnClass;
    }
	
	return false;
}

function reset_text_box(tb, div)
{
	dbl_backspace = 0;
	//cur_drop_count = 0;
	//show_num = 0;
	ln = tb.value.length;
	dropdown_visible = 0;
	div.style.display = 'none';
	var temp = document.getElementById('ucSearchForm_divSfHint');
	if(temp != null)
	{
		temp.style.display = '';
	}
}

function highlight_text_box(tb)
{
	if (document.selection)
	{
		var r = tb.createTextRange();
		r.moveStart("character", ln);
		r.moveEnd("character", ln);
		r.select();
	} else
		tb.setSelectionRange(ln, tb.value.length);  
}

var tmp_tb;

function on_mouse_down(tb, div, a, mode)
{
	if(mode)
	{
		tb.value = remove_bold(a.innerHTML);
	}
	else
	{
		tb.value = a.innerHTML;
	}
	reset_text_box(tb, div);
	highlight_text_box(tb);
	
	globalvar = tb;
	setTimeout("globalvar.focus()", 250);
	return true;
}

function on_blur(tb, div)
{
	reset_text_box(tb, div);
	return true;
}

function remove_bold(str)
{
    str = str;
    str = str.replace('<b>', '').replace('<B>', '');
    str = str.replace('</b>', '').replace('</B>', '');
    if(str.match('<b>') || str.match('</b>') || str.match('<B>') || str.match('</B>'))
    {
        return remove_bold(str);
    }
    else
    {
        return str;
    }
}

function on_key_press(e)
{
	if((e.keyCode == 13) && (dropdown_visible == 1))
    {
		return preventEnter(e);
	}
}
