var myInformerAjax;
var newFactTips = '';
var BombTimer;
var BombUrl;
var BombLimit = 10000;
var currentUri;
var closeInterval;
var contextSearchForm;

function trim(str) {
    while(str.charAt(0) == ' ') {
        str = str.substring(1, str.length);
    }
    while(str.charAt(str.length-1) == ' ') {
        str = str.substring(0, str.length-1);
    }
    return str;
}

function ezStart() {
/*
		if(document.location.hash && document.location.hash.indexOf('url=') > -1) {
		    document.getElementById('main').style.display = 'none';
				str = new String(document.location.hash);
				str = str.replace('#','');
				str = str.replace('url=','');				
				document.location = str;
		}
		setInterval("ezChInformer()",10000);
		setInterval("ezTestUri()",500);
    document.changePage = function(url) {ezChangePage(url);}
    ezContextSearch();
*/
		setInterval("ezChInformer()",10000);
		setInterval("ezTestUri()",500);
    document.changePage = function(url) {ezChangePage(url);}
    if(document.getElementById('logoutLink')) {
        document.getElementById('logoutLink').onclick = function() {
            var str = new String(document.location.href);
            if(str.indexOf('logout=yes') > -1) {
                return false;
            }
            document.location = str.replace('#uri=','')+(str.indexOf('?') > -1 ? '&':'?')+'logout=yes';
            return false;
        }
    }
    ezContextSearch();
}

function ezChInformer() {
    if (document.getElementById('infoframe1') && (typeof(document.getElementById('infoframe1')) != 'undefined')) {
	if (document.getElementById('infoframe1').style.display == 'none') {
		    document.getElementById('infoframe1').onload = function() {
    		    document.getElementById('infoframe2').style.display = 'none';	
    		    document.getElementById('infoframe1').style.display = 'block';	
				}
		    document.getElementById('infoframe2').onload = function() {;}
				document.getElementById('infoframe1').src = document.getElementById('infoframe1').src;
		}
		else {
		    document.getElementById('infoframe2').onload = function() {
    		    document.getElementById('infoframe1').style.display = 'none';	
    		    document.getElementById('infoframe2').style.display = 'block';	
				}
		    document.getElementById('infoframe1').onload = function() {;}
		    document.getElementById('infoframe2').src = document.getElementById('infoframe1').src;
		}
    }
/*
 		myInformerAjax = new Ajax('/frame.php', {method: 'get', encoding: 'windows-1251', onComplete: 
		function(txt) {
		    if(el = document.getElementById('infoholder')) {
				    el.innerHTML = txt;
				}
		}
		}).request();
*/
}

////////////////////////////////////////////////////////////////////////////////
// Подключаем контекстный поиск - content_search.js
////////////////////////////////////////////////////////////////////////////////
function ezContextSearch() {
    // Если объект определен
    if(typeof(contextSearch) == 'function') {
        // Создаем экземпляр класса
        contextSearchForm = new contextSearch();
        // Добавляем объекты, которые будут участвовать во всем этом
        if(document.getElementById('contentholder')) {
            contextSearchForm.add('contentholder');
        }
        if(document.getElementById('toplist')) {
            contextSearchForm.add('toplist');
        }
        if(document.getElementById('m-right')) {
            contextSearchForm.add('m-right');
        }
/*
        if(document.getElementById('main')) {
            contextSearchForm.add('main');
        }
*/
    }
}

function ezEmailShow() {
		Emailbox.init();
		elt = document.getElementById('lbImage');
    el = document.createElement('DIV');
    elt.appendChild(el);
		el.id = 'contentholder';
		el.innerHTML = '<div style="background: url(/images/slimbox/loading.gif) no-repeat center center;height:165px;">&nbsp;</div>'
		Emailbox.show();
		Emailbox.preload.width = 400;
		Emailbox.preload.height = 320;
		Emailbox.nextEffect();
 		document.getElementById('lbCenter').style.display = 'block';
		document.getElementById('lbDivLink').style.display = 'none';
		myInformerAjax = new Ajax('/sendto?ajax=1', {encoding: 'windows-1251', onComplete:
		function(txt, xml) {
        var els = xml.getElementsByTagName('contentholder')[0];
    		if(!els || !els.firstChild || !els.firstChild.nodeValue) {return false;}
    		el.innerHTML = '';
    		el.innerHTML = els.firstChild.nodeValue;
		}
		}).request();
}

function ezEmailSend(query) {
		elt = document.getElementById('lbDivLink').style.display = 'none';
		elt = document.getElementById('lbImage');
    elt.appendChild(el);
		elt.innerHTML = '<div style="background: url(/images/slimbox/loading.gif) no-repeat center center;height:165px;">&nbsp;</div>'
 		myInformerAjax = new Ajax('/sendto.php?ajax=1', {method: 'post', encoding: 'windows-1251', postBody: query, onComplete: 
		function(txt, xml) {
        if(xml) {
    				var els = xml.getElementsByTagName('contentholder')[0];
        		if(!els || !els.firstChild || !els.firstChild.nodeValue) {return false;}
        		elt.innerHTML = '';
            elt.innerHTML = els.firstChild.nodeValue;
            if(document.getElementById('sended_ok')) {
                if(document.location.href.indexOf('/ru/')>-1) {
                    elt.innerHTML += '<br /><br /><center>Окно будет закрыто через <span id="sendCloserCounter">15</span> секунд<br><a href="#" onclick="document.getElementById(\'lbOverlay\').onclick();">закрыть сейчас</a></center>';
                }
                else {
                    elt.innerHTML += '<br /><br /><center>This window will be closed after <span id="sendCloserCounter">15</span> seconds<br><a href="#" onclick="document.getElementById(\'lbOverlay\').onclick();">close it now</a></center>';
                }
                closeInterval = setInterval('ezEmailCloseTimer()',1000);
            }
				}
		}
		}).request();
}

function ezEmailCloseTimer() {
//    alert(document.getElementById("sendCloserCounter").innetHTML);
//    alert(document.getElementById("sendCloserCounter").innetHTML-0)
    cnt = document.getElementById("sendCloserCounter").innerHTML;
    if(((cnt-0) > 0) && document.getElementById("lbOverlay")) {
        document.getElementById("sendCloserCounter").innerHTML = cnt-1;
    }
    else {
        clearInterval(closeInterval);
        document.getElementById('lbOverlay').onclick();
    }
}

function ezTestUri() {
    if((currentUri == undefined) || (currentUri == document.location.hash)) {
        return true;
    }
    if((currentUri != undefined) && (currentUri != document.location.hash) && (document.location.hash.indexOf('url=')>-1)) {
        ezChangePage(document.location.hash.replace('#url=',''));
        return false;
    }
    if(document.location.hash == '') {
        ezChangePage(document.location.pathname);
        return false;   
    }
}

function ezShowPage(xml,url) {    
		if(xml == null) {document.location = url; return false;}

    var els = xml.getElementsByTagName('title')[0];
		if(!els || !els.firstChild || !els.firstChild.nodeValue) {document.location = url; return false;}
		var str = new String(els.firstChild.nodeValue);
		re = new RegExp("\s*([a-zA-Zа-яА-Я0-9 &\-\.,\\/|]+)\s*", "i");
		res =  str.match(re);
    a = trim(RegExp.$1);
    if(a) {
		    document.title = a;
    }
    else {
		    document.title = str;
    }

    var els = xml.getElementsByTagName('fact_tips')[0];
		if(!els || !els.firstChild || !els.firstChild.nodeValue) {document.location = url; return false;}
		newFactTips = els.firstChild.nodeValue;
		setTimeout("document.getElementById('toplist').innerHTML = newFactTips;",2000);

    var els = xml.getElementsByTagName('top_menu')[0];
		if(!els || !els.firstChild || !els.firstChild.nodeValue) {document.location = url; return false;}
		document.getElementById('topmenu').innerHTML = els.firstChild.nodeValue;

    var els = xml.getElementsByTagName('titlepic')[0];
		if(!els || !els.firstChild || !els.firstChild.nodeValue) {document.location = url; return false;}
		document.getElementById('titlepic').innerHTML = els.firstChild.nodeValue;

    var els = xml.getElementsByTagName('left_menu')[0];
		if(!els || !els.firstChild || !els.firstChild.nodeValue) {document.location = url; return false;}
		if(!document.getElementById('left_menu')) {document.location = url; return false;}		
		document.getElementById('left_menu').innerHTML = els.firstChild.nodeValue;

    var els = xml.getElementsByTagName('secondary_left_banners')[0];
    if(document.getElementById('secondary_left_banners')) {
		    if(els != undefined && els.firstChild.nodeValue) {
      	    document.getElementById('secondary_left_banners').innerHTML = els.firstChild.nodeValue;
				}
		}
    var els = xml.getElementsByTagName('pdf')[0];
    if(document.getElementById('dmPdfLink')) {
        document.getElementById('dmPdfLink').style.display = 'none';
		    if(els != undefined && els.firstChild.nodeValue) {
      	    document.getElementById('dmPdfLink').innerHTML = els.firstChild.nodeValue;
            document.getElementById('dmPdfLink').style.display = 'block';
				}
		}


		if((document.getElementById('left_menu').innerHTML.length < 50) && document.getElementById('secondary_left_banners').innerHTML.length < 30) {
		    if(document.getElementById('hr')) {
		        document.getElementById('hr').style.display = 'none';
				}
		    if(document.getElementById('helper')) {
		        document.getElementById('helper').style.display = 'none';
			  }
		}
		else {
		    if(document.getElementById('hr')) {
		        document.getElementById('hr').style.display = 'block';
				}
		    if(document.getElementById('helper')) {
		        document.getElementById('helper').style.display = 'block';
			  }
		}

    var els = xml.getElementsByTagName('secondary_bottom_banner')[0];
		if(!els || !els.firstChild || !els.firstChild.nodeValue) {document.location = url; return false;}
    document.getElementById('bot').innerHTML = els.firstChild.nodeValue;

		var els = xml.getElementsByTagName('contentholder')[0];
		if(!els || !els.firstChild || !els.firstChild.nodeValue) {document.location = url; return false;}
		document.getElementById('contentholder').innerHTML = els.firstChild.nodeValue;

		var els = xml.getElementsByTagName('layers')[0];
		if(!els || !els.firstChild || !els.firstChild.nodeValue) {
    }
    else {
        if(document.getElementById('layers')) {
            document.getElementById('layers').innerHTML = els.firstChild.nodeValue;
        }
    }

    var els = xml.getElementsByTagName('materials')[0];
		if(els != undefined) {
    		if(!document.getElementById('m-right')) {
						document.getElementById('m-cent').style.width = '431px';
				    no = document.createElement('div');
						no.id = 'm-right';
						document.getElementById('wrapper').appendChild(no);
				}
 		    document.getElementById('m-right').style.display = 'block';
 		    document.getElementById('m-cent').className = '';
 		    document.getElementById('m-right').innerHTML = els.firstChild.nodeValue;
		}
		else {
		    if(document.getElementById('m-right')) {
    				document.getElementById('m-right').style.display = 'none';			 		 
    		    document.getElementById('m-cent').className = 'big';
     		    document.getElementById('m-right').innerHTML = '';
				}
		}
		document.getElementById('midtopholder').style.display = 'block';
    if(document.getElementById('logoutLink')) {
    document.getElementById('logoutLink').onclick = function() {
            if(currentUri.indexOf('logout=yes') > -1) {
                return false;
            }
            document.location = currentUri.replace('#uri=','')+(currentUri.indexOf('?') > -1 ? '&':'?')+'logout=yes';
            return false;
        }
    }
		clearTimeout(BombTimer);
}

function ezShowHolders() {    
		var holder = '<div class="grayLoading"';
		if(document.getElementById('contentholder').offsetHeight > 200) {
		    holder += ' style="height: '+document.getElementById('contentholder').offsetHeight+'px"'; 
		}		
		holder += '>&nbsp;</div>';
		document.getElementById('contentholder').innerHTML = holder;
		document.getElementById('midtopholder').style.display = 'none';
}


function explode(str, separator) {
    var arr = new Array();

    if (str.indexOf(separator) != -1) {
        var pos;

        while ((pos = str.indexOf(separator)) != -1) {
            arr[arr.length] = str.slice(0, pos);
            str = str.slice(pos + 1, str.length);
        }

        arr[arr.length] = str;
    } else {
        arr[0] = str;
    }

    return arr;
}

function ezChangePage(url) {
    clearTimeout(BombTimer);
		BombUrl = url;
		BombTimer = setTimeout('document.location = BombUrl;', BombLimit);
		
		// Показываем вертушку
		ezShowHolders();

    // Если Логаут - релиректим
    if((url.indexOf('?logout=') > -1)) {
        var str = new String(url);
        str = str.replace('#','');
        str = str.replace('url=','');
        document.location = str;
        return false;
    }
    // Если относительный путь - дополняем до полного
    if((url.indexOf('./') == 0) && (currentUri != undefined)) {
        url =  url.replace('./',currentUri.substring(5,currentUri.indexOf('?')));
    }
		
    // Смотрим, на ту ли страницу мы переходим
		// Если есть GET-параметры
		if(document.location.search) {
    		// Обкусываем GET у нового пути
				if(url.indexOf('?')>-1) {
    		    testUrl = url.substr(0,url.indexOf('?'));
    		}
    		else {
    		    testUrl = url;
    		}
				// Если нужно, добавляем в конце нового пути слэш
    		if(testUrl.charAt(testUrl.length-1) == '/') {
    		    testUrl = testUrl.substr(0,testUrl.length-1);
    		}
				// Берем старый путь без GET и пририсовываем слэш
    		if(currentUri != undefined) {
            curUri = currentUri.replace('#','');
            curUri = curUri.replace('url=','');
            curUri = curUri.substring(0,curUri.indexOf('?'));
				}
				else {
				    curUri = document.location.pathname;
				}
    		if(curUri.charAt(curUri.length-1) == '/') {
    		    curUri = curUri.substr(0,curUri.length-1);
    		}
				// Если старый и новый пути (без GET) совпадают,
				// приписываем GET-параметры из прошлого запроса новому.
        // При этом из старого вырезаем имеющиеся в новом параметры. 
    		if(curUri == testUrl) {
            newUrl = new String(document.location.search);
            if(url.indexOf('?') != -1) {
                oldUrl = url.substring(url.indexOf('?')+1,url.length);
                newUrl = newUrl.replace('?','');
                newParams = explode(newUrl, '&');
                oldParams = explode(oldUrl, '&');
                for(i=0; i<newParams.length; i++) {
                    for(j=0; j<oldParams.length; j++) {
                        newParam = newParams[i].substring(0,newParams[i].indexOf('='));
                        oldParam = oldParams[j].substring(0,oldParams[j].indexOf('='));
                        if(newParam == oldParam) {
                            newUrl = newUrl.replace(newParams[i],'');
                        }
                    }
                }
            }
            if(newUrl) {
                if((url.indexOf('?') == url.length-1) || (url.indexOf('?') == url.length-1)) {
                    url = url.substring(0,url.length-1);
                }
                url += (url.indexOf('?') == -1 ? '?' : '&') + newUrl.replace('?','');
                if((url.indexOf('?') == url.length-1) || (url.indexOf('?') == url.length-1)) {
                    url = url.substring(0,url.length-1);
                }
                while(url.indexOf('&&') != -1) {
                    url = url.replace('&&','&');
                }
                while(url.indexOf('?&') != -1) {
                    url = url.replace('?&','?');
                }
            }
            
    		}
		}
		var myAjax = new Ajax(url, {encoding: 'UTF-8', evalScripts: true, method: 'get', onComplete: 
		function(txt, xml) {
				ezShowPage(xml,url);
		}
		}).request();
		document.location.hash='url='+url;
    currentUri = document.location.hash;
    if(document.getElementById('historyViewer') && navigator.appName.indexOf('Netscape') == -1 && url.indexOf('ajaxhistory') < 0) {
        histUrl = url + (url.indexOf('?') < 0 ? '?ajaxhistory=1' : '&ajaxhistory=1');
        document.getElementById('historyViewer').src = histUrl;
		}
    return false;
}


function refresh() {
    if(currentUri == undefined || currentUri == '') {
        currentUri = document.location.pathname;
/*
        alert(currentUri+' - 1');
        currentUri = currentUri.replace('#url=', '');
        alert(currentUri+' - 2');
*/
    }
    return ezChangePage(currentUri);
}