function strltrim()
	{
	return this.replace(/^\s+/,'');
	}

function strrtrim()
	{
	return this.replace(/\s+$/,'');
	}

function strtrim()
	{
	return this.replace(/^\s+/,'').replace(/\s+$/,'');
	}

String.prototype.ltrim = strltrim;
String.prototype.rtrim = strrtrim;
String.prototype.trim = strtrim;

function continue_to_next_page(page,form_name)
	{
	window.document.forms[form_name].action = page;
	window.document.forms[form_name].submit();
	return true;
	}

function ClientSnifferJr()
{
  this.ua = navigator.userAgent.toLowerCase();
  this.major = parseInt(navigator.appVersion);
  this.minor = parseFloat(navigator.appVersion);
  // DOM Support
  if (document.addEventListener && document.removeEventListener)
  {
     this.dom2events = true;
  }
  if (document.getElementById)
  {
      this.dom1getbyid = true;
  }
   // Opera
   this.opera = this.ua.indexOf('opera')!= -1;
  if (this.opera)
  {
    this.opera5 = (this.ua.indexOf("opera 5")!= -1 || this.ua.indexOf("opera/5")!= -1);
    return 1;
  }
  // MSIE
  this.ie = this.ua.indexOf('msie')!= -1;
  if (this.ie)
  {
    this.ie3 = this.major < 4;
    this.ie4 = (this.major == 4 && this.ua.indexOf('msie 5') == -1 && this.ua.indexOf('msie 6') == -1);
    this.ie4up = this.major >= 4;
    this.ie5 = (this.major == 4 && this.ua.indexOf('msie 5.0')!= -1);
    this.ie5up =!this.ie3 &&!this.ie4;
    this.ie6 = (this.major == 4 && this.ua.indexOf('msie 6.0')!= -1);
    this.ie6up = (!this.ie3 &&!this.ie4 &&!this.ie5 && this.ua.indexOf("msie 5.5") == -1);
    return 2;
  }
  // Misc.
  this.hotjava = this.ua.indexOf('hotjava')!= -1;
  this.webtv = this.ua.indexOf('webtv')!= -1;
  this.aol = this.ua.indexOf('aol')!= -1;
  if (this.hotjava || this.webtv || this.aol)
  {
   return 3;
  }
// Gecko, NN4+, and NS6
  this.gecko = this.ua.indexOf('gecko')!= -1;
  this.nav = (this.ua.indexOf('mozilla')!= -1 && this.ua.indexOf('spoofer') == -1 && this.ua.indexOf('compatible') == -1);
  if (this.nav)
  {
    this.nav4 = this.major == 4;
    this.nav4up= this.major >= 4;
    this.nav5up= this.major >= 5;
    this.nav6 = this.major == 5;
    this.nav6up= this.nav5up;
    return 4;
  }
  return 0;
}
function getBname(num)
{
   if(num == 1)
   {
      return "Opera";
   }
   else if(num == 2)
   {
      return "MSIE Compatible";
   }
   else if(num == 3)
   {
      return "Hot Java, WebTv or AOL";
   }
   else if(num == 4)
   {
       return "Mozilla or Netscape";
   }
   else
   {
      return "Unkown";
   }
}

function IsDigit(number)
{
   number = number.trim();
    for (n = 0; n < number.length; n++)
    {
      if (number.charAt(n) < "0" || number.charAt(n) > "9")
       {
         return false;
      }
    }
      return true;
}

/* Look at hidden fields and form elements to determine the current page count
 * of the book identified by unique_id:
 */
function get_final_pages(unique_id)
	{
	/* Extract table of contents / content page counts plus current TOC setting
	 */
	var toc_pages = -1;
	var content_pages = -1;
	var has_toc = false;
	var page_count;
	var page_size = document.getElementById(unique_id + "Option5").value;

	o = document.getElementById('toc_pages_' + page_size + "_" + unique_id);
	if (o)
		toc_pages = o.value;
		
	o = document.getElementById('content_pages_' + unique_id);
	if (o)
		content_pages = o.value;
		
	o = document.getElementById('has_toc_' + unique_id);
	if (o && o.checked)
		has_toc = true;
			
	/* If we're supposed to ignore page count, respect that:
	 */
	if (content_pages == -1)
		page_count = -1;
	/* If the Table of Contents is turned on, factor that in:
	 */
	else if (has_toc == true)
		page_count = (parseInt(toc_pages) + parseInt(content_pages));
	/* Default case: content pages only:
	 */
	else
		page_count = content_pages;
		
	return parseInt(page_count);	// we need parseInt to be sure we don't return a string and confuse IE
	}
	
function getReturnData(data, statusCode, statusMessage)
	{
 	//AJFORM failed. Submit form normally.
 	if( statusCode != AJForm.STATUS['SUCCESS'] )
	 	{
	 	//Something with AJAX FAILED SO WE submit normaly
		document.getElementById('mainForm').move.value = '';
	    document.getElementById('mainForm').action = "displayOptsMulti.php";
	    document.getElementById('mainForm').submit();
		return true;
	 	}
 	//AJFORM succeeded.
 	else 
 		{
		document.getElementById("hideInfo").innerHTML = "";
		var el = document.getElementById("sumValue");
		var descript = el.value + "_discript";
		var n_title = el.value + "_title";
		document.getElementById(n_title).innerHTML = "<b>" + document.getElementById(el.value + 'Option27').value + "</b>";
		document.getElementById(descript).innerHTML = get_options_page_details(el.value, get_final_pages(el.value));
		document.getElementById('mainForm').action = 'save_opt.php';
		return true;
	 	}
	}

function wait_for_it_rtn()
	{
	return true;
	}

function close_preview_for_rest(link)
	{
	var tries =0;
	if (undefined != popup_window)
		{
		if(popup_window.closed == false && window.name != popup_window.name)
			{
			popup_window.close();
			//All browsers need to close the window give it 1 second
			setTimeout('wait_for_it_rtn()',1000);
			//Give the browser time to close the window
			try
				{
				while(undefined != popup_window && popup_window.closed == false && tries < 3)
					{
					setTimeout('wait_for_it_rtn()',1000);
					tries++;
					}
				}
			catch(e)
				{
				setTimeout('wait_for_it_rtn()',2000);
				popup_window = window.open(link,"wb_book_preview","menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes");
				return true;
				}
			}
		}
	popup_window = window.open(link,"wb_book_preview","menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes");
	}

/* This function takes in the unique identifier ($sumValue) of a book stored in the session and
 * returns an array containing the currently selected values in the session.  The array is
 * indexed in the same order as the tiers in the JavascriptOptionBoxes class.
 */
function get_selected_book_options(unique_id)
	{
	var values = new Array();
	values[values.length] = document.getElementById(unique_id + "Option5").value;
	values[values.length] = document.getElementById(unique_id + "Option6").value;
	values[values.length] = document.getElementById(unique_id + "Option3").value;
	values[values.length] = document.getElementById(unique_id + "Option15").value;
	return values;
	}
   
function get_options_page_details(unique_id, num_pages)
	{
	var msg = "";

	/* Get the currently selected values from the session along with an array of values at each tier:
	 */	
	var selected_options = get_selected_book_options(unique_id);
	var options_by_tier = top.jopt_boxes.get_options_by_tier(selected_options);
	
	/* Loop through our tiers and display the value at each level:
	 */
	for (var x = 0; x < options_by_tier.length; x++)
		{
		if (msg.length > 0)
			msg += "<br>";
		var option = selected_options[x];
		msg += options_by_tier[x][option] + top.jopt_boxes.get_tier_display_suffix(x);
		}
	
	/* Add number of pages, a value not currently part of the tiers:
	 */
	if (msg.length > 0)
		msg += "<br>";
	msg += "Number of Pages: " + num_pages;
	
	return msg;
	}

function preProcess( thisForm )
	{
	return true;
	}

function goForm(whichForm) 
	{
	thisForm = document.getElementById( whichForm);
	// thisForm.submit() will not work using AJFORM. Instead, you need to use the following:
	thisForm.ajform_submit();
	}

function show_tbl(options_tbl)
	{
	var timer = 0;
	var speed = Math.round(1000 / 100);
	var div_p = document.all ? document.all[options_tbl + "_div"] :
				document.getElementById(options_tbl + "_div");
	var doc_order = document.all ? document.all[options_tbl + "_doc_order"] :
				document.getElementById(options_tbl + "_doc_order");
	var new_opcity = parseInt(div_p.style.height);
	if(doc_order == 'undefined' || doc_order == null || !doc_order)
		var orig_height = 155;
	else
		var orig_height = 267;

	orig_height += 45;

	timer = 0;
    $(options_tbl + "_div").setStyle('display','');
    var marginChange = new Fx.Style(options_tbl + "_div", 'height',{duration:600});
    marginChange.start(	orig_height); //tries to read current margin top valueand goes from current to 10
	
  //marginChange.slideIn()  //tries to read current margin top valueand goes from current to 10
//	for(var i = new_opcity ; i <= 101; i++)
//		{
//		setTimeout("anidiv('" + options_tbl  + "_div'," + i + ","+  orig_height +")",(timer * speed));
//		timer++;
//		}
	document.getElementById(options_tbl + '_edit_img').onclick = new Function("hide_tbl('" + options_tbl + "')");
	}

function hide_tbl(options_tbl)
	{
	var div_p = document.all ? document.all[options_tbl + "_div"] :
				document.getElementById(options_tbl + "_div");

	document.getElementById(options_tbl + '_edit_img').onclick = new Function("show_tbl('" + options_tbl + "')");
	var timer = 0;
	var speed = Math.round(1000 / 100);
	var new_opcity = 100;
	timer = 0;
	var doc_order = document.all ? document.all[options_tbl + "_doc_order"] :
				document.getElementById(options_tbl + "_doc_order");
	if(doc_order == 'undefined' || doc_order == null || !doc_order)
		var orig_height = 155;
	else
		var orig_height = 267;
	
	orig_height += 45;
		
	//	var mySlide = new Fx.Slide(options_tbl + "_div");
		//mySlide.slideIn();  //tries to read current margin top valueand goes from current to 10
    var marginChange = new Fx.Style(options_tbl + "_div", 'height',{duration:600});
    marginChange.start(0); //tries to read current margin top valueand goes from current to 10
//    var displayChange = new Fx.Style(options_tbl + "_div", 'display',{duration:601});
//	displayChange.start('none');
	setTimeout("$('" + options_tbl + "_div').setStyle('display','none')",601);
//	setTimeout(,500)
//	for(var i = new_opcity ; i >= 0; i--)
//		{
//		setTimeout("anidiv('" + options_tbl  + "_div'," + i + ","+  orig_height +")",(timer * speed));
//		timer++;
//		}

	}

function anidiv(options_tbl,new_opcity,org_height)
	{
	var div_p = document.all ? document.all[options_tbl] :
				document.getElementById(options_tbl);

	var n_height = parseFloat(org_height) *  (parseFloat(new_opcity) / 100);
	div_p.style.height = n_height + "px";
    if(new_opcity <= 0 || new_opcity >= 100)
    	{
	    if(new_opcity <= 0)
	    	{

	    	div_p.style.display = 'none';
	    	}
	    else
	    	{

	    	div_p.style.display = '';
	    	}
    	}
    else
	    {
	   	div_p.style.display = '';
	    }
	}

function anidiv_2(options_tbl,new_opcity,org_height)
	{
	var div_p = document.all ? document.all[options_tbl] :
				document.getElementById(options_tbl);

	var n_height = org_height *  (new_opcity / 100);
	div_p.style.height = n_height + "px";
	//div_p.clientHeight = n_height;
    if(new_opcity <= 0 || new_opcity >= 100)
    	{
	    if(new_opcity <= 0)
	    	{
	    	div_p.style.display = 'none';
	    	}
	    else
	    	{
	    	
	    	div_p.style.display = '';
	    	}
    	}
    else
	    {
	    div_p.style.display = '';
	    }
	}

/* Get the selected value from a drop-down list:
 */
function get_drop_down_selected_value(drop_down)
	{
	var i = drop_down.selectedIndex;
	return drop_down.options[i].value;
	}

function can_support_ajax()
	{
	if( typeof window.ActiveXObject != 'undefined' )
		{
		try
			{
			doc = new ActiveXObject("Microsoft.XMLHTTP");
			return true;
			}
		catch(e)
			{
			return false;
			}
		}
	else if( typeof XMLHttpRequest != 'undefined' )
		{
		try
			{
			doc = new XMLHttpRequest();
			return true;
			}
		catch(e)
			{
			return false;
			}
		}
	return false;
	}

function new_search_submit()
	{
	document.forms.gs.submit();
	}

function print_q_toggle_detialed_view(animate)
	{
	var book_list = document.getElementById('print_q_book_title_list');
	var bottom_q = document.getElementById("print_q_bottom_print_area");
	var print_q_top_text = document.getElementById('print_q_top_view_text');
	var print_q_arrow = document.getElementById('print_q_top_view_img');
	var print_q_toggle = document.getElementsByName('print_q_mode');
	var print_q_img = document.getElementById('print_q_clear_all_img_div');
	var timer = 0;
	var t_items = parseInt(document.getElementById('print_q_book_list_total_items').value);

	if(t_items < 5)
		{
		var speed = Math.round(500 / 100);
		}
	else if(t_items < 10)
		{
		var speed = Math.round(700 / 100);
		}
	else
		{
		var speed = Math.round(1000 / 100);
		}

	if(print_q_toggle[0].value == "closed")
		{
		//bottom_q.style.display = "";
		//print_q_img.style.display = "";
		if(t_items > 1)
			{
			var  calc_items = t_items - 1;
			var t_height = (calc_items * 32);
			t_height += 8;

			var new_opcity = 0;
			timer = 0;
			if(animate == "yes")
				{
				for(var i = new_opcity ; i <= 101; i++)
					{
					setTimeout("anidiv_2('print_q_book_title_list'," + i + ","+  t_height +")",(timer * speed));
					timer++;
					}

				}
			else
				{
				book_list.style.display = "";
				}
			}
		for(var x = 0; x < print_q_toggle.length; x++)
			{
			print_q_toggle[x].value = "open";
			}
		print_q_top_text.innerHTML = "close";
		print_q_arrow.src = "img/ua.gif";
		}
	else
		{
		if(t_items > 1)
			{
			//bottom_q.style.display = "none";

			var t_height = parseFloat(book_list.clientHeight);
			if(animate == "yes")
				{
				var new_opcity = 100;
				timer = 0;
				for(var i = new_opcity ; i >= 0; i--)
					{
					setTimeout("anidiv_2('print_q_book_title_list'," + i + ","+  t_height +")",(timer * speed));
					timer++;
					}
				}
			else
				{
				book_list.style.display = "none";
				}
			}
		for(var x = 0; x < print_q_toggle.length; x++)
			{
			print_q_toggle[x].value = "closed";
			}
		print_q_top_text.innerHTML = "open";
		//setTimeout("change_display_items('print_q_clear_all_img_div','none')",speed * 100);
		print_q_arrow.src = "img/da.gif";
		}
	}

function change_display_items(obj_text,style_value)
	{
	var obj = document.getElementById(obj_text);
	if(obj == 'undefined' || obj == null || !obj )
		return;
	obj.style.display = style_value;
	}

function add_to_print_queue(searchTitle,gurl)
	{
	document.getElementById('gTitle_rl').value = searchTitle;
	document.getElementById('gURL_rl').value = gurl;
	document.getElementById('rl_frm').submit();
	}

function move_to_another_rs_page(start_num)
	{
	document.getElementById('start_rl').value = start_num;
	document.getElementById('do_rl').value = "";
	document.getElementById('rl_frm').submit();
	}

function remove_pq_item(uuid)
	{
	document.getElementById('uuid_pq').value = uuid;
	document.getElementById('do_pq').value = "remove";
	document.getElementById('print_q_frm').submit();
	}

function view_page_preview(preview_num)
	{
	document.getElementById('pdf_preview').selectedIndex = preview_num;
	document.getElementById('preview_frm').submit();
	}


