﻿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;

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))
	{
		return false;
	}
	if (key_code == 13)
	{
	    if(!mode)
	    {
	        if(divEmail != null)
	        {
	            divEmail.removeChild(valid1);
	            divEmail.removeChild(valid2);
	        }
	        lbSearch.click();
	    }
		if (dropdown_visible == 1)  // enter при видимом попапе - игнорируем - он будет обработан в on_key_up()
		{
			return false;
		} 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)
{
    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
	if((key_code == 13) && mode && (dropdown_visible == 1))
	{
	    reset_text_box(tb, div);
		e.cancelBubble = true;
		return false;
	} else
	// enter - оставляем текущее значение и прячем попап
	if ((key_code == 13) && (dropdown_visible == 1))  
	{
		if(!mode)
		{
		    reset_text_box(tb, div);
		    highlight_text_box(tb);
		    return true;
		}
	} 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');
		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];
    		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';
    	}
	}
	//если режим контрола 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);
        httpRequester.onreadystatechange = function()
        {
            if(httpRequester.readyState == 4) 
            {
                if(httpRequester.status == 200)
                {
                    var ul = div.childNodes[0];
                    ul.innerHTML = httpRequester.responseText;
                    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 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');
	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.toLowerCase();
    str = str.replace('<b>', '');
    str = str.replace('</b>', '');
    if(str.match('<b>') || str.match('</b>'))
    {
        return remove_bold(str);
    }
    else
    {
        return str;
    }
}