/*========================================================================
 *
 *  JAVASCRIPTS.JS
 *
 *  russianbare/enature Javascript Library
 *  
 *  ©2008 Good Karma!
 *
 *  Remember, stealing other people's JavaScript makes baby Jesus cry.
 *  
 *
 *======================================================================*/

//----------------------------------------------------
// Simple Popup Window
// Custom Size, URL, Resize and Scrollbar jargon
// Also option to have window centered, y'all!
//----------------------------------------------------
	
function openWindow(url, width, height, is_scroll, is_resize, is_centered) {

	var pHoriz;
	var top;
	var left;

	if (is_centered == 1) {
		if(window.screen) {
			left = (screen.width - width) / 2;
    			top  = (screen.height - height) / 2;
		}
	} else {
		left = 100;
		top = 100;
	}

	if(!pHoriz || pHoriz.closed) {
       		pHoriz = window.open(url,'','width='+ width +', height='+ height +', left='+ left +', top='+ top +', screenX='+ left +', screenY='+ top +', scrollbars='+ is_scroll +', resizable= '+ is_resize +', menubar=no, toolbar=no');
    	} else {
       		pHoriz.focus();
    	}
}


//-----------------------------------------------
// Going Somewhere?
//-----------------------------------------------

function boink(url) {
	document.location.href = url;
}


//-----------------------------------------------
// Jump to Page N of N
//-----------------------------------------------

function multi_page_jump( url_bit, total_posts, per_page ) {
	pages = 1; cur_st = parseInt(""); cur_page  = 1;
	if ( total_posts % per_page == 0 ) { 
		pages = total_posts / per_page; 
	} else { 
		pages = Math.ceil( total_posts / per_page ); 
	}

	msg = "Please enter a page number to jump to between 1 and" + " " + pages;
	if ( cur_st > 0 ) { 
		cur_page = cur_st / per_page; cur_page = cur_page -1; 
	}

	show_page = 1;
	if ( cur_page < pages )  { show_page = cur_page + 1; }
	if ( cur_page >= pages ) { show_page = cur_page - 1; }
	else { show_page = cur_page + 1; }

	userPage = prompt( msg, show_page );
	if ( userPage > 0 ) {
		window.location = url_bit + "&p=" + userPage;
	}
}


//-----------------------------------------------
// Toggle Visibility of overlay menu
//-----------------------------------------------

function toggle_menu(id) {
	var itm = null;

	if (document.getElementById) {
		itm = document.getElementById(id);
	} else if (document.all) {
		itm = document.all[id];
	} else if (document.layers) {
		itm = document.layers[id];
	}
	
	if (!itm) {
		// do nothing
	} else if (itm.style) {
		if (itm.style.display == "none") { itm.style.display = "inline"; }
		else { itm.style.display = "none"; }
	} else { 
		itm.visibility = "show"; 
	}
}
	

//-------------------------------------------------
// Toggle Visibility of element
//-------------------------------------------------

function showField(id) {
	var itm = null;

	if (document.getElementById) {
		itm = document.getElementById(id);
	} 
	else if (document.all) {
		itm = document.all[id];
	} 
	
	else if (document.layers) {
		itm = document.layers[id];
	}
	
	if (!itm) {
		// do nothing
	}

	else if (itm.style) {
		if (itm.style.display == "none") { 
			itm.style.display = ""; 
		} else { 
			itm.style.display = ""; 
		}
	} else { 
		itm.visibility = "show"; 
	}
}

//-------------------------------------------------
// Toggle Visibility ALIAS
//-------------------------------------------------

function hideField(id) {
	showField(id);
}


//----------------------------------------------------
// Category Menu Functions
//----------------------------------------------------

function show_bmenu() {
	var menu = document.getElementById('BMENU');

	if (menu.style.display == 'none') {
		menu.style.display = 'inline';
		//setTimeout("hide_bmenu()", 5000);
	} else {
		return;
	}
}

function hide_bmenu() {
	var menu = document.getElementById('BMENU');

	if (menu.style.display == 'inline') {
		menu.style.display = 'none';
		force_bmenu_hide();
	} else {
		return;
	}
}

function keep_bmenu() {
	setTimeout("hide_bmenu()", 50000);
}  

function force_bmenu_hide() {
	document.getElementById('BMENU').style.display = 'none';
}


//----------------------------------------------------
// Confirmation Popup box - direct to URL if true,
// Alert box if false, saying all is well
//----------------------------------------------------

function confirm_action(url, message)
{	
	var desc
	var agree = confirm (message);
	
	if (agree) {
		window.location.href = url +'&js_confirm=1';
	} else {
		url.blur();
		return false;
	}
}


//-----------------------------------------------
// Anti-Robot Shopping Cart Link
//-----------------------------------------------


var addcart_load = "<img src='/images/load_bar_orange.gif' width='43' height='11' />";

function add_cart(pid,format,conf)
{
	var c = '';
	var notify_div = document.getElementById('IC_'+ pid);

	notify_div.innerHTML = addcart_load;

	update_shopping_cart("/en/cart/add:" + pid + ":" + format + ":a/"+ conf, pid);

	if (conf == '?confirm=1') {
		destroy_overlay();
	}
	
}

//-----------------------------------------------
// Remove from Cart
//-----------------------------------------------

function remove_from_cart(cart_id, pid) {

	var notify_div = document.getElementById('IC_'+ pid);
	notify_div.innerHTML = addcart_load;

	update_shopping_cart("/en/cart/remove:" + cart_id, pid);
}


function destroy_overlay() {
	document.getElementById('overlay').style.display = "none";
	document.getElementById('overlay_message').style.display = "none";
}

//---------------------------------------------------------
// It assigns toggle options on or off...
// It does this whenever it's told.
//---------------------------------------------------------


function tcheck(source, remote, opt) { 
	var zfield; 
	//var thisForm = document.mainform.elements[source];
	var thisForm = source;

	for (var i = 0; i < thisForm.options.length; i++) { 
		if (thisForm.options[i].value == opt) {
			if(thisForm.options[i].selected == true) { 
				toggleFormElement(remote, 'on'); 
			} else { 
				toggleFormElement(remote, 'off'); 
				setSelectOff(remote);
			} 
		} 
	} 
} 


//----------------------------------------------------------
// It toggles the boxes - one or ten
// Or else it gets the hose again...
//----------------------------------------------------------


function setSelectOptions(select, tf, skip) {

	var selectObject = document.mainform.elements[select];
	var selectCount  = selectObject.length;

	for (var i = skip; i < selectCount; i++) {
		if (tf == 'on') {
			selectObject.options[i].selected = true;
		} else {
			selectObject.options[i].selected = false;
		}
	} 
	return true;
}


//-----------------------------------------------------------------
// Toggle form elements from disabled to enabled and vice/versa;
// Swap out element background colors for visuals, since we use
// CSS designer form display properties :)
//-----------------------------------------------------------------


function toggleFormElement(it, state) {

	var bcolor = '#EBE6DE';
	var tcolor = '#000000';
	var tform = document.getElementById(it);
	
	if (document.all || document.getElementById) {
		if (state == 'on') {
			tform.disabled = false;
			tform.style.color = tcolor;
			tform.style.backgroundColor = bcolor;

		} else {
			tform.disabled = true;
			tform.style.color = '';
			tform.style.backgroundColor = '';
		}
	}
}


//------------------------------------------------------------------
// Toggle Select Menu multiple selectability based on search mode
// Yes, Precious we'll get the hose!
//------------------------------------------------------------------


function toggleSelectPerms(mode, the_select) {

	var selectCount  = the_select.length;

	if (mode == 'strict') {
		the_select.multiple = false;

	} else {
		the_select.multiple = true;

	}

	return false;
}



//------------------------------------------------------------------
// Set value of ID'ed element
//------------------------------------------------------------------

function setval(el, value) {

	element = document.getElementById(el);
	element.value = value;
}

function addEngine()
{
	if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
		window.sidebar.addSearchEngine(
		"http://www.russianbare.com/lib/searchbar/enaturenet.src",
		"http://www.russianbare.com/lib/searchbar/enaturenet.png",
		'Enature.net',
		'DVD & Video');
  	} else {
    		alert("Netscape 6 or Mozilla is needed to install a sherlock plugin");
	}
}


//------------------------------------------------------------------
// Check Search Box
//------------------------------------------------------------------

var scherr = "";

function chksearch(form) {

	var box = form.query;

	if (box.value == '' || box.value.length < 3) {
		if (document.getElementById('swarn').style.display == 'none') {
			document.getElementById('swarn_msg').innerHTML = 'Query must be at least 3 characters in length.';
			Slide('swarn',{duration:.5}).down();
			scherr = 1; 
		}
	
		return false;
	} else if (box.value == 'sex') {

		if (document.getElementById('swarn').style.display == 'none') {
			document.getElementById('swarn_msg').innerHTML = 'No sex here, this is a naturist site. Try again.';
			document.getElementById('sbq').value = '';
			Slide('swarn',{duration:.5}).down();
			scherr = 1; 
		}

		return false;
	}
}

function errhide() {

	if (scherr == 1) {
		document.getElementById('swarn').style.display = 'none';
		scherr = 0;
		open_div = ''
	}
}

//-----------------------------------------------------------------
// Animate DIV Toggle
//-----------------------------------------------------------------

var content_height = 200;
var slide_time = 250.0;
var open_div = '';

function toggle_slide(div_id, slide_time_override, content_height_override)
{
  	if(open_div == div_id) {
    		div_id = '';
	}

	if (content_height_override > 0 ) {
		content_height = content_height_override;
	}

	if (slide_time_override > 0 ) {
		slide_time = slide_time_override;
	}


   
  setTimeout("slide_it("
      + new Date().getTime() + "," + slide_time + ",'"
      + open_div + "','" + div_id + "')", 33);
 
  open_div = div_id;
}



function slide_it(last_tick, time_left, close_id, open_id)
{ 
	var current_tick = new Date().getTime();
 	var elapsed_ticks = current_tick - last_tick;
 
	var opening = (open_id == '') ?
		null : document.getElementById(open_id);
	var closing = (close_id == '') ?
		null : document.getElementById(close_id);
 
	if (time_left <= elapsed_ticks) {
		if (opening != null)
			opening.style.height = content_height + 'px';
   
		if (closing != null) {
			closing.style.display = 'none';
			closing.style.height = '0px';
		}

		return;
	}
 
	time_left -= elapsed_ticks;
	var nu_close_height = Math.round((time_left/slide_time) * content_height);

	if (opening != null) {
		if (opening.style.display != 'block')
			opening.style.display = 'block';
			opening.style.height = (content_height - nu_close_height) + 'px';
	}
 
	if (closing != null)
		closing.style.height = nu_close_height + 'px';

	setTimeout("slide_it(" + current_tick + "," + time_left + ",'" + close_id + "','" + open_id + "')", 33);

}

var slideInUse = new Array();

function Slide(objId, options) {
	this.obj = document.getElementById(objId);
	this.duration = 1;
	this.height = parseInt(this.obj.style.height);

	if(typeof options != 'undefined') { this.options = options; } else { this.options = {}; }
	if(this.options.duration) { this.duration = this.options.duration; }
		
	this.up = function() {
		this.curHeight = this.height;
		this.newHeight = '1';
		if(slideInUse[objId] != true) {
			var finishTime = this.slide();
			window.setTimeout("Slide('"+objId+"').finishup("+this.height+");",finishTime);
		}
	}
	
	this.down = function() {
		this.newHeight = this.height;
		this.curHeight = '1';
		if(slideInUse[objId] != true) {
			this.obj.style.height = '1px';
			this.obj.style.display = 'block';
			this.slide();
		}
	}
	
	this.slide = function() {
		slideInUse[objId] = true;
		var frames = 30 * duration; // Running at 30 fps

		var tIncrement = (duration*1000) / frames;
		tIncrement = Math.round(tIncrement);
		var sIncrement = (this.curHeight-this.newHeight) / frames;

		var frameSizes = new Array();
		for(var i=0; i < frames; i++) {
			if(i < frames/2) {
				frameSizes[i] = (sIncrement * (i/frames))*4;
			} else {
				frameSizes[i] = (sIncrement * (1-(i/frames)))*4;
			}
		}
		
		for(var i=0; i < frames; i++) {
			this.curHeight = this.curHeight - frameSizes[i];
			window.setTimeout("document.getElementById('"+objId+"').style.height='"+Math.round(this.curHeight)+"px';",tIncrement * i);
		}
		
		window.setTimeout("delete(slideInUse['"+objId+"']);",tIncrement * i);
		
		if(this.options.onComplete) {
			window.setTimeout(this.options.onComplete, tIncrement * (i-2));
		}
		
		return tIncrement * i;
	}
	
	this.finishup = function(height) {
		this.obj.style.display = 'none';
		this.obj.style.height = height + 'px';
	}
	
	return this;
}



//--------------------------------------------------------------------
// A carefully timed focus....
//--------------------------------------------------------------------

function dfocus(fid, odiv, time) {

	var f = document.getElementById(odiv).style.display;
	if (f == '' || f == 'none') {
		setTimeout("document.getElementById('"+ fid +"').focus()", time);
	}
}


//---------------------------------------------------------------------
// Expand Address Book Entries
//---------------------------------------------------------------------

var irow = '0';
var icol = '';
var aid  = '';

function expand_row(id, orig_color) {

	if (icol == '') {
		icol = '#F7E5C9';
	}

	if (irow != 0) {
		old_element = document.getElementById('R-'+irow);
		new_element = document.getElementById('R-'+id);

		old_inner_div = document.getElementById('T-'+irow);
		new_inner_div = document.getElementById('T-'+id);

		if (irow != id) {
			new_element.style.borderColor = '#B2C0CA';
			old_element.style.borderColor = icol;

			new_element.className = 'addbook_row_sel';
			old_element.className = 'addbook_row';
			
			new_inner_div.style.display = '';
			old_inner_div.style.display = 'none';

			toggle_arrow(id, 'ON');
			toggle_arrow(irow, 'OFF');

			select_address(id);

		} else {
			if (new_inner_div.style.display == '') {
				old_element.style.borderColor = icol;
				old_inner_div.style.display = 'none';
				old_element.className = 'addbook_row';
				toggle_arrow(irow, 'OFF');
				select_address(0);
				id = irow;
			} else { 
				old_element.style.borderColor = '#B2C0CA';
				old_inner_div.style.display = '';
				old_element.className = 'addbook_row_sel';
				toggle_arrow(id, 'ON');
				select_address(id);
				id = irow;
			}
		}
	} else {
		var new_element = document.getElementById('R-'+id);
		var new_inner_div = document.getElementById('T-'+id);

		new_element.style.borderColor = '#B2C0CA';
		new_element.className = 'addbook_row_sel';
		new_inner_div.style.display = '';
	
		toggle_arrow(id, 'ON');
		select_address(id);
	}

	irow = id;
	icol = orig_color;
}


//--------------------------------------------
// Toggle Expand/Collapse Indicators
//--------------------------------------------

function toggle_arrow(id, state) {
	
	arrow = document.getElementById('A-'+id);
	
	if (state == 'ON') {
		arrow.src = 'images/collapse.gif';
		arrow.height = '11';
		arrow.width = '11';
	} else {
		arrow.src = 'images/expand.gif';
		arrow.height = '11';
		arrow.width = '11';
	}
}


//--------------------------------------------
// Just something simple and stupid....
//--------------------------------------------

function select_address(aid) {
	hidden = document.getElementById('AD');
	if (aid != '') {
		hidden.value = aid;
	} else {
		hidden.value = 'JS_OFF';
	}
}

//--------------------------------------------
// Format floats to include trailing zeros
// in currency and other float formats
//--------------------------------------------

function format_float(num) {
	
	var num;

	num = num.toString().replace(/\$|\,/g,'');
	if (isNaN(num)) {
		num = "0";
	}

	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num * 100 + 0.50000000001);
	dec = num % 100;
	num = Math.floor(num / 100).toString();

	if(dec < 10) {
		dec = "0" + dec;
	}

	for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
		num = num.substring(0, num.length - (4 *i + 3))+','+num.substring(num.length - (4 *i + 3));
	}

	return num + '.' + dec;
}