﻿
var ns4 = (document.layers) ? true : false;  // browser sniffer
var ie4 = (document.all) ? true : false;
var op7 = (window.opera) ? true : false;
var ns6 = (document.getElementById&&!document.all) ? true : false;

function Trim(s) 
{
  while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
  {
    s = s.substring(1,s.length);
  }
  while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
  {
    s = s.substring(0,s.length-1);
  }
  return s;
}

function setHomePage(obj,URL){
    try
    {
        if (ie4&&!op7&&obj) {
            if (!URL)
            {
                URL='http://' + window.location.host;
            }
	        obj.style.behavior='url(#default#homepage)';
	        obj.setHomePage(URL);
        }
    } 
    catch (e)
    {
        alert(e.message)
    }
    if (ie4&&!op7&&obj) {
      obj.style.behavior='';
    }
    return false;
}
function AddToFavorites(URL,Title){
    try
    {
        if (!URL)
        {
            URL='http://' + document.location.host;
        }
        if (!Title)
        {
            Title=document.title;
        }
        if (ie4&&!op7) {
	        window.external.AddFavorite(URL,Title);
        } else if (op7) {
            document.body.innerHTML += '<'+'a href="'+URL+'" title="'+Title+'" rel="sidebar" style="display: none;" id="addbookmark">click<'+'/a>';
            document.getElementById('addbookmark').click();
            document.getElementById('addbookmark').outerHTML = '';
        }
    }
    catch (e)
    {
        alert(e.message)
    }
    return false;
}


function setCookie(name, value, expires, path, domain, secure)
{
    var d=new Date();
    if (!expires) expires=new Date(d.getFullYear(), d.getMonth() + 6, d.getDate())
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}
function setListCookie(name, value, expires, path, domain, secure)
{
    var NewValue=getCookie(name)
    if (!NewValue) NewValue=''
    var NewValueC= ',' + NewValue + ','
    if (NewValueC.indexOf(',' + value + ',')>-1) return false;
    if (NewValue == '') 
    {
        NewValue=value
    } else {
        NewValue +=',' + value
    }
    setCookie(name, NewValue, expires, path, domain, secure)
    return true;
}

function getCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain)
{
    if (getCookie(name))
    {
        document.cookie = name + "=" + 
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}


function SearchResultsMarker(QuerySearchTXT)
{
    this.QuerySearchTXT=QuerySearchTXT;
    this.QuerySearchTXTWords=new Array();
    this.QuerySearchTXTWordsRefEx=''
    this.init();
}

SearchResultsMarker.prototype.init = function ()
{
    var QuerySearchTXTWord=''
    for (var i=0;i<this.QuerySearchTXT.length;i++)
    {
	    var ch=this.QuerySearchTXT.substr(i,1);
	    if (ch=='"')
	    {
            this.AddQuerySearchTXTWord(QuerySearchTXTWord);
            var mi=this.QuerySearchTXT.indexOf('"',i+1)
            if (mi>0)
            {
                QuerySearchTXTWord=this.QuerySearchTXT.substring(i +1 ,mi);
                i=mi
            } else {
                QuerySearchTXTWord=this.QuerySearchTXT.substring(i +1);
                i=this.QuerySearchTXT.length
            }
            this.AddQuerySearchTXTWord(QuerySearchTXTWord);
            QuerySearchTXTWord='';	
	    } else if (ch==' ')
	    {
            this.AddQuerySearchTXTWord(QuerySearchTXTWord);
            QuerySearchTXTWord='';
	    } else {
	        QuerySearchTXTWord += ch;
	    }
    }
    this.AddQuerySearchTXTWord(QuerySearchTXTWord);
    this.QuerySearchTXTWordsRefEx=Trim(this.QuerySearchTXTWords.join('|'))
}

SearchResultsMarker.prototype.AddQuerySearchTXTWord = function (W)
{
    W=Trim(W)
    if (W=='') return
    
    var regEx = new RegExp("  ","g");
    do {
        W=W.replace(regEx,' ');
    } while (W.indexOf('  ')>-1)
    W=Trim(W)
    if (W=='') return
    if (W.substr(0,1)=='-') return

    var regEx = new RegExp("[^a-z0-9ąčęėįšųūžёйцукенгшщзхъфывапролджэячсмитьбю ']","ig"); 
    W=W.replace(regEx,'');
    if (W=='') return

    this.QuerySearchTXTWords[this.QuerySearchTXTWords.length]=W;

}

SearchResultsMarker.prototype.markHTMLObj = function(HTMLObj)
{
	if (!HTMLObj) return

	if (this.QuerySearchTXTWordsRefEx=='') return
	var q=this.QuerySearchTXTWordsRefEx

    WalkTree(HTMLObj, q);


    function WalkTree( elem, word) {
	    if ( !elem) return;
        var node2
        var newStr
	    for ( var node = elem.firstChild; node; ) {
		    if ( node.nodeType == 1 && node.firstChild) {
			    WalkTree( node, word);
			    node = node.nextSibling;
		    }
		    else if ( node.nodeType == 3 && node.nodeValue && node.nodeValue!='') {
		        node2 = node.nextSibling
		        newStr =  replaceInText(word,node.nodeValue)
                if (newStr != node.nodeValue)
                {
                    node.parentNode.innerHTML=newStr
                } 		        
		        node = node2
		    }
		    else {
		        node = node.nextSibling;
		    }
	    }
    }

    function replaceInText(strSearch,strInput)
    {
	    var strReturn='';
        //alert("(?![^<]+>)" + strSearch + "(?![^<]+>)")
        var regEx = new RegExp("(?![^<]+>)" + strSearch + "(?![^<]+>)","ig"); 
        var r=0
        var L=''
        var founded=0  
        while (r>-1) {
            r = strInput.search(regEx);
            if (r>-1){
                L = strInput.match(regEx)[0];
                strReturn +=strInput.substr(0,r) + '<font class="SearchResultMark">' +  L + '</font>'
                strInput=strInput.substr(r + L.length)
            }
        }
        strReturn +=strInput
        return strReturn
    }
}

var Request= _RequestQueryString()
var RequestSearchTXT=''
if (Request.SearchTXT) RequestSearchTXT=Request.SearchTXT

var HTMLSearchResultsMarker=new SearchResultsMarker(RequestSearchTXT)

function _RequestQueryString()
{
    var R=ParseQS(window.location.search);
    return R;
}
    function ParseQS(QS)
    {
        if (QS.substr(0,1)=='?')
        {
            QS=QS.substr(1)
        }    
        var QSA=QS.split('&')
        var QueryString=new Object()
        for (var i=0;i<QSA.length;i++)
        {
            var R_A=QSA[i].split('=')
            var R_N=R_A[0]
            var R_V=''
            if (R_A.length==2)
            {
                R_V=R_A[1]
            }
            if (R_N!='')
            {
                try
                {
                    R_V=unescape(R_V);
                    R_V=R_V.replace(/%2B/g, '\+').replace(/%22/g,'\"').replace(/%27/g, '\'');
                    R_V=R_V.replace(/\"/g,'\\\"')
                    eval('QueryString.' + R_N + '="' + R_V + '"')
                }
                catch(e)
                {
                }
            }
        }
        return QueryString
    }

function ADSMarker()
{
    this.Words=new Array();
}

ADSMarker.prototype.AddWord = function(Word,Link)
{
    if (!Word) Word=''
    if (!Link) Link=''
    var o=new Object()
    o.Word=Word;
    o.Link=Link;
    this.Words[this.Words.length]=o;
}

ADSMarker.prototype.markHTMLObj = function(HTMLObj)
{
	if (!HTMLObj) return
	if (this.Words.length==0) return
	for (var i=0;i<this.Words.length;i++)
	{
	    if (this.Words[i].Word!=''&&this.Words[i].Link!='') 
	    WalkTree(HTMLObj, this.Words[i].Word, this.Words[i].Link);
    }
    function WalkTree( elem, word, link) {
	    if ( !elem) return;

	    for ( var node = elem.firstChild; node; node = node.nextSibling) {
		    if ( node.nodeType == 1 && node.nodeName != 'A' && node.firstChild) {
			    WalkTree( node, word, link);
		    }
		    else if ( node.nodeType == 3 && node.nodeValue) {
		        words=new Array(word)
		        links=new Array(link)
		        node = MakeLink( node, words, links)
		    }
	    }
    }


function MakeLink( node, words, links) {
	if ( !node) return;

	var i, j, parts, wordIndex, nodeValue, tmpStr;
	var fragmentNode, tmpNode;
	var fragment = document.createDocumentFragment();
	fragment.appendChild( node.cloneNode( 0));

	for ( i = 0; i < words.length && i < links.length; i++) {
		for ( fragmentNode = fragment.firstChild; fragmentNode; fragmentNode = fragmentNode.nextSibling) {
			if ( fragmentNode.nodeType == 3 && fragmentNode.nodeValue) {
				nodeValue = fragmentNode.nodeValue;
				wordIndex = nodeValue.toLowerCase().indexOf( words[ i].toLowerCase());
				if ( wordIndex >= 0) {
					tmpStr = nodeValue.substring( 0, wordIndex);
					fragment.insertBefore( document.createTextNode( tmpStr), fragmentNode);

					tmpStr = nodeValue.substring( wordIndex, wordIndex + words[ i].length);
					tmpNode = document.createElement('a');
					tmpNode.setAttribute( 'href', links[ i]);
					tmpNode.setAttribute( 'target', '_blank');
					tmpNode.appendChild( document.createTextNode( tmpStr));
					fragment.insertBefore( tmpNode, fragmentNode);

					tmpStr = nodeValue.substring( wordIndex + words[ i].length, nodeValue.length);
					fragment.insertBefore( document.createTextNode( tmpStr),  fragmentNode);
					fragment.removeChild( fragmentNode);
					fragmentNode = tmpNode;
				}
			}
		}
	}

	if ( fragment.childNodes.length > 1) {
		tmpNode = node.parentNode.insertBefore( fragment, node);
		node.parentNode.removeChild( node);
		return tmpNode;
	}
	else {
		return node;
	}
}


}

var HTMLADSMarker=new ADSMarker()
//HTMLADSMarker.AddWord(string word,string link);


function checkForInt(v)
{
    return parseInt(v)>0
}