(function()

{
    //window.onerror = getError;
})();


function getError(msg, url, lno)
{
    var img=new Image;
    img.src='/external/jerror.php?msg='+encodeURIComponent(msg)+'&url='+encodeURIComponent(url)+'&lno='+encodeURIComponent(lno);
    return true;
}
function setDivContent(xml)
{
	//debugNotice('Begin parse');
	if (!xml.documentElement) {
		setMessageContent("div_operation_message", "Ошибка в передаче данных от сервера. Повторите операцию позже.");
		return false;
	}
	xml = xml.documentElement;

	items = xml.getElementsByTagName('html');
	if (items) {
		if (elm_id = items[0].getAttribute('id')) {
			if (elm = document.getElementById(elm_id))
				elm.innerHTML = items[0].textContent || items[0].text;
		}
	}

	items = xml.getElementsByTagName('jscript');
	if (items) {
		for (var i=0; i<items.length; i++) {
			script_src = items[i].getAttribute('src');
			go = true;
			if (document.scripts)
			for (j = 0; j < document.scripts.length; j++)
			if (document.scripts[j].src == script_src)
				go = false;
			if (go) {
				s=document.body.appendChild(document.createElement('script'));
				s.id='sst';
				s.language='javascript';
				void(s.src=script_src);
			}
		}
	}

	items = xml.getElementsByTagName('execute');
	if (items) {
		for (var i=0; i<items.length; i++) {
			for (var j=0; j<items[i].childNodes.length; j++) {
				js_code = items[i].childNodes[j].data;
				try {
				    eval(js_code);
				}
				catch(err) {
				    setMessageContent("div_operation_message", "Ошибка в передаче данных от сервера. Повторите операцию позже.");
				}
			}
		}
	}
}

function getForm(fobj)  {
	var str = "?xml=1&r="+Math.random()+"&";
	var elements = fobj.elements;

	for(var i = 0; i < elements.length; i++) {
		switch(elements[i].type) {  //  обрабатываем  данные  согласно  типу  элемента
			case "text":
			case "hidden":
			case "password":
			case "textarea":
			//!!!!!!!!!!!!!!!!вставить вроверку на корректность вводимых данных(реализовать на уровне javascript)
			str += elements[i].name + "=" + encodeURIComponent(elements[i].value) + "&";
			break;

			case "checkbox":
			case "radio":
			if (elements[i].checked)
				str += elements[i].name + "=" + encodeURIComponent(elements[i].value) + "&";
			break;

			case "select-one":
			str += elements[i].name + "=" + encodeURIComponent(elements[i].options[elements[i].selectedIndex].value)  +  "&";
			break;

			case 'select-multiple':
			for(j = 0; j < elements[i].options.length; j++) {
				if(elements[i].options[j].selected == true)
					str += elements[i].name + "=" + encodeURIComponent(elements[i].options[j].value)  +  "&";
			}
			//str += elements[i].name + "="
		}  //  switch
	}  //  for
	str = (str.substr(0, (str.length - 1)));
	return str;
}

function clearForm(user_form) {
    if (!user_form)
        var user_form = document.getElementById('user_form');
    else
        var user_form = document.getElementById(user_form);

	if (! user_form)
		return false;

	var elements = user_form.elements;

	for(var i = 0; i < elements.length; i++)
		elements[i].style.borderColor = "";
}
// Отправка нового сообщения
function validate() {
	if (document.getElementById('user_id').value == 0)
		setMessageContent("div_operation_message", "Вы не выбрали получателя сообщения из списка Ваших друзей.");
	else
		serverCall2('/message/new/'+ge('user_id').value+'/send' + getForm(document.getElementById('user_form')), parseResponse, 'POST');
}

function show_hide(id) {
    elm = document.getElementById(id);
    if((elm.style.visibility == 'hidden') || elm.style.display == 'none') {
        elm.style.visibility = 'visible';
        elm.style.display = 'block';
    } else {
        elm.style.visibility = 'hidden';
        elm.style.display = 'none';
    }
}

function hide_elm(id) {
    elm = document.getElementById(id);
    if (elm) {
        elm.style.visibility = 'hidden';
        elm.style.display = 'none';
    }
}

function show_elm(id)
{
    elm = document.getElementById(id);
    if (elm) {
        elm.style.visibility = 'visible';
        elm.style.display = 'block';
        if (pf.browsCap.isOpera)
            elm.focus();
    }
}

function show_elm_firefox(id)
{
    elm = document.getElementById(id);
    if(elm)
    {
        elm.style.visibility = 'visible';
        elm.style.display = '';
        if (pf.browsCap.isOpera)
            elm.focus();
    }
}

function deleteConfirm()
{
    return confirm('Действительно хотите удалить?');
}

function ge()
{
  var ea;
  for( var i = 0; i < arguments.length; i++ ) {
    var e = arguments[i];
    if( typeof e == 'string' )
      e = document.getElementById(e);
    if( arguments.length == 1 )
      return e;
    if( !ea )
      ea = new Array();
    ea[ea.length] = e;
  }
  return ea;
}

var changeAddressArr = [];
function writeAddress2() {
	var _div = $('user_about_div');
	for (var i=0, len=changeAddressArr.length; i<len; i++) {
		var arr = changeAddressArr[i].split(',');
		var strTo = writeAddress(arr[0], arr[1], arr[0] + '&' + arr[1]);
		var str = arr[0] + '\', \'' + arr[1] + '\', \'' + arr[0] + '&amp;' + arr[1];
		if (_div.innerHTML.search(str) != -1) {
			_div.innerHTML = _div.innerHTML.replace(str, strTo);
		}
	}
	changeAddressArr = [];
}
function writeAddress3() {
	var _div = $('contacts_full');
	for (var i=0, len=changeAddressArr.length; i<len; i++) {
		var arr = changeAddressArr[i].split(',');
		var strTo = writeAddress(arr[0], arr[1], arr[0] + '&' + arr[1]);
		var str = arr[0] + '\', \'' + arr[1] + '\', \'' + arr[0] + '&amp;' + arr[1];
		if (_div.innerHTML.search(str) != -1) {
			_div.innerHTML = _div.innerHTML.replace(str, strTo);
		}
	}
	changeAddressArr = [];
}
function writeAddress(name, domain, text)
{
	name = name.replace(/@/g, "");
    name = name.replace(/\./g, "");
    name = name.replace(/!/g, ".");

    domain = domain.replace(/@/g, "");
    domain = domain.replace(/\./g, "");
    domain = domain.replace(/!/g, ".");

    text = text.replace(/@/g, "");
    text = text.replace(/\./g, "");
    text = text.replace(/!/g, ".");
    text = text.replace(/&/g, "@");
    
    return '<a href="mailto:' + name + '@' + domain + '">'+text.slice(0, 40)+'</a>';
}

function clearField(elem)
{
    if (elem) {
        elem.value = '';
        elem.onfocus = '';
        elem.onclick = '';
    }
}
//Функции для работы с куками

function trimLeft(s) {
  while(s.substr(0,1) == " ")
    s = s.substr(1);
  return s;
}

function getCookie(sName) {
  var aCookie = document.cookie.split(";");
  for (var i = 0; i < aCookie.length; i++) {
    var aCrumb = trimLeft(aCookie[i]).split("=");
    if (sName == aCrumb[0])
      return unescape(aCrumb[1]);
  }
  return null;
}

function setCookie(sName, sValue) {
  var cookie = sName+'='+escape(sValue)+';path=/';
  document.cookie = cookie;
}

function setMessageContent(elm_id, content) {
    elm = document.getElementById(elm_id);
    if (elm) {
        hide_elm(elm_id);
        elm.innerHTML = '<span><a href="" onclick="hide_elm(\'' + elm_id + '\'); return false" class="delete" title="скрыть">скрыть</a></span>' + content;
        show_elm(elm_id);
    }
}

function show_error_message_onclick(message_elm_id, str) {
    setMessageContent(message_elm_id, '<div>' + str + '</div>');
}

var activeblock;

function detectWindowSize() {
    var x,y;
    var test1 = document.body.scrollHeight;
    var test2 = document.body.offsetHeight;
    if (test1 > test2) {
    	x = document.body.scrollWidth;
    	y = document.body.scrollHeight;
    } else {// Explorer Mac;
         //would also work in Explorer 6 Strict, Mozilla and Safari
    	x = document.body.offsetWidth;
    	y = document.body.offsetHeight;
    }

    var result = new Array();

    result[0] = x;
    result[1] = y;

    return result;
}

/**
 * функция проверяет строку на правильность написания адреса к картинке и на пустоту строки
 * если is_guestbook = true - то картинка необязательна к загрузке
 * иначе - обязательна
 */
function checkInputPhoto(value, message_div, is_guestbook) {
    var reg = /^.+\.(jpg|jpeg|gif)$/i;

    if (is_guestbook != true) {
        if (value.length == 0) {
            setErrorString( "Выберите фотографию для загрузки");
            return false;
        }

        if (reg.test(value) == false) {
            setErrorString( "Неверное расширение загружаемого файла");
            return false;
        }
    } else {
        if (reg.test(value) == false && value.length != 0) {
            setErrorString( "Неверное расширение загружаемого файла");
            return false;
        }
    }
}

function show_hide_messages_block(id, link_id) {
    var elm = document.getElementById(id);
    var link_elm = document.getElementById(link_id);
    if((elm.style.visibility == 'hidden') || elm.style.display == 'none') {
        elm.style.visibility = 'visible';
        elm.style.display = 'block';
        if (link_elm.tagName == 'INPUT')
            link_elm.value = 'Скрыть';
        else
            link_elm.innerHTML = 'cкрыть';
        link_elm.title = 'Скрыть';
    } else {
        elm.style.visibility = 'hidden';
        elm.style.display = 'none';
        if (link_elm.tagName == 'INPUT')
            link_elm.value = 'Написать';
        else
            link_elm.innerHTML = 'написать';
        link_elm.title = 'Написать';
    }
}

function getcolorblue (what) {
	what.className="blue";
}
	
function getcolorblack (what) {
	what.className="black";
}

function setTimerId(id, ajax_params) {
    window.timer_id = id;
    
    if (typeof(ajax_params) != 'undefined') {
        window.current_ajax_params = ajax_params;
    }
}

function checkNewMessage(timer_id) {
	if (timer_id == window.timer_id) {
	   sendRequest('MessagesView', {param : 1}, '/messages/findnew/');
	   window.timer_is_waiting_for_response = true;
	}
}

function toggleCheckboxes(fobj, parent_checkbox) {
    var elements = fobj.elements;
    for(var i = 0; i < elements.length; i++) {
    	if (elements[i].type == 'checkbox') {
    		elements[i].checked = parent_checkbox.checked;
    	}
    }
}
function checkCheckedAll()
{
    var elements = $('message_form').elements;
	var count = 0, countChecked = 0, checkAll = [];
    for(var i = 0; i < elements.length; i++) {
    	if (elements[i].type == 'checkbox') {
			count++;
    		if (elements[i].checked && elements[i].name!='all') countChecked++;
			if (elements[i].name=='all') checkAll.push(elements[i]);
    	}
    }
	count -=2;
	for(var i=0, n = checkAll.length; i<n; i++) checkAll[i].checked = countChecked==count;
}
function hide_error(elem_id) {
    document.getElementById(elem_id).innerHtml = "&nbsp;";
}

function messagesRefresh(_win) {
    if (pf.browsCap.isIE) {
        window.setTimeout(function() {
            if (!_win || (_win && _win.closed)) {
                sendRequest('MessagesView', {param : 1}, '/messages/findnew/');
                if (typeof(current_ajax_params) != 'undefined') {
                    sendRequest('MessagesBlock', current_ajax_params, '/messages/users/');
                }
            }
        }, 555);
    } else {
        window.setTimeout(function() {
        	sendRequest('MessagesView', {param : 1}, '/messages/findnew/');
        	if (typeof(current_ajax_params) != 'undefined') {
	            sendRequest('MessagesBlock', current_ajax_params, '/messages/users/');

        	}
        }, 555);
    }
}

function processNewMessage(timer_id, new_messages_count, update_timeout) {
	window.timer_is_waiting_for_response = false;
	if ( (typeof(window.new_messages_count) != 'undefined') && (new_messages_count == window.new_messages_count)) {
		setTimeout('checkNewMessage(' + timer_id + ')', update_timeout);
	} else {
		if (typeof(window.current_ajax_params) != 'undefined') {
		    sendRequest('MessagesBlock', window.current_ajax_params, '/messages/users/');
		} else {
			setTimerId(1);
			setTimeout('checkNewMessage(1)', update_timeout);
		}
		window.new_messages_count = new_messages_count;
		
		message_item = document.getElementById("messages_item");
		
		if (message_item) {
			if (new_messages_count > 0) {
				 // message_item.style.background = "url(/images/vspomni_design_new/envelop_blink.gif) no-repeat 0 50%";
	             // message_item.style.padding = "0px 0px 0px 18px";
                 message_item.setAttribute('class', 'envelope');
                 message_item.className = 'envelope';
                 
	             document.getElementById("new_messages_count").innerHTML = ': <b>' + new_messages_count + '</b>';
			} else {
	             //message_item.style.background = "";
	             //message_item.style.padding = "0px 0px 0px 0px";
                 message_item.setAttribute('class', '');
                 message_item.className = '';
                 
	             document.getElementById("new_messages_count").innerHTML = '';
			}
		}
	}
}

function filterkey(evt, filter) {
	if (!evt)
		evt = event;
	var key = 0; 
	if (evt.charCode)
		key = evt.charCode;
	else if (evt.keyCode)
		key = evt.keyCode;
	else if (evt.which)
		key = evt.which;
	// проверка на спец символы: 33-34 - page up, page down; 35-36 - end, home; 37-40 - клавиши управления курсором
	if ((key < 32) || ((key>=33) && key<=40))
		return true;
	else {
		keychar = String.fromCharCode(key);
		return filter.test(keychar);
	}
}

function breadcrumbsChange(_str, _lvl) {
    if (_str && _lvl && (typeof (_lvl) == 'number')) {
        var brBlock = document.getElementById('breadcrumbs');
        var brArr = brBlock.getElementsByTagName('a');
        if (brArr[_lvl-1]) {brArr[_lvl-1].innerHTML = _str;}
        if (brArr.length == _lvl-1) {brBlock.getElementsByTagName('span')[0].innerHTML = _str;}
    }
}

/* Показ скрытого блока при показе списком --------------------------------------------------------------*/	
function openpoint (what) {
	if (what.parentNode.nextSibling.style.display !='block') {
		what.parentNode.nextSibling.style.display = 'block';
		what.title = "Свернуть";
		what.src = "/images/vspomni_design_new/openlink.gif";
		what.alt = "-";
	} else {
		what.parentNode.nextSibling.style.display = 'none';
		what.title = "Развернуть";
		what.src = "/images/vspomni_design_new/closelink.gif";
		what.alt = "+";
	}
}
/*/Показ скрытого блока  --------------------------------------------------------------*/
function searchGroup(param)
{
	param['page'] = 0;
	if (WorkUrl.currentHash().indexOf('/groups/search/')!=0)
	{
		var str = '';
		for(var key in param)
		{
			str += 'GroupSearchResultBlock' + '[' + key + ']=' + encodeURIComponent(param[key]) + '&';
		}
		str = str.slice(0, str.length-1);
		window.location.href = '/groups/search/?' + str;
	}
	else
	{
		sendRequest('GroupSearchResultBlock', param, '/groups/search/', true, true);
	}
}

function sendMessageToUser(userId, mjid)
{
    if(userId) {
		var new_window = window.open('/messenger/' + userId + '/messages/','messagewindow' + userId, 'menubar=0,resizable=0,scrollbars=yes,width=865,height=685');
		new_window.focus();
	}
}
function sendRequest(block_name, params, url, loading, changeUrl)
{
    param = params;
    params = new Array();
    if (loading) Loading.showGlobal();
    url = url || WorkUrl.currentHash();
    params = {params: "undefined" != param ? pf.hash.serialize(param) : "", ajax: 1, block_name: block_name};
	if ((block_name == 'PhotoItemBlock') || (block_name == 'PhotoImportItemBlock')) {
		if (window._rsSlideShowEvent) _rsSlideShowEvent(VSPWR.hostname + url);
	} else if (((block_name != 'MessagesView') && (block_name != 'MessagesBlock') && (block_name != 'MessengerView')) || ((block_name == 'MessengerView') && (params.params != ''))) {
		if (window._rsSectionEvent) _rsSectionEvent(VSPWR.hostname + url);
	}
    pf.srvapi.pinvoke(url, params, parseResponse, parseResponse);

    if (($('calenderTable')) && ($('calenderTable').style.display == 'block'))
        closeCalender();

    return false;
}

function parseResponse(transport, json)
{
    if (Loading.hideGlobal) Loading.hideGlobal();
    if(200 == transport.status)
    {     
        transport = transport.responseText;
        eval('response='+transport);
        if(response.div_id && response.div_content)
        {
            $(response.div_id).innerHTML = response.div_content;
        }
        if(response.js_code)
        {
            try{eval(response.js_code);} 
            catch(err) 
            {
                //alert("Inline script error " + err.name + ": " + err.message + "|"+err.line);
            }
        }
    }
    else
    {        
        if (window.timer_is_waiting_for_response == true)
        {
            checkNewMessage(window.timer_id);
        }
    }
}
