var closeTimeoutID=-1;
var popup_opened=false;
var dont_close_popup=true;
var popup_inside=false;
var last_scroll_posY=-1;

function rescroll_callback() {
	setTimeout("rescroll_browsediv();", 100);
}

function rescroll_browsediv() {
	if (last_scroll_posY==document.body.scrollTop) return;
	
	var browsedivcnt = document.getElementById("browsedivcnt");
	
	var ty = ((document.body.scrollTop-130)<0 ? 0:(document.body.scrollTop-140));
	browsedivcnt.style.top = ty+'px';
	var wndHgt=((document.getElementById && !document.all) ? 1 : 0) ? window.innerHeight : document.body.clientHeight;
	if (last_scroll_posY!=-1) {
		if (document.body.scrollTop>=last_scroll_posY) {
			var pos = getElementAbsolutePos(browsedivcnt);
			var lty=ty;
			if ((pos.y+647)>(wndHgt+document.body.scrollTop)) ty-=(pos.y+647)-(wndHgt+document.body.scrollTop);
			if (ty<0) ty=0;
			var delta_correction=ty-lty;
			browsedivcnt.style.top = ty+'px';
		}
	}
	last_scroll_posY=document.body.scrollTop;
}

function thisMovie(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName];
	} else {
		return document[movieName];
	}
}

function open_adv_search() {
	var params='{ "action":"advanced_search" }';
	assistant_open(params);
}

function assistant_open(params) {
	var browsepopupdiv = document.getElementById("browsepopupdiv");
	if ((navigator.appName.indexOf("Microsoft") == -1) && (navigator.appName.toLowerCase().indexOf("opera") == -1)) {
		browsepopupdiv.style.visibility = '';
	} else {
		browsepopupdiv.style.display = 'block';
	}
	
	var optionswindow = document.getElementById("optionswindow");
    optionswindow.open_popup(params);

    dont_close_popup=true;
	if (closeTimeoutID!=-1) {
		clearTimeout(closeTimeoutID);
		closeTimeoutID=-1;
	}
    setTimeout("dont_close_popup=false;",600);
}
function assistant_close_attempt(close_flag) {
	if (close_flag) {
		popup_inside=false;
		closeTimeoutID=setTimeout("assistant_close()",1000);
	} else {
		if (popup_opened) popup_inside=true;
		if (closeTimeoutID!=-1) {
			clearTimeout(closeTimeoutID);
			closeTimeoutID=-1;
		}
	}
}
function assistant_close() {
	var optionswindow = document.getElementById("optionswindow");
    if (optionswindow) {
	    if (optionswindow.close_popup) {
	    	optionswindow.close_popup();
    	}
    }
}
// called by popup then it's opened
function assistant_opened_notify() {
    popup_opened=true;
}
function assistant_close_notify() {
	popup_opened=false;
	
	if (closeTimeoutID!=-1) {
		clearTimeout(closeTimeoutID);
		closeTimeoutID=-1;
	}
	
	var rightpanel = document.getElementById("rightpanel");
	if (rightpanel) {
		if (rightpanel.assistant_closed) {
			rightpanel.assistant_closed();
		}
	}
}
// to close popup when it's opened (and clicked outside it)
function monitorClick(e) {
	if (dont_close_popup) return;
	var evt = (e)?e:event;
    //if(evt.preventDefault) { evt.preventDefault(); } // Chrome, Safari, Firefox
   	//evt.returnValue = false; // IE7, IE8
	
	var theElem = (evt.srcElement)?evt.srcElement:evt.target;
	
	var close_flag=true;
	while(theElem!=null){
	  if((theElem.id == "browsepopupdiv") || (!popup_opened)) {
		  close_flag=false;
		  break;
	  }
	 
	  theElem = theElem.offsetParent;         
	}
	if (close_flag) {
	  //alert(theElem.id+","+popup_opened);
	  assistant_close();
	  return;
	}		
}

function hide_popup_div() {
	popup_opened=false;
	dont_close_popup=false;
//	alert("hide_popup_div()");
	var adiv = document.getElementById("adiv");
//	alert(adiv);
	adiv.focus(); // hidding popup with focus on it would cause javascript to flash "communication break"
		
	var browsepopupdiv = document.getElementById("browsepopupdiv");
	if ((navigator.appName.indexOf("Microsoft") == -1) && (navigator.appName.toLowerCase().indexOf("opera") == -1)) {
		browsepopupdiv.style.visibility = 'hidden';
	} else {
		browsepopupdiv.style.display = 'none';
	}
}
function navigate_indicator() {
	var rightpanel = document.getElementById("rightpanel");
    rightpanel.navigate_indicator();
}


function browser_popup_check() {
	var optionswindow = document.getElementById("optionswindow");
//	alert("check_CALL "+optionswindow+" "+optionswindow.check_ready);
    optionswindow.check_ready();
}
function browser_popup_check_callback() {
	var rightpanel = document.getElementById("rightpanel");
//	alert("check_CALLBACK "+rightpanel+" "+rightpanel.popup_ready);
    rightpanel.popup_ready();

    var resultsObj=document.getElementById("pleasetry");
	if (resultsObj) resultsObj.style.visibility = '';
}

function getBaseURL() {
    var url = location.href;
    var baseURL = url.substring(0, url.indexOf('/', 14));

    if (baseURL.indexOf('http://localhost') != -1) {
        // Base Url for localhost
        var url = location.href;
        var pathname = location.pathname;
        var index1 = url.indexOf(pathname);
        var index2 = url.indexOf("/", index1 + 1);
        var baseLocalUrl = url.substr(0, index2);
        return baseLocalUrl + "/";
    }
    else {
        return baseURL + "/";
    }

}

function  captureWheel(e){
    if(!e){ e = window.event; } // IE7, IE8, Chrome, Safari
    if (popup_inside) {
	    if(e.preventDefault) { e.preventDefault(); } // Chrome, Safari, Firefox
    	e.returnValue = false; // IE7, IE8
    	routeWheelToFlash(e);
	}
}
function routeWheelToFlash(event) {
	var optionswindow = document.getElementById("optionswindow");
	var delta;
	if (event.wheelDelta) { // IE/Opera
    	delta = -event.wheelDelta/120*3;
	} else { // FF
		delta = event.detail;
	}
    if (optionswindow) {
        var o = {x: event.screenX, y: event.screenY,
            delta: delta,
            ctrlKey: event.ctrlKey, altKey: event.altKey,
            shiftKey: event.shiftKey}
       
	    optionswindow.handleWheel(o);
    }
}

function validate_page(max_page) {
	var el=document.getElementById('pageinput');
	var val=parseInt(el.value,10);
	if (val<1) { el.value=1 } else if (val>max_page) {el.value=max_page} else if ((val>=1) && (val<=max_page)) {} else {el.value=1};
}
