var _FFrv;
var _isFF=false;
var _isIE=false;
var _isOpera=false;
var _isKHTML=false;
var _isMacOS=false;
var old_target = null;
var previewHeight;
var previewWidth;
var verticalOffset = 5;
var horizontalOffset = 3;
var top = 0;
var left = 30;
var slideSpeed = 20;
var currentImage;
var currentMLS;
var scrolling = false;
var timeout;
var ajax_controller = '/utils/ajax_lib_articles_controller';

function init() {
    if(navigator.userAgent.indexOf('Macintosh')!= -1)_isMacOS=true;
    if((navigator.userAgent.indexOf('Safari')!= -1)||(navigator.userAgent.indexOf('Konqueror')!= -1))
    _isKHTML=true;
    else if(navigator.userAgent.indexOf('Opera')!= -1){
    _isOpera=true;
    _OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Opera')+6,3));
    }
    else if(navigator.appName.indexOf("Microsoft")!=-1)
    _isIE=true;
    else{
    _isFF=true;
    _FFrv=parseFloat(navigator.userAgent.split("rv:")[1])
    }
}

function isValidEmail(str) {
    return str.match(new RegExp("^([a-zA-Z0-9_]|\\-|\\.)+@(([a-zA-Z0-9_]|\\-)+\\.)+[a-zA-Z]{2,4}$"));
}

function checkFields() {
    var i, a=checkFields.arguments;
    for(i=0;i<a.length;i++) {
        obj = $(a[i]);
        if(!obj.value.length) {
            alert("Пустое поле (Empty field) "+obj.name);
            return false;
        }
        if (obj.name.match(/^EMail(.*?)/)) {
            if (!isValidEmail(obj.value)) {
                alert("Неверный формат email адреса (Wrong email format)");
                return false;
            }
        }
    }
    return true;
}

function ensureNumeric(e) {
  var k = (typeof e.charCode == "undefined" ? e.keyCode : e.charCode);
  if (k < 32 || e.ctrlKey || e.altKey || e.metaKey)
    return true;
  return (k >= 48 && k <= 57);
}

function ensureAlphaDigit(e) {
  var k = (typeof e.charCode == "undefined" ? e.keyCode : e.charCode);
  if (k < 32 || e.ctrlKey || e.altKey || e.metaKey)
    return true;
  return ((k >= 48 && k <= 57) || (k >= 65 && k <= 90) || (k >= 97 && k <= 122));
}


function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function toBoolean(inputString){
    if(typeof(inputString)=="string")
        inputString=inputString.toLowerCase();
    switch(inputString){
        case "1":
        case "true":
        case "yes":
        case "y":
        case "on":
        case 1:
        case true:
        return true;
        break;
    default: return false;
    }
}

// Sets cookie values. Expiration date is optional//
function setCookie(name, value, expire) {
  document.cookie = name + "=" + escape(value) + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()));
}

function getCookie(nm) {
  if (document.cookie.length > 0) {
    var re1 = /\s*;\s*/;
    var cooks = document.cookie.split(re1);
    var re2 = /\s*=\s*/;
    for ( i=0; i<cooks.length; i++ ) {
            var parts = cooks[i].split(re2,2);
            if (nm == parts[0]) {
                return unescape(parts[1]);
            }
    }
  }
  return "";
}

function deleteCookie(Name)
{
  expireDate = new Date;
  expireDate.setDate(expireDate.getDate()-1);
  document.cookie = Name + "=; expires=" + expireDate.toGMTString();
}

function ieTrueBody(){
    return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
}


function switchSubMenu(id) {
	var div = $('div_'+id);
	if (div) {
		if (div.style.display=='') {
			div.style.display = 'none';
		} else {
			div.style.display = '';
		}
	}
	return false;
}
function turnOnOff(elem) {
	var div = $(elem);
	if (div) {
		if (div.style.display=='') {
			div.style.display = 'none';
		} else {
			div.style.display = '';
		}
	}
	return false;
}

var ltheme = 0, lpart = 0, ltype = 0;

function searchTheme(id) {
	if (id) {
		ltheme = parseInt(id); lpart = 0; ltype = 0;
		setCookie('ltheme',ltheme);
		deleteCookie('lpart');
		deleteCookie('ltype');
		getAjaxArticles();
	}
}

function searchPart(def,id) {
	if (id) {
		if (!ltheme)
			ltheme = parseInt(def);
		lpart = id; ltype = 0;
		setCookie('lpart',lpart);
		deleteCookie('ltype');
		getAjaxArticles();
	}
}

function searchType(def1,def2,id) {
	if (id) {
		if (!ltheme)
			ltheme = parseInt(def1);
		if (!lpart)
			lpart = parseInt(def2);
		ltype = id;
		setCookie('ltype',ltype);
		getAjaxArticles();
	}
}

function getAjaxArticles() {
	$('lib-content').innerHTML = '<img src="img/progress.gif" width="16" height="16">';
	new Ajax.Request(ajax_controller, {
		method:'post',
		parameters: 'ltheme='+ltheme+'&lpart='+lpart+'&ltype='+ltype,
		onSuccess: function(transport){
			var response = transport.responseText || '';
			$('lib-content').innerHTML = response;
		},
		onFailure: function(){ /*alert('Something went wrong...')*/ }
	});
}

function saveSearchData(data, func) {
        new Ajax.Request('/utils/ajax_search_form_controller',
        {
            method:'post',
            parameters: 'action=save'+data,
            onSuccess: function(transport){
                var response = transport.responseText || '';
                if (func && typeof(func)=='function')
                    func();
            },
            onFailure: function(){ /*alert('Something went wrong...')*/ }
        });
}

function initSearch() {
        new Ajax.Request('/utils/ajax_search_form_controller',
        {
            method:'post',
            parameters: 'action=getServices',
            onSuccess: function(transport){
                var response = transport.responseText || '';
                $('searchTable').innerHTML = response;
            },
            onFailure: function(){ /*alert('Something went wrong...')*/ }
        });
}

function getAjaxObject(param) {
	$(param.elem).innerHTML = '<img src="img/progress.gif" width="16" height="16">';
        new Ajax.Request('/utils/ajax_search_form_controller',
        {
            method:'post',
            parameters: 'action='+param.action+'&param='+param.value,
            onSuccess: function(transport){
                var response = transport.responseText || '';
                $(param.elem).innerHTML = response;
            },
            onFailure: function(){
		$(param.elem).innerHTML = '';
            }
        });
}

function getOrg(param) {
	if ($(param.elem).innerHTML.length && $(param.elem).style.display=='') {
		$(param.elem).style.display='none';
		return;
	} else if ($(param.elem).innerHTML.length && $(param.elem).style.display=='none') {
		$(param.elem).style.display='';
		return;
	}
	$(param.elem).innerHTML = '<img src="img/progress.gif" width="16" height="16">';
        new Ajax.Request('/utils/ajax_search_details_controller',
        {
            method:'post',
            parameters: '&id='+param.value,
            onSuccess: function(transport){
                var response = transport.responseText || '';
                $(param.elem).innerHTML = response;
            },
            onFailure: function(){
		$(param.elem).innerHTML = '';
            }
        });
}

function printOrg(id) {
    var text = $('orgID_'+id).innerHTML;
    var a = window.open('','printing','scrollbars=yes,width=700');
    a.document.open("text/html");
    a.document.write('<html><head><link href="db.css" rel="stylesheet" type="text/css" /></head><body>');
    a.document.write(text.replace(/none;/g,'block;'));
    a.document.write('</body></html>');
    a.document.close();
    a.print();
    a.close();
}

function showText() {
	getAjaxObject({action:'getText', elem:'searchTable'});
}

function showServices() {
	getAjaxObject({action:'getServices', elem:'searchTable'});
}

function showRegions() {
	getAjaxObject({action:'getRegions', elem:'searchTable'});
}

function showSpecialists() {
	getAjaxObject({action:'getSpecialists', elem:'searchTable'});
}

function startSearch() {
        $('searchTable').innerHTML = '<img src="img/progress.gif" width="16" height="16">';
        new Ajax.Request('/utils/ajax_search_controller',
        {
            method:'post',
            parameters: 'action=search',
            onSuccess: function(transport){
                var response = transport.responseText || '';
                $('searchTable').innerHTML = response;
            },
            onFailure: function(){
                $('searchTable').innerHTML = '';
            }
        });
}

function startTextSearch() {
        $('searchTable').innerHTML = '<img src="img/progress.gif" width="16" height="16">';
        new Ajax.Request('/utils/ajax_search_controller',
        {
            method:'post',
            parameters: 'action=textSearch'+args,
            onSuccess: function(transport){
                var response = transport.responseText || '';
                $('searchTable').innerHTML = response;
            },
            onFailure: function(){
                $('searchTable').innerHTML = '';
            }
        });
}

function saveFormData(func) {
        args = '';
        for (i=0; i<$('searchForm').elements.length; i++) {
            var obj = $('searchForm').elements[i];
            switch (obj.type) {
                case 'button':
                case 'submit':
                    break;
                case 'checkbox':
                    args += "&"+obj.name+'='+obj.checked;
                    break;
                case 'select-multiple':
                    var sel = new Array();
                    for (var j=0; j < obj.options.length; j++) {
                        if (obj.options[j].selected)
                            sel.push(obj.options[j].value);
                    }
                    for (var j=0; j<sel.length; j++)
                        args += "&"+escape(obj.name)+'[]='+escape(sel[j]);
                    break;
                default:
                    args += "&"+obj.id+'='+obj.value;
                break;
            }
        }
        saveSearchData(args, func);
}

