<!--
////////////////////////////////////////////////////////////
// Embed code
//
// embed_passage is an object with the following attributes
// and methods:
//
// attributes: text - passage text to be embeded
//						 url  - permalink to bg passage
//					   version_info - id and display of version being used
//
// methods: update_embedcode - updates the link and embed text
//														 anytime the passage or options
//														 are changed.
//					get_passage      - method that does a ajax query to
//														 get the new passage text and info
////////////////////////////////////////////////////////////
var embed_passage = {
  passage: {},
  options: {},
	
  /*options is array of options that are unchecked [embed-versenum, embed-woj, embed-xref, embed-footnote, embed-heading] */
  update_embedcode : function() {
	var options_cookie = {"embed-versenum" : true, "embed-woj" : true, "embed-xref" : true, "embed-footnote" : true, "embed-heading" : true};
	var options = this.options;
    var passage_node = document.createElement('div');
    $(passage_node).html(this.passage.text);
	for (var i = 0, last = options.length; i < last; i++) {
		var id = $(options[i]).attr("id").substr(6);
		options_cookie[$(options[i]).attr("id")] = false;
		switch (id) {
			case "heading":
				$(":header", passage_node).remove();
				break;
			/*case "woj":
				$("span.woj", passage_node).removeAttr("style").removeAttr("class");
				break;*/
			case "footnote":
			case "xref":
				var className = (id == "xref") ? "crossrefs" : id + "s";
				$("div." + className, passage_node).remove();
				//no break
			default: //versenum
				$("sup." + id, passage_node).remove();
		}
	}
	$("span.woj", passage_node).removeAttr("style").removeAttr("class");
	for (var i in options_cookie) {
		setUpdatePrefs("pslookup_"+i, options_cookie[i]);
	}
	$("#embed-embed").val($(passage_node).html());
	$("#embed-link").val(this.passage.url);
  },
  get_passage : function(passage_reference) {
		$("#embed-overlay").css("display", "block");
    $("#embed-message").hide();
    $.get("/api/json/embed.php", {search: passage_reference, version:embed_passage.passage.version_info.id},
      function(passage) {
        if(passage.text == "ERROR") {
            $("#embed-message").html("<br/>" + passage.error).show();
		} else {
            embed_passage.passage = passage;
						embed_passage.passage_reference = passage_reference;
            embed_passage.update_embedcode();
        }
				$("#embed-overlay").css("display", "none");
      },"json");
  },
  toggle: function($node) {
    //move #embed to the correct li (bottom or top of page)
    if ($node.parent().get(0) != $("#embed").parent().get(0)) {
    //if it was open at the other location, close it
      $("#embed").hide();
      $node.after($("#embed"));
    }
	//show or hide embed
	$("#embed").toggle();
	//if it's visible, add an event to body so it closes if you click elsewhere (clicking in #embed itself is trapped elsewhere)
	if ($("#embed").is(":visible")) {
		$(document.body).bind("click.embed", function(){
        $("#embed").hide();
        $(document.body).unbind("click.embed");
      });
    }
  }

};

/**
 * Init_embed simply sets up the embed_passage javascript object and sets the values in the form to the defaults.
 */
function init_embed() {
jQuery(document).ready(function() {
    function update_embed_texts() {
      embed_passage.options = $("#embed input:checkbox").not(":checked");
			embed_passage.passage_reference = $("#embed-passage").attr('value');
      embed_passage.update_embedcode();
    }
    
   $("#result-options1").append('<li class="embed"><a href="#" onmouseover="ShowOptionInfo(\'Embed this passage\', \'Use on your site\')" onmouseout="HideOptionInfo()"><span>Embed this passage</span></a></li><li class="whats-this"><a onclick="return embed_help_window();" href="/help/embed.html" title="Embed or link to this passage on your blog or website">?</a></li>');
   $("#result-options2").append('<li class="embed"><a href="#" onmouseover="ShowOptionInfo2(\'Embed this passage\', \'Use on your site\')" onmouseout="HideOptionInfo2()"><span>Embed this passage</span></a></li><li class="whats-this"><a onclick="return embed_help_window();" href="/help/embed.html" title="Embed or link to this passage on your blog or website">?</a></li>');
   $("#embed input:checkbox").click(update_embed_texts);
	  $("#embed tr#embed-show-hide span.show-hide").click(function() {
			
      //IE8 Toggle fix
      $("#embed tr.embed-options").each(function (i, elem) {
				$(elem).toggle($(elem).css('display') == 'none');
			});
	    $("#embed-show").each(function (i, elem) {
        $(elem).toggle($(elem).css('display') == 'none');
			});
	    $("#embed-hide").each(function(i, elem) {
				$(elem).toggle($(elem).css('display') == 'none');
			});
	  });
    
    $("#embed-passage").bind("blur keyup", function (e) {
      if (e.type == "keyup" && e.keyCode != 13) {return;}
				if (embed_passage.passage_reference != $("#embed-passage").attr('value')) {
					embed_passage.get_passage($("#embed-passage").attr('value'));
					embed_passage.update_embedcode();
				}
      });
		//prevent event bubbling so clicks inside don't propagate to body and close it
		$("#embed").click(function(e) {
			e.stopPropagation();
		});
		$("li.embed a").click(function(e) {
			//don't propagate out to body, which we're adding an event to
			e.stopPropagation();
			embed_passage.toggle($(this));
			//don't follow the link
			return false;
		});
    $("#embed-link, #embed-embed").bind("click", function() {
      $(this).select();
    });
    //make sure the initial content matches the formatting options selected
    update_embed_texts();
	});
}

function embed_help_window() {
	window.open("/help/embed.html", "BGEmbedHelp","width=400,height=500,resizeable=yes,scrollbars=yes,toolbar=no,status=yes");
	return false;
}

function redirect(url) {
  window.location = url;
}
////////////////////////////////////////////////////////////
// COOKIE HANDLER
////////////////////////////////////////////////////////////
function AdPrefs() {
  this.data = {};
  var full_cookie = document.cookie.split('; ');
  for(var i = 0;i< full_cookie.length;i++) {
    if (full_cookie[i].substr(0,11) == "BG_AD_PREFS") {
      this.data = JSON.parse(unescape(full_cookie[i].substr(12)));
      break;
    }
  }
  this.save = function(name, value) {
    adPrefs.data[name] = value;
    var cookie_data = escape(JSON.stringify(adPrefs.data));
    var futureDate = new Date();
    futureDate.setTime(futureDate.getTime()+(24*60*60*1000)); // +24 hours
    document.cookie = "BG_AD_PREFS="+cookie_data+"; expires="+futureDate.toGMTString()+"; path=/";
  }
} 
var adPrefs = new AdPrefs();

function setUpdatePrefs(key,value) {
	// add/update new key and value to prefs array
    prefs[key] = value;
	
	var rgx_multival, psversion, pssearch, ksversion, kssearch;
    var cookieprefs = '';

	// match preferences with multiple values.
	rgx_multival = new RegExp("^(pslookup|keysearch)_(search|version)(\\d+)");

    // build string of prefs to store in cookie
    for (key in prefs) {
		if (key.match(rgx_multival)) { // multiple value key
			var item = key.substring(0, key.length-1); 
			var newval = item+'@'+prefs[key];
			
			switch (item) {
				case 'pslookup_search':
					if (pssearch) {pssearch += '>'+prefs[key];} 
					else { pssearch = newval; } break;
				case 'pslookup_version':
					if (psversion) {psversion += '>'+prefs[key];}
					else { psversion = newval; } break;
				case 'keysearch_search':
	         		 if (cookieprefs) { cookieprefs += '&'; }
				     cookieprefs += item+'@'+prefs[key]; break;
				case 'keysearch_version':
					if (ksversion) {ksversion += '>'+prefs[key];}
					else { ksversion = newval; } break;
			}
		} else {
	         if (cookieprefs) { cookieprefs += '&'; }
		     cookieprefs += key+'@'+prefs[key];
		}
    }
	cookieprefs += '&'+pssearch+'&'+psversion+'&'+kssearch+'&'+ksversion;

    // set cookie
    var futureDate = new Date(); // initialise Date object
    futureDate.setYear(futureDate.getFullYear()+10); // advance by 10 year
    document.cookie = "BG_PREFS=" + cookieprefs + ";expires=" + futureDate + 
					  ";path=/";
}


////////////////////////////////////////////////////////////
// SHOW & HIDE OPTION INFO
// To populate info div with info about an option button
////////////////////////////////////////////////////////////
function ShowOptionInfo(text1,text2) {
	var newtext = "<strong>"+text1+"</strong> &raquo; "+text2;
        document.getElementById('result-options-info').innerHTML = newtext;
}
function HideOptionInfo() {
	document.getElementById('result-options-info').innerHTML = '&nbsp;';
}


////////////////////////////////////////////////////////////
// SHOW & HIDE OPTION INFO FOR SECOND OPTIONS DIV
// To populate info div with info about an option button
////////////////////////////////////////////////////////////
function ShowOptionInfo2(text1,text2) {
	var newtext = "<strong>"+text1+"</strong> &raquo; "+text2;
        document.getElementById('result-options-info2').innerHTML = newtext;
}
function HideOptionInfo2() {
	document.getElementById('result-options-info2').innerHTML = '&nbsp;';
}


////////////////////////////////////////////////////////////
// SHOW/HIDE
// To show/hide page sections
////////////////////////////////////////////////////////////
function ExpandSection(id)
{
        document.getElementById(id+'-open').style.display = "block";
        document.getElementById(id+'-closed').style.display = "none";
        setUpdatePrefs(id,"open");
}
function CollapseSection(id)
{
        document.getElementById(id+'-open').style.display = "none";
        document.getElementById(id+'-closed').style.display = "block";
        setUpdatePrefs(id,"closed");
}

////////////////////////////////////////////////////////////
// SET WHOLE WORDS ONLY (KEYWORD SEARCH)
// Enable or disable the "whole words only" checkbox based
// on if the searchtype is word or phrase based.
////////////////////////////////////////////////////////////
function SetKeysearchWholewordsonly(searchtype) {
	if (searchtype=='phrase') { 
		document.getElementById('wholewordsonly').disabled=true;
		document.getElementById('wholewordsonlytext').style.color='#bbb';
	} else { 
		document.getElementById('wholewordsonly').disabled=false;
		document.getElementById('wholewordsonlytext').style.color='#336';
	}
}

////////////////////////////////////////////////////////////
// SET LIMIT SEARCH OPTIONS (KEYWORD SEARCH)
// Enable or disable the text/dropdowns of limiting items
// that are not checked.
////////////////////////////////////////////////////////////
function SetKeysearchLimitoptions(limitoptions) {
    var el;
	if (limitoptions=='none') { 
		(el = document.getElementById('limit-bookset-dropdown'))
            ? el.disabled=true : '';
		(el = document.getElementById('limit-span-begin'))
            ? el.disabled=true : '';
		(el = document.getElementById('limit-span-end'))
            ? el.disabled=true : '';
		(el = document.getElementById('limit-none-label'))
            ? el.style.color='#336' : '';
		(el = document.getElementById('limit-bookset-label'))
            ? el.style.color='#bbb' : '';
		(el = document.getElementById('limit-span-label'))
            ? el.style.color='#bbb' : '';
	} else if (limitoptions=='bookset') { 
		(el = document.getElementById('limit-bookset-dropdown'))
            ? el.disabled=false : '';
		(el = document.getElementById('limit-span-begin'))
            ? el.disabled=true : '';
		(el = document.getElementById('limit-span-end'))
            ? el.disabled=true : '';
		(el = document.getElementById('limit-none-label'))
            ? el.style.color='#bbb' : '';
		(el = document.getElementById('limit-bookset-label'))
            ? el.style.color='#336' : '';
		(el = document.getElementById('limit-span-label'))
            ? el.style.color='#bbb' : '';
	} else {
		(el = document.getElementById('limit-bookset-dropdown'))
            ? el.disabled=true : '';
		(el = document.getElementById('limit-span-begin'))
            ? el.disabled=false : '';
		(el = document.getElementById('limit-span-end'))
            ? el.disabled=false : '';		
		(el = document.getElementById('limit-none-label'))
            ? el.style.color='#bbb' : '';
		(el = document.getElementById('limit-bookset-label'))
            ? el.style.color='#bbb' : '';
		(el = document.getElementById('limit-span-label'))
            ? el.style.color='#336' : '';
	}
}

////////////////////////////////////////////////////////////
// BUILD JAVASCRIPT PART OF LINK FOR POPUP WINDOW
// Requires a destination and terms to build the link.
// Popup page should parse the destination and terms.
////////////////////////////////////////////////////////////
function InfoPopup(url) {
	window.open (url,'Info','resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, width=300, height=300');
	return false;
}

////////////////////////////////////////////////////////////
// (DIS)ABLE LANGUAGE OPTIONS ON /PREFERENCES PAGE
// (Dis)ables the languages and their input boxes when 
// "use all languages" is selected (for clarity)
// Accepts "active" or "disabled"
////////////////////////////////////////////////////////////

function setLanguageOptsDisabledState(disabledState) { 
	// SET SETTINGS
	if (disabledState=='disabled') {
		var inputState='disabled';
		var color='#ccc';
	} else {
		var inputState='';
		var color='#336';
	}
	// DO THE INPUTS
	var allInputs = new Array();
	var allInputs = document.getElementsByTagName('input');  
	for (i=0; i<allInputs.length; i++) { 
		if (allInputs[i].className=='languageOpt') { 
			allInputs[i].disabled=inputState;
		} 
	} 
	// DO THE TEXT
	var allTds = new Array();
	var allTds = document.getElementsByTagName('td');
	for (i=0; i<allTds.length; i++) { 
	if (allTds[i].className=='languageOpts') { 
			allTds[i].style.color=color;
		} 
	}
}

function enableOption(ids) {
	for (i=0; i<ids.length; i++) { 
		 alert(ids[i]);
		 document.getElementsByID(ids[i]).checked='checked';  
	}	 
}
// -->
