/**
 * @author Aleksei Sapunov
 */
//var entries_per_page = 114;
function hideSelects(visibility){
	selects = document.getElementsByTagName('select');
	for(i = 0; i < selects.length; i++) {
		selects[i].style.visibility = visibility;
	}
}
function prepareIE(height, overflow){
	bod = document.getElementsByTagName('body')[0];
	bod.style.height = height;
	bod.style.overflow = overflow;

	htm = document.getElementsByTagName('html')[0];
	htm.style.height = height;
	htm.style.overflow = overflow; 
}
function setScroll(x, y){
	window.scrollTo(x, y); 
}
function hideAll() {
	//$('createdContent').style.display = "none";
	Element.remove($('createdContent'));
	if (browser == "Internet Explorer"){
        setScroll(0,0);
        prepareIE("auto", "auto");
   		hideSelects("visible");
    }
	$('overlayS').style.display = "none";
	$('lightboxS').style.display = "none";
}

function IsIE8Browser() {
	var rv = -1;
	var ua = navigator.userAgent;
	var re = new RegExp("Trident\/([0-9]{1,}[\.0-9]{0,})");
	if (re.exec(ua) != null) {
		rv = parseFloat(RegExp.$1);
	}
	return (rv == 4);
}

function mouseOver(event, div, index) {
	xPos = findPosX(div);
	yPos = findPosY(div) - 1;
	if (IsIE8Browser()) {
		//xPos += 48;
		//yPos += 49;
	}
	var tooltip = $('tooltip');
	if (tooltip != null) {
		$('tooltip').remove();
	}
	tooltip = new Element('div', {
		'id': 'tooltip'
	});
	
	tooltip.className='linkStyle2';
	tooltip.setStyle({
        'left': xPos + 'px',
		'top': yPos + 'px',
		'display': 'block'
    });

	document.body.appendChild(tooltip);
	code = div.innerHTML
	new Insertion.Top(tooltip, code);
	tooltip.onmouseout = mouseOut;
}

function mouseOut(){
	$('tooltip').hide();
}

function findPosX(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        while (1) {
            curleft+=obj.offsetLeft;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.x) {
        curleft+=obj.x;
    }
    return curleft;
}
function findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (1) {
            curtop+=obj.offsetTop;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.y) {
        curtop+=obj.y;
    }
    return curtop;
}

function content (responseContent) {
   //items = $('lightboxS').getElementsBySelector('a');
   
   if (!responseContent) {
      items = Array;
   } else {
      items = responseContent.split("\n");
   }	
   return items;
}

Array.prototype.find2 = function(searchStr) {
  var returnArray = false;
  for (i=0; i<this.length; i++) {
    if (typeof(searchStr) == 'function') {
      if (searchStr.test(this[i])) {
        if (!returnArray) { returnArray = [] }
        returnArray.push(i);
      }
    } else {
      if (this[i]===searchStr) {
        if (!returnArray) { returnArray = [] }
        returnArray.push(i);
      }
    }
  }
  return returnArray;
}

var back_items = null;
var new_entries_per_page = null;

var initialized = false;

function twoColumns(content, page_num){
	$('lightboxS').style.display = "block";
    var row1 = 25;
    var row2 = 23;
    var row3 = 20;
    var row4 = 19;
    var preg2 = new RegExp ("<!--", "i");
    
    if (new_entries_per_page) {
    	entries_per_page = new_entries_per_page;
    } else {
    	entries_per_page = row1 + row2 + row3 + row4;
    }
    
    var heightOfRow = 20;
    var sourceDiv = $('lightboxS');
    var items = null;
    
    if ($('createdContent')) {
        $('createdContent').hide();
    }

    if (back_items) {        	
        items = back_items;
    }
    else {
      items = content;
      back_items = items;
    }

    // SOLOM

    var locationFile = location.href.substring(location.href.lastIndexOf('/') + 1, location.href.length);
    var index = 0;
    var preg = new RegExp ("(?:HREF\=\""+locationFile+"|HREF\="+locationFile+")",i);
	    //alert(preg.toString());
    if (!page_num) {

	    if (locationFile != '') {
		    for (var i = 0; i < items.length; i++) {
		        if (preg.test(items[i]) !== false) {
		        	if (browser == "Internet Explorer"){
		        		items[i] = items[i].replace(/<a/i, "<a id=\"selected\" ");
	        		} else {
	        			items[i] = '<span id="selected">' + items[i] + '</span>';
	        		}
		            var index = i;
		            page = Math.ceil((index/entries_per_page));
		            //offset = i - 45;
		            page_num = page; 
		        }
		    }
	    }
	    if (page_num == 0 || !page_num) page_num = 1;  
       
    }
	if (!initialized) {
		for (var i = 0; i < items.length; i++) {
			items[i] = '<div class="linkStyle" onmouseover="mouseOver(event, this, ' + i + ');">' + items[i] + '</div>';
		}
		initialized = true;
	}

    var limit;
    var total_entries = items.length;
    var pages = Math.ceil((total_entries / entries_per_page));
    var offset = (entries_per_page * (page_num - 1));

    if (page_num == 1) {
        offset = 0;
    }
    
    var downarrow = true;
    slipCount = (Math.round((height - 100) / heightOfRow) - 1);
    var slip = 0;
    if (index > slipCount) {
        slip = index - slipCount;
        slipCount2 = Math.round((height - 100 - 100) / heightOfRow) - 1;
        if ((items.length - slipCount2) > slip) {
            slip = items.length - slipCount * 2 - slipCount2 * 2;
            downarrow = false;
        }
    }

    var pages_before = (page_num - 1);
    var entries_before = (pages_before * entries_per_page);
    
    var rest_entries;
    
    rest_entries = (total_entries - entries_before);
    
    if (rest_entries > entries_per_page) {
        limit = (entries_per_page + offset);
    }
    else {
        limit = (rest_entries + offset);
    }
    
    var navigator = createNavigator(total_entries, page_num, 'up');
    var navigator2 = createNavigator(total_entries, page_num, 'down');

    items = items.slice(offset, limit);
    // SOLOM END
    
    //var height = getViewportHeight() - 100;
	var height = 620;
	var height2 = 616;
	var columnH1 = 600;
	var columnH2 = 480;
	if (browser == "Internet Explorer"){
		height = 600;
		height2 = 596;
		columnH1 = 580;
		columnH2 = 460;
	}
    var polheight = height / 2;
    //var width = getViewportWidth() - 100;
    var width = 703;
    var polwidth = width / 2;
    
    
    if (page_num == 1) {
        rowA = row1;
    }
    else {
        rowA = row2;
    }
    
    if (page_num == pages) {
        rowB = row3;
    }
    else {
        rowB = row4;
    }
    new_entries_per_page = rowA + row2 + row3 + rowB;
    
    var count1 = slip + rowA;
    var count2 = count1 + row1;
    var count3 = count2 + row3;
    var count4 = count3 + rowB;

    var div = new Element('div', {
        'id': 'createdContent',
        'class': 'createdContent'
    });
    div.setStyle({
        'z-index:': '8000',
        'width': Math.round(width / 4) - 1 + 'px'
    });
    $('lightboxS').setStyle({
        'z-index:': '8000',
        'width': Math.round(width / 4) - 1 + 'px'
    });
    var column1 = new Element('div', {
        'id': 'column1'
    });
    column1.setStyle({
        'position': 'absolute',
        'left': '8px',
        'width': 162 + 'px',
        'height': columnH1 + 'px',
        'background': '#ffffcc',
        'margin': '8px 0 0 0px',
        'font-family': 'Georgia,Times New Roman,Times,serif',
		'font-size': '16px',
		'line-height': '1.6'
    });
    var column2 = new Element('div', {
        'id': 'column2'
    });
    column2.setStyle({
        'position': 'absolute',
        'left': '50%',
        'width': 167 + 'px',
        'height': columnH1 + 'px',
        'background': '#ffffcc',
        'margin': '10px 0 0 0px',
        'font-family': 'Georgia,Times New Roman,Times,serif',
		'font-size': '16px',
		'line-height': '1.6'
    });
    var column3 = new Element('div', {
        'id': 'column3'
    });
    column3.setStyle({
        'position': 'absolute',
        'top': '120px',
        'left': '0px',
        'width': 168 + 'px',
        'height': columnH2 + 'px',
        'background': '#ffffcc',
        'margin': '8px 0 0 0px'
    });
    var column4 = new Element('div', {
        'id': 'column4'
    });
    column4.setStyle({
        'position': 'absolute',
        'top': '120px',
        'left': '50%',
        'width': 156 + 'px',
        'height': columnH2 + 'px',
        'background': '#ffffcc',
        'margin': '8px 0 0 0px'
    });
    
    var searchBanner = new Element('div', {
        'id': 'searchBanner'
    });
    searchBanner.setStyle({
        'position': 'absolute',
        'nowrap': 'nowrap',
        'width': 340 + 'px',
        'height': 120 + 'px',
        'background': '#FFFFAA',
        'margin': '8px 0 0 0px'
    });
    
    var closeButton = new Element('a', {
        'href': '#',
        'id': 'lbClose',
        'class': 'lbAction',
        'rel': 'deactivate',
		'onClick':'hideAll()'
    });
    
    var closeDiv = new Element('div', {
        'id': 'closeDiv'
    });
    
    closeButton.insert('<img src="images/close.gif">')
    closeDiv.insert(closeButton);
    searchBanner.update(closeDiv);

    var length = items.length;
    if (length < count1) {
        for (i = slip; i < length; i++) {
            var element = items[i]; 
            column1.insert({
                bottom: element
            });
        }
    } else {
        for (i = slip; i < count1; i++) {
            var element = items[i];
            if (preg2.test(element) !== true){
	                column1.insert({
	                    bottom: element
	                });
                }
        }
        if (length < count2) {
            for (i = count1; i < length; i++) {
                var element = items[i];
                if (preg2.test(element) !== true){
	                column2.insert({
	                    bottom: element
	                });
                }
            }
        } else {
            for (i = count1; i < count2; i++) {
                var element = items[i];
                if (preg2.test(element) !== true){
	                column2.insert({
	                    bottom: element
	                });
                }
            }
            if (length < count3) {
                for (i = count2; i < length; i++) {
                    var element = items[i]
                    if (preg2.test(element) !== true){
		                column3.insert({
		                    bottom: element
		                });
	                }
                }
            }
            else {
                for (i = count2; i < count3; i++) {
                    var element = items[i]
                    if (preg2.test(element) !== true){
		                column3.insert({
		                    bottom: element
		                });
	                }
                }
                if (length < count4) {
                    for (i = count3; i < length; i++) {
                        var element = items[i]
                        if (preg2.test(element) !== true){
			                column4.insert({
			                    bottom: element
			                });
		                }
                    }
                }
                else {
                    for (i = count3; i < count4; i++) {
                        var element = items[i]
                        if (preg2.test(element) !== true){
			                column4.insert({
			                    bottom: element
			                });
		                }
                    }
                }
            }
        }
    }
    
    var wrapper1 = new Element('div', {
        'id': 'wrapper1'
    });
    wrapper1.setStyle({
        'position': 'absolute',
        'left': '0px',
        'width': Math.round(width / 2) + 'px'
    });
    var wrapper2 = new Element('div', {
        'id': 'wrapper2'
    });
    wrapper2.setStyle({
        'position': 'absolute',
        'left': '50%',
        'width': Math.round(width / 2) + 'px'
    });
    
    
    new Insertion.Top(wrapper1, column2);
    new Insertion.Top(wrapper1, column1);
    
    new Insertion.Top(wrapper2, column4);
    new Insertion.Top(wrapper2, column3);
    
    new Insertion.Top(wrapper2, searchBanner);
    
    new Insertion.Top(div, wrapper2);
    new Insertion.Top(div, wrapper1);
    new Insertion.Top(column1, navigator);
    new Insertion.Bottom(column4, navigator2);
    
    var url = 'search.htm';
    // notice the use of a proxy to circumvent the Same Origin Policy.
    
    
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: function(transport){
            var element = document.getElementById('searchBanner');
            searchBanner.innerHTML = searchBanner.innerHTML + transport.responseText;
		}
    });
    
    $('lbContentS').hide();
    
    
    new Insertion.Top($('lightboxS'), div);
    
    $('lightboxS').setStyle({
        'width': width + 'px',
        'height': height + 'px',
		'position': 'absolute',
        'top': '50px',
        'left': '50px',
        'display': 'inline',
		'background': '#FFFFFF',
		'text-align': 'center'
    });
    //$('overlay').setAttribute('onClick', 'hideAll()');
    
    $('createdContent').setStyle({
		'width': '698px',
		'height': height2 + 'px',
		'border': '1px solid #333333',
		'margin-top': '2px',
		'margin': '1px 1px 1px 1px',
		'font-family': 'Georgia,Times New Roman,Times,serif',
		'font-size': '16px',
		'line-height': '1.6'
    });
    
    Event.observe('overlayS', 'click', function () {
          hideAll();
	});
	$('lightboxS').style.display = "block";
	$('lightboxS').className = "done";
}

function createNavigator(total_entries, current_page, arrow, cont){
    var navigator = '';
    var pages = 1;
    pages = Math.ceil((total_entries / entries_per_page));
    
    if (pages > 1) {
        navigator += '<div id=nav1 style="padding-top:4px;">';
        navigator += '<table border=0 cellpadding=3 cellspacing=0>';
        navigator += '<tr>';
        
        if (current_page == 1 && arrow == 'down') {
            navigator += '<td><a href="javascript:twoColumns(0, ' + (current_page + 1) + ');"><img src="images/menu_down.gif"  style="width:160px"></a></td>';
        }
        else 
            if (current_page > 1) {
                if (arrow == 'up') 
                    navigator += '<td><a href="javascript:twoColumns(0, ' + (current_page - 1) + ');"><img src="images/menu_up.gif" style="width:160px"></a></td>';
                if (current_page < pages && arrow == 'down') 
                    navigator += '<td><a href="javascript:twoColumns(0, ' + (current_page + 1) + ');"><img src="images/menu_down.gif" style="width:160px"></a></td>';
            }
        
        navigator += '</tr>';
        navigator += '</table>';
        navigator += '</div>';
    }
    
    return navigator;
}
