
//#-----------------  Globals ------------------------------>
// Name space definitions
var cdm = cdm ? cdm : {};
cdm.util = cdm.util ? cdm.util : {};
cdm.api = cdm.api ? cdm.api : {};
cdm.ugc = cdm.ugc ? cdm.ugc : {};
cdm.gvars = cdm.gvars ? cdm.gvars : {};
cdm.viewUpdater = cdm.viewUpdater ? cdm.viewUpdater : {};
cdm.viewUpdater.viewPrefix = "img_view_";

cdm.gvars.browseLink = 0;
cdm.gvars.itemcollection;
cdm.gvars.collection = "";
cdm.gvars.collectionLink = "";
cdm.gvars.addThisDefaults = "email, digg, delicious, facebook, myspace, twitter, twitthis, google, live, stumbleupon, friendster, more";
cdm.gvars.collectionFieldsInfo = new Array();
cdm.gvars.dublinFieldsInfo = new Array();
cdm.gvars.collectionsOn = 0;
cdm.gvars.activeCollection = "";
cdm.gvars.protocol = "http://";
cdm.gvars.qvItem;
cdm.gvars.qvBGColor;
cdm.gvars.qvBorderColor;
var fullTextSearchTerm = "";
cdm.gvars.flashKill = true;
cdm.gvars.itemViewerDefaultHeight = 464;
cdm.gvars.itemViewerOldHeight = 464;
cdm.gvars.itemViewerDiff = 0;

cdm.util.ConsoleLogger = function(msg){
  if(typeof console !== 'undefined') {
    console.log(msg);
  }
}
cdm.util.hasEvent=function(elem,event){
  if(typeof $(elem)[0]=='undefined'){
    return false;
  } else {
    if($.data($(elem).get(0),'events')==null){
      return false;
    } else if(typeof $.data($(elem).get(0),'events')=='undefined'){
      return false;
    } else if(typeof $.data($(elem).get(0),'events')[event]=='undefined'){
      return false;
    } else {
      return true;
    }
  }
}
cdm.util.ajaxErrorAlerts = function(errMsg,a,b,c){
  if($("#cdm_language_"+errMsg).exists()){
    //change to dialog
    theerrmsg = $("#cdm_language_"+errMsg).val();
    if(theerrmsg.indexOf("\\n") > -1){
      nm = "";
      msgparts = theerrmsg.split("\\n");
      for(m=0;m<msgparts.length;m++){
        nm = nm + $.trim(msgparts[m]) + "\n";
      }
      alert(nm);
    } else {
      alert(theerrmsg);
    }
  } else if( a == "alert") {
    //change to dialog
    alert(errMsg);
  } else {
    cdm.util.ConsoleLogger(errMsg);
  }
  cdm.util.ConsoleLogger(a + " | " + b + " | " + c);
}

cdm.util.killFlash = function(){
  if($("#flash_wrapper").exists() && cdm.gvars.flashKill){
    cdm.util.ConsoleLogger("flash kill - " + cdm.gvars.flashKill);
    $("#flash_wrapper").html("unloading...");
  } else {
    cdm.util.ConsoleLogger("NO flash kill - " + cdm.gvars.flashKill);
  }
  cdm.gvars.flashKill = true;
}

cdm.util.hidePDF = function(){
 //cdm.util.ConsoleLogger("hidePDF: got here - " + cdm.api.SingleItem.itemmapsto);
  if($("#cdm_view").exists()){
    v = $("#cdm_view").val();
    if(v == "singleitem" || v == "compoundobject"){
      if(cdm.api.SingleItem.itemmapsto  == "pdf"){
        if ($("#itemViewer").css("height") != "0px")
            {
                cdm.gvars.itemViewerHeight = $("#itemViewer").css("height");
            }
        $("#itemViewer").css("height","0");
      }
    }
  }
}

var dd_flags = [];

var lang_content_focus = false;
var lang_link_focus = false;
var nav_top_right_language_dd_open = false;

var print_button_options_dd_open = false;
var print_button_options_content_focus = false;
var print_button_options_link_focus = false;
var download_button_options_dd_open = false;
var download_button_options_content_focus = false;
var download_button_options_link_focus = false;

var browse_content_focus = false;
var browse_link_focus = false;
var nav_top_left_browse_dd_open = false;

dd_flags["search_sort_by_content_focus"] = false;
dd_flags["search_sort_by_link_focus"] = false;
dd_flags["search_sort_by_dd_open"] = false;

dd_flags["search_display_content_focus"] = false;
dd_flags["search_display_link_focus"] = false;
dd_flags["search_display_dd_open"] = false;

dd_flags["search_results_content_focus"] = false;
dd_flags["search_results_link_focus"] = false;
dd_flags["search_results_dd_open"] = false;

dd_flags["favorites_content_focus"] = false;
dd_flags["favorites_link_focus"] = false;
dd_flags["favorites_dd_open"] = false;

var img_view_search_box_open = false;

var search_box_width = 0;
var link_bar_height = 17;
var icon_width = 26;

//#-----------------  Generic functions ------------------>
jQuery.fn.exists = function(){return jQuery(this).length>0;}

function window_scroll_to_selector(selector)
{
	//var y = ($(selector).offset().top - window.innerHeight + 100) + "px";
  var y = ($(selector).offset().top - 50) + "px";
  $(window).scrollTo( {top:y, left:'0px', easing:'swing'}, 800 );
}

function get_sprite_coords_w_offset(background_pos_css, delta_x, delta_y)
{
	var coords = background_pos_css.split(" ");
	var x = Number(coords[0].split("p")[0]) + delta_x;
	var y = Number(coords[1].split("p")[0]) + delta_y;
	return (x + "px " + y + "px");
}

//#-----------------  Skeleton functions ------------------>
function get_ntr_lang_margin_left()
{
	return "-" + ($("#nav_top_right_language_dd_container").width() - $("#nav_top_right_language_dd_link").width() - 25) + "px";
}

//#-----------------  Single Item functions ------------------>

//#-----------------  Drop Down functions ------------------>
function close_dd_content(name)
{
	$("#" + name + "_dd_content").slideUp(200);
	$("#" + name + "_dd_link").removeClass(name + "_dd_link_hover");
	eval("dd_flags['" + name + "_dd_open'] = false;");
	$("#" + name + "_dd_link").blur();
	if(name == "search_sort_by") // fix for special case where dd overlaps another
		$("#search_display_dd_container").show();

//  if(name == "print_button_options" && $("#cdm_item_type").val() == "pdf" && $.browser.msie){
//    theTop = cdm.gvars.imageViewContainerOffset.top;
//    $("#img_view_container").offset({top: theTop});
//  }
  if(($("#cdm_item_type").val() == "pdf" || $("#cdm_item_type").val() == "pdfpage") && ($.browser.msie || $.browser.safari)){
        $("#itemViewer").css("height",cdm.gvars.itemViewerHeight);
  }
}

function open_dd_content(name)
{
//  if(name == "print_button_options" && $("#cdm_item_type").val() == "pdf" && $.browser.msie){
//    theTop = cdm.gvars.imageViewContainerOffset.top + 80;
//    $("#img_view_container").offset({top: theTop})
//  }
  if(($("#cdm_item_type").val() == "pdf" || $("#cdm_item_type").val() == "pdfpage") && ($.browser.msie || $.browser.safari)){
    cdm.util.hidePDF();
  }
	$("#" + name + "_dd_content").slideDown(300);
	eval("dd_flags['" + name + "_dd_open'] = true;");

	if(!($.browser.msie && $.browser.version == "7.0"))
		$("#" + name + "_dd_link").addClass(name + "_dd_link_hover");

	if(name == "search_sort_by") // fix for special case where dd overlaps another
		$("#search_display_dd_container").hide();
}

function dd_link_mouseover()
{
	var dd_name = $(this).attr("id").split("_dd_link")[0];
	dd_flags[dd_name + "_link_focus"] = true;
	//open_dd_content(dd_name);
}
function dd_link_mouseout()
{
	var dd_name = $(this).attr("id").split("_dd_link")[0];
	setTimeout("if(dd_flags['" + dd_name + "_content_focus'] == false) close_dd_content('" + dd_name + "');", 500);
	dd_flags[dd_name + "_link_focus"] = false;
}
function dd_content_mouseover()
{
	var dd_name = $(this).attr("id").split("_dd_content")[0];
	dd_flags[dd_name + "_content_focus"] = true;
}
function dd_content_mouseout()
{
	var dd_name = $(this).attr("id").split("_dd_content")[0];
	setTimeout("if(dd_flags['" + dd_name + "_link_focus'] == false) close_dd_content('" + dd_name + "');", 500);
	dd_flags[dd_name + "_content_focus"] = false;
}

function create_dd(dd_name)
{
	if($("#" + dd_name + "_dd_link").exists())
	{
		$(function() {
			config = {
			 sensitivity: 3,
			 interval: 50,
			 over: dd_link_mouseover,
			 timeout: 200,
			 out: dd_link_mouseout
			};
			var lang_link = $("#" + dd_name + "_dd_link").hoverIntent( config );

			config.sensitivity = 1;
			config.interval = 0;
			config.over = dd_content_mouseover;
			config.out = dd_content_mouseout;
			$("#" + dd_name + "_dd_content").hoverIntent( config );

			$("#" + dd_name + "_dd_link").click(function() {
				if(!dd_flags[dd_name + "_dd_open"]) open_dd_content(dd_name);
				else close_dd_content(dd_name);
			});
		});

		if($(".dd_option").exists())
		{
			$(".dd_option").hover(function(){$(this).addClass("dd_option_hover")},
																							function(){$(this).removeClass("dd_option_hover")});

			$(".dd_option").click(function(){
				var dd_link_id = "#" + $(this).parent().attr("id").split("_dd_")[0] + "_dd_link_text";

				$(dd_link_id).html($(this).html());
				$(this).parent().slideUp(200);
			});
		}
	}
}


//#-----------------  Button functions ------------------>
function button_mouseover(name, button)
{
	$(button).addClass(name + "_button_hover");
	$(button).find("span." + name + "_button_icon").addClass(name + "_button_icon_hover");
}

function button_mouseout(name, button)
{
	$(button).removeClass(name + "_button_hover");
	$(button).find("span." + name + "_button_icon").removeClass(name + "_button_icon_hover");
}

//#-----------------  Accordion functions ------------------>
function open_accordion_section(name, heading)
{
	$("#" + name + "_accordion h3").each(function(){
		if(!$(this).hasClass("accordion_header_closed"))
			$(this).click();
	});

	$(".accordion_window").hide();
	$("#" + name + "_accordion_" + heading + "_link").click().next().show(200);
}

function cdm_accordion_ini(accordion, active)
{
	if(active)
	{
		accordion.find("span.ui-icon").addClass("accordion_header_icon accordion_header_icon_closed");
		accordion.find("h3:first span.ui-icon:first").removeClass("accordion_header_icon_closed").addClass("accordion_header_icon_open");
	}
	else {
		accordion.find("h3.ui-accordion-header").removeClass("accordion_header_open").addClass("accordion_header_closed").find("span.ui-icon").addClass("accordion_header_icon accordion_header_icon_closed");
  }
}
function cdm_reset_accordion_tabindexes(){
  $("h3.accordion_header").each(function(){
    $(this).attr("tabindex",$(this).attr("thetabindex"));
  });
  //accordion.find("h3.ui-accordion-header").attr("tabindex",$(this).attr("thetabindex"));
  //var kids = $("#suggested_search_terms").first('ul').find('li');
}
//#-----------------  Dialog functions ------------------>
var dialogOpts = {
	draggable: true,
	width: 490,
	autoOpen: false,
  modal: true
};

function create_new_dialog(name, dialogOpts)
{
        if($("#" + name + "_link").exists())
	{
            var x = $("#" + name + "_link").offset().left - icon_width;
            var y = $("#" + name + "_link").offset().top + link_bar_height - window.scrollY; // adding scrollY to fix position bug
            if(name == "print_subset"){
              y=0;
            }

        if($.browser.msie)
        {
            y = $("#" + name + "_link").offset().top + link_bar_height - document.documentElement.scrollTop;
        }
          if(name == "login" || name == "report_abuse"){
            if(dialogOpts.position[1] != 0){
               dialogOpts.position[1] = [y];
            }
            if(dialogOpts.position[0] != 0){
               dialogOpts.position[0] = [x];
            }
          } else {
            dialogOpts.position = [x, y];
          }
            var thisDialog = $("#" + name + "_dialog").dialog(dialogOpts);

            init_dialog_css(thisDialog);
            if(name != "ratings"){
              $("#" + name + "_dialog").dialog("open");
            }
	}
}

function init_dialog_css(dialog)
{
	var dialog_title_bar = dialog.prev();
	dialog_title_bar.parent().addClass("dialog");
	dialog_title_bar.addClass("dialog_title_bar");
	dialog_title_bar.find("span:first").addClass("dialog_title_bar_title");
	dialog_title_bar.find("a:first").addClass("dialog_title_bar_close_link");

  var closingSpan = dialog_title_bar.find("a:first").html();
  closeText = $("#cdm_language_close").val();
  if(closingSpan.indexOf(closeText) == -1) {
    closingSpan = closeText + closingSpan;
    dialog_title_bar.find("a:first").html(closingSpan);
  }
	dialog_title_bar.find("a:first span:first").addClass("dialog_title_bar_close_link_inner").addClass("float_right");
  if(dialog.selector == "#display_options_dialog"){
    dialog_title_bar.find("a:first").attr("tabindex",cdm.api.Results.displayOptionsTabIndexEsc);
  }
	dialog.addClass("dialog_content");
	$(".ui-dialog").css("position", "absolute");
	// do not delete - code for resizer
	//dialog_title_bar.parent().find("div[class*='gripsmall']").addClass("dialog_content_resizable_handle");
}

	//#  Nav Top Right Language Drop Down functionality ---------->
	function lang_link_mouseover()
	{
		lang_link_focus = true;
		open_dd_content('nav_top_right_language');
	}
	function lang_link_mouseout()
	{
		setTimeout("if(lang_content_focus == false) close_dd_content('nav_top_right_language');", 1000);
		lang_link_focus = false;
	}
	function lang_content_mouseover()
	{
		lang_content_focus = true;
	}
	function lang_content_mouseout()
	{
		setTimeout("if(lang_link_focus == false) close_dd_content('nav_top_right_language');", 1000);
		lang_content_focus = false;
    //if(nav_top_right_language_dd_open) {
    //  nav_top_right_language_dd_open = false;
    //}
	}



	function languageSelectRedir(item){
    close_dd_content("nav_top_right_language");
    cdm.util.killFlash();
    var lg = "/lang/";
    var windowPath = window.location.pathname;
    if(windowPath == $("#collectionHomeUrl").val()){
      lg = "index/lang/";
    } else if(windowPath.substring(windowPath.length - 1) == "/"){
      lg = "lang/";
    }
    if(windowPath.indexOf("lang") > -1){
      windowPath = window.location.pathname.substring(0,window.location.pathname.indexOf("lang"));
      lg = "lang/";
    }
    window.location.href = windowPath + lg + $(item).attr("lang");
  }

function makeUnderConstructionDialog(item){
  var x = $(item).offset().left - 0;
  var y = $(item).offset().top + 0 - window.scrollY;
    if($.browser.msie) {
      y = $(item).offset().top + 0 - document.documentElement.scrollTop;
    }
  var dialogOpts = {
    modal: true,
    position: [x, y],
    draggable: true,
    width: 406,
    autoOpen: false,zIndex: 99999
  };
  var under_construction_dialog = $("#under_construction_dialog").dialog(dialogOpts);
  init_dialog_css(under_construction_dialog);
	$("#under_construction_dialog").dialog("open");
}

function submit_login(){
      var msg = "";
      if ($("#login_username").val() == "")
          {
              msg += $("#cdm_language_error_nousernameentered").val()+"\n";
          }
       if ($("#login_password").val() == "")
          {
              msg += $("#cdm_language_error_nopasswordentered").val()+"\n";
          }
       if (msg != "")
           {
               alert(msg);

               return;
           }


        var thisUsername = $("#login_username").val();
        thisUsername = thisUsername.replace("\\", "\\\\");
        var thisPassword = $("#login_password").val();
        var thisData = '{"username":"'+thisUsername+'", "password":"'+thisPassword+'"}';

    thisData = Base64.encode(thisData)

        $("#login_content").html("\n\
    <div style='text-align:center;vertical-align:middle;'>\n\
    <br/><br/>"+cdm.gvars.authenticatingText+"<br/>\n\
    <img id='login_loader_gif' src='/ui/cdm/default/collection/default/images/ajax_loader_small_blue_on_white_trans.gif'/>\n\
    </div>");


    $.ajax({
          url: "/utils/auth",
          global: false,
          type: "POST",
          data: {'data': thisData},
          dataType: "json",
          success: function(msg){
                    var response = msg;
                    var realResponse = jQuery.parseJSON(Base64.decode(response.data));
                    //TODO: Parse Response
                    authParseResponse(realResponse)
                }
        });

    }

function authParseResponse(thisResponse){
    if(thisResponse.error==""){
       login_succeeded(thisResponse);
    }else{
       login_failed(thisResponse);

    }
    //

}


function login_succeeded(thisResponse){
    //session_auth(username);
    $("#currentUser").html(thisResponse.authenticatedUser + "&nbsp;-&nbsp;");
    $("#login_link").html(cdm.gvars.logoutText);
    $("#login_link").unbind('click');
    $("#login_link").click(function() {
        submit_logout();
      });
    $("#login_dialog").dialog("destroy");
}

function login_failed(thisResponse){
    //session_auth(username);
    $("#login_loader_gif").remove();
    cdm.util.ajaxErrorAlerts(thisResponse.msg,"","","");

     $("#login_dialog").html('\
        <div id="login_content">\
        <div style="margin-top:8px;">'+cdm.gvars.usernameText+':</div>\
        <input type="text" class="login_text_box" name="login_username" id="login_username" value="" />\
        <br /><br />\
        <div>'+cdm.gvars.passwordText+':</div>\
        <input type="password" class="login_text_box" name="login_password" id="login_password" value="" />\
        <br />\
        <div align="right">\
            <input id="login_cancel_button" type="button" value="'+cdm.gvars.cancelText+'" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input  type="button" id="login_submit_button"  value="'+cdm.gvars.loginText+'" /></div></div>');
        $("#login_cancel_button").click(function() {
            $("#login_dialog").dialog('destroy');
            });

            $("#login_submit_button").click(function() {
                submit_login();
            });

            $('#login_password').keydown(function(event) {
            if (event.keyCode == '13') {
                submit_login();
            }
        });
}

function submit_logout(){
    $("#currentUser").html("");
    $("#login_link").html(cdm.gvars.loginText);
    $("#login_link").unbind('click');
    $("#login_link").bind('click',function(){
        dialogOpts.width = 406;
        dialogOpts.position = [5,5];
        dialogOpts.autoOpen = false;
        create_new_dialog("login", dialogOpts);
        $("#login_dialog").html('\
        <div id="login_content">\
        <div style="margin-top:8px;">'+cdm.gvars.usernameText+':</div>\
        <input type="text" class="login_text_box" name="login_username" id="login_username" value="" />\
        <br /><br />\
        <div>'+cdm.gvars.passwordText+':</div>\
        <input type="password" class="login_text_box" name="login_password" id="login_password" value="" />\
        <br />\
        <div align="right">\
            <input id="login_cancel_button" type="button" value="'+cdm.gvars.cancelText+'" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input  type="button" id="login_submit_button"  value="'+cdm.gvars.loginText+'" /></div></div>');
        $("#login_cancel_button").click(function() {
            $("#login_dialog").dialog('destroy');
            });

            $("#login_submit_button").click(function() {
                submit_login();
            });

            $('#login_password').keydown(function(event) {
            if (event.keyCode == '13') {
                submit_login();
            }
        });
    });
    session_deauth();
}

//DEBUG FUNCTIONS
function session_auth(u){
    if($("#sessionDiv").exists())
        {
            $("#sessionDiv").remove();
        }
    var $debugDiv = $('<div/>');
	$debugDiv.attr("id", "sessionDiv");
        $("body").append($debugDiv);
        $('#sessionDiv').css("display", "none");

     var $tempIframe = $('<iframe/>');
	$tempIframe.attr("id", "tempIframe");
  	$tempIframe.attr("src", "/utils/authset?u=" + Base64.encode(u));
        $("#sessionDiv").append($tempIframe);
}

function session_deauth(){
    if($("#sessionDiv").exists())
        {
            $("#sessionDiv").remove();
        }
    var $debugDiv = $('<div/>');
	$debugDiv.attr("id", "sessionDiv");
        $("body").append($debugDiv);
        $('#sessionDiv').css("display", "none");

     var $tempIframe = $('<iframe/>');
	$tempIframe.attr("id", "tempIframe");
  	$tempIframe.attr("src", "/utils/authkill");
        $("#sessionDiv").append($tempIframe);
}


//function session_check(input){
//        var x = "";
//        //x += "<r><![CDATA[";
//        //input = input.replace(/\n\r?/g, "\")
//        x += input;
//        //x += "]]></r>OOO";
//
//        var f = (x).toString();
//    alert(f);
//}



$(document).ready(function(){
  cdm.gvars.loginText = $("#cdm_language_login").val();
  cdm.gvars.logoutText = $("#cdm_language_logout").val();
  cdm.gvars.usernameText = $("#cdm_language_username").val();
  cdm.gvars.passwordText = $("#cdm_language_password").val();
  cdm.gvars.cancelText = $("#cdm_language_cancel").val();
  cdm.gvars.okText = $("#cdm_language_ok").val();
  cdm.gvars.authenticatingText = $("#cdm_language_authenticating").val();
  if($("li a#search_results_dd_link").exists()){
    sbwidth = $("#search_content_box.search_content_box_results").width();
    sbdropwidth = $("li a#search_results_dd_link").width()
    if(sbdropwidth > 81){
      diffwidth = (sbdropwidth - 81) + 2;
      $("#search_content_box.search_content_box_results").css("width", sbwidth - diffwidth);
    }
  }
  var loc = new String(window.document.location);
  if(loc.indexOf("https://") != -1){
    cdm.gvars.protocol = "https://";
  }
//#:::::::::::::::::::::::::::::::::::::::  Initialization :::::::::::::::::::::::::::::::::::::::-->
	$("#nav_top_right_language_dd_content").css("display", "block").hide();
	$("#nav_top_left_browse_dd_content").css("display", "block").hide();

	if($("#search_sort_by_dd_content").exists())
		$("#search_sort_by_dd_content").css("display", "block").hide();

	if($("#search_display_dd_content").exists())
		$("#search_display_dd_content").css("display", "block").hide();

  //if($("#search_results_button").exists())
	//	$("#searchbox_mode").css("display", "block").hide();

	if($("#favorites_dd_content").exists())
		$("#favorites_dd_content").css("display", "block").hide();

	//$(".nav_li").find("span:first").hide();
	$("#details_accordion .accordion_window").css("overflow", "visible");

	if($.browser.msie) // all ie browsers
	{
	}
	else if(!$.browser.mozilla) // not mozilla browsers
	{
	}
	else if($.browser.mozilla && navigator.appVersion.indexOf("Mac")!=-1) // firefox on mac
	{
	}

	if($.browser.msie && $.browser.version == "7.0") // ie7
	{
		$("#nav_top_right_language_dd_link").css("padding-top", "0");
		$(".link_bar_link").css("padding", "3px 34px 0 3px");
		//$("#link_bar_content").css("height", "15px");
		//$("#link_bar_content").css("overflow", "hidden");
		$("#download_button").css("margin-right", "5px");

		if($(".ui-tabs").exists())
		{
			$(".ui-tabs").css("position", "relative").css("padding", ".2em").css("zoom", "1");
			$(".ui-tabs .ui-tabs-nav").css("margin", "0").css("padding", ".2em .2em 0");
		}
    if($("#full_text_container").exists()){
      $("#full_text_container").css("height", $("#full_text_container").height()+"px");
    }
	}
	else if($.browser.msie && $.browser.version == "8.0") // ie8
	{
		//$("#search_content_adv_link").css("padding", "0 0 0 70px");
	}

  if($("#cdm_collection").exists()){
    cdm.gvars.collection = $("#cdm_collection").val();
    if(cdm.gvars.collection.length > 0) {
      cdm.gvars.collectionLink = "/collection/" + cdm.gvars.collection;
    }
  }

	////////////////////////////////////////////////////////////////
	// SETS HOVER BEHAVIOR FOR ALL BUTTONS
	if($(".button_table").exists())
	{
		$(".button_table").hover(function(){
			var button = $(this).parent();

			if(!button.hasClass("pagination_button_active") && !button.hasClass("secondary_button_disabled"))
			{
				var name = button.attr("button_type");
				button_mouseover(name, button);
			}
		}, function(){
			var button = $(this).parent();

			if(!button.hasClass("pagination_button_active") && !button.hasClass("secondary_button_disabled"))
			{
				var name = button.attr("button_type");
				button_mouseout(name, button);
			}
		});
	}

	////////////////////////////////////////////////////////////////
	// CLOSE ANY DIALOG
	$(".dialog_ok_button, .dialog_cancel_button").click(function() {
		$(this).parents("div.ui-dialog-content").dialog("close");
	});

//# language menu ------------------------------------------------------------------------------------------------------->
  if($("#nav_top_right_language_dd_link").exists())
	{
		$(function() {
			var config = {
			 sensitivity: 3, 						// number = sensitivity threshold (must be 1 or higher)
			 interval: 500, 						// number = milliseconds for onMouseOver polling interval
			 over: lang_link_mouseover, // function = onMouseOver callback (REQUIRED)
			 timeout: 200, 							// number = milliseconds delay before onMouseOut
			 out: lang_link_mouseout 		// function = onMouseOut callback (REQUIRED)
			};
			var lang_link = $("#nav_top_right_language_dd_link").hoverIntent( config );

			config.sensitivity = 1;
			config.interval = 0;
			config.over = lang_content_mouseover;
			config.out = lang_content_mouseout;
			$("#nav_top_right_language_dd_content").hoverIntent( config );

			$("#nav_top_right_language_dd_link").click(function() {
				if(!nav_top_right_language_dd_open) {
          open_dd_content("nav_top_right_language");
          nav_top_right_language_dd_open=true;
        } else {
          nav_top_right_language_dd_open=false;
          close_dd_content("nav_top_right_language");
        }

			});

			$("#nav_top_right_language_dd_container").css("margin-left", get_ntr_lang_margin_left());
		});
		if($(".language_option").exists()) {
			$(".language_option").hover(function(){
          $(this).addClass("language_option_hover")},
				function(){
          $(this).removeClass("language_option_hover")
        }).click(function(){
          languageSelectRedir(this);
        }).keypress(function(event){
          if(event.keyCode == '13') {
            languageSelectRedir(this);
          }
      });
    }
	}


//# search ------------------------------------------------------------------------------------------------------->
	if($(".search_content_button").exists())
		$(".search_content_button").hover(function(){$(this).addClass("search_content_button_hover")},
																						function(){$(this).removeClass("search_content_button_hover")});
//# Login Dialog --------------->
    if($("#login_link").exists()){
        if($("#login_link").html() == $("#cdm_language_login").val()){
            $("#login_link").bind('click',function(){
                dialogOpts.width = 406;
                dialogOpts.position = [5,5];
                dialogOpts.autoOpen = false;
                create_new_dialog("login", dialogOpts);
                 $("#login_dialog").html('\
                <div id="login_content">\
                    <div style="margin-top:8px;">Username:</div>\
                    <input type="text" class="login_text_box" name="login_username" id="login_username" value="" />\
                    <br /><br />\
                    <div>Password:</div>\
                    <input type="password" class="login_text_box" name="login_password" id="login_password" value="" />\
                    <br />\
                    <div align="right">\
                        <input id="login_cancel_button" type="button" value="Cancel" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input  type="button" id="login_submit_button"  value="Login" />\
                    </div>\
                </div>');
                $("#login_cancel_button").click(function() {
                   //$("#login_dialog").dialog("close");
                   $("#login_dialog").dialog('destroy');
                 });


                $("#login_submit_button").click(function() {
                    submit_login();
                });

                $('#login_password').keydown(function(event) {
                  if (event.keyCode == '13') {
                        submit_login();
                  }
                });
            });
        }else{
            $("#login_link").click(function() {
                submit_logout()
            });
        }
    }




//# link bar ----------------------------------------------------------------------------------------------------->
	if($("#link_bar").exists())
	{
		$(".link_bar_text").hover(function(){
      $(this).addClass("link_bar_text_hover");
      if(!$(this).find("span:first").hasClass("at300bs")){
        $(this).find("span:first").addClass("icon_link_bar_hover");
      }
    },
	    function(){$(this).removeClass("link_bar_text_hover").find("span:first").removeClass("icon_link_bar_hover")
    });

//# Reference URL Dialog --------------->
    if($("#reference_url_link").exists()){
      $("#reference_url_link").click(function(){
		    dialogOpts.width = 630;
        dialogOpts.zIndex = 99999;
		    create_new_dialog("reference_url", dialogOpts);
      });
    }
    if($("#reference_url_link_compobj").exists()){
      $("#reference_url_link_compobj").click(function(){
		    dialogOpts.width = 630;
        dialogOpts.zIndex = 99999;
		    create_new_dialog("reference_url", dialogOpts);
      });
    }

//# Favorites Dialog --------------->
    if($("#exportaspage_button").exists()){
      $("#exportaspage_button").click(function(){
        dialogOpts.width = 630;
        dialogOpts.zIndex = 99999;
        create_new_dialog("exportaspage", dialogOpts);
      });
    }


		//# Cite Dialog Accordion ------------>
		if($("#cite_dialog_accordion").exists())
		{
			var cite_dialog_accordion = $("#cite_dialog_accordion").accordion({
					header: "h3",
					collapsible: true,
					active: false,
          autoHeight: false
				});
				//cite_dialog_accordion.find("h3:first span:first").removeClass("accordion_header_icon_closed").addClass("accordion_header_icon_open");
				//cite_dialog_accordion.find("h3.ui-accordion-header").removeClass("accordion_header_open").addClass("accordion_header_closed").find("span.ui-icon").addClass("accordion_header_icon accordion_header_icon_closed");
				cdm_accordion_ini(cite_dialog_accordion, false);
		}

		//# Cite/Export Dialog --------------->
    if($("#cite_link").exists()){
      $("#cite_link").click(function(){
		    dialogOpts.width = 382;
		    create_new_dialog("cite", dialogOpts);
      });
    }
	}

//# skeleton ----------------------------------------------------------------------------------------------------->
	//# Header --------------------------->
	$("#headerWrapper").click(function() {
    if( $("#cdm_collection").val().length > 0 ){
      window.location.href = $("#collectionHomeUrl").val()+"landingpage/collection/"+$("#cdm_collection").val();
    } else {
		  window.location.href = $("#collectionHomeUrl").val();
    }
	});

	//# Nav Top Left --------------------------->
	if($("#nav_top_left_first_link").exists())
	{
    $("#nav_top_left_first_link").css("padding-left","30px");
	}

	//# Under Construction Dialog --------------->
  if($(".under_construction_link").exists()) // special case - don't use create_new_dialog();
	{
    $(".under_construction_link").each(function() { // initialize dialog
        $(this).click(function() {
          makeUnderConstructionDialog(this);
		    });
      $("#under_construction_ok_button").click(function() {
        $("#under_construction_dialog").dialog("close");
      });
	  });
  }


//# singleitem -------------------------------------------------------------------------------------------------->
	//# Details Accordion ---------------->
  if($("#details_accordion").exists())
	{

          var cdm_details_accordion = $("#details_accordion").toggleboxes({
                    header: "h3",
                    autoHeight: false,
                    active: false,
                    collapsible: true,
                    change: function(event, ui) {
                      resizeCompObjHeight();
                    }
		});
		//cdm_details_accordion.find("h3:first span:first").removeClass("accordion_header_icon_closed").addClass("accordion_header_icon_open");
    if($("#cdm_itemview_accordion_active").val() != "closed" ){
      open_accordion_section("details", $("#cdm_itemview_accordion_active").val()); // need to open default section from config
    }
    if( $("#details_accordion_codescription_link").exists() && $("#cdm_codescription").val() == "on" ){
      $("#details_accordion_" + $("#cdm_codescription_id").val() + "_link").click().next().show(200);
    }
    if($('#co-sidebar-wrapper').exists()){
      setTimeout("cdm.api.CompoundObject.setWrapperHeight()",500);
    }
  }

	$("#title_desc_bar_text_link").click(function() {
    if(!$("#details_accordion_description_link").hasClass("accordion_header_open") ){
		  open_accordion_section("details", "description");
    }
		window_scroll_to_selector("#details");
	});

	$("#link_bar_comment_link").click(function() {
    if(!$("#details_accordion_comments_link").hasClass("accordion_header_open") ){
		  open_accordion_section("details", "comments");
    }
		window_scroll_to_selector("#details");
	});

    $("#link_bar_add_tags_link").click(function() {
    if(!$("#details_accordion_add_tags_link").hasClass("accordion_header_open") ){
		  open_accordion_section("details", "add_tags");
    }
		window_scroll_to_selector("#details");
	});



  //# Cite/Export Dialog --------------->
    if($("#ratings_dialog").exists()){
		  dialogOpts.width = 382;
      cddh = dialogOpts.height
      dialogOpts.height = 200;
		  create_new_dialog("ratings", dialogOpts);
      dialogOpts.height = cddh;
    }


//# Image View w/ Text
	//# window resize functionality ---------------->
	if($("#img_view_text_container").exists())
	{
		var img_view_container_offset = 75;
		var img_view_text_container_offset = 0; //35;
		var img_view_text_content_offset = 65; //135;
		var imageDiv_offset = 135;
		var min_frame_height = 146;
		var min_content_main_height = min_frame_height + 20;
		frameHeight = $("#content_main").height();
    $("#img_view_text_container").height(frameHeight - img_view_text_container_offset);
		$("#img_view_text_content").height(frameHeight - img_view_text_content_offset);
    if($("#viewer_placeholder").exists()){
      frameHeightViewer = $("#viewer_placeholder").height();
		  $("#img_view_container").height(frameHeightViewer - img_view_container_offset);
      $("#imageDiv").height(frameHeightViewer - imageDiv_offset);
    }
		if($("#viewer_wrapper_inner").exists()){
      frameHeightViewer = $("#viewer_wrapper_inner").height();
			$("#img_view_container").height(frameHeightViewer - img_view_container_offset);
    }

		var content_main_grip_mouseover_handler = function(){$(this).addClass("content_main_grip_hover");}
		var content_main_grip_mouseout_handler = function(){$(this).removeClass("content_main_grip_hover");}
		$("#content_main_grip").mouseover(content_main_grip_mouseover_handler);
		$("#content_main_grip").mouseout(content_main_grip_mouseout_handler);

		$("#content_main").resizable({
			start: function(e, ui) {
				$("#content_main_grip").addClass("content_main_grip_hover");
				$("#content_main_grip").unbind("mouseout");
			},
			resize: function(e, ui) {
				var frameHeight = $("#content_main").height();
        $("#img_view_text_container").height(frameHeight - img_view_text_container_offset);
				$("#img_view_text_content").height(frameHeight - img_view_text_content_offset);
        //if($("#viewport").exists()){
        //  var frameHeightViewer = $("#viewport").height();
				//  $("#img_view_container").height(frameHeightViewer - img_view_container_offset);
        //  $("#imageDiv").height(frameHeightViewer - imageDiv_offset);
        //}
        if($("#viewer_wrapper_inner").exists()){
          var frameHeightViewer = $("#viewer_wrapper_inner").height();
				  $("#img_view_container").height(frameHeightViewer - img_view_container_offset);
          //$("#imageDiv").height(frameHeightViewer - imageDiv_offset);
        }
				return false;
			},
			stop: function(e, ui) {
				$("#content_main").attr("style", "");
				$("#content_main").css("height", "auto");
				$("#content_main_grip").removeClass("content_main_grip_hover");
				$("#content_main_grip").bind("mouseout", content_main_grip_mouseout_handler);
			},
			minHeight: min_frame_height
		});
	}

//# results browse all items thumbnails -------------------------------------------------------------------------->
	//# Search Results Thumbnail Accordion ------------>
	if($("#results_tn_accordion").exists())
	{
		var results_tn_accordion = $("#results_tn_accordion").accordion({
				active: false,
				header: "h3",
				collapsible: true,
				autoHeight: false
			});

			cdm_accordion_ini(results_tn_accordion, false);

	}

  $("h3.accordion_header").focus(function(){
    $(this).addClass("accordionHeaderFocusBorder");
  });
  $("h3.accordion_header").blur(function(){
    $(this).removeClass("accordionHeaderFocusBorder");
  });

	//# Search Sort By Drop Down functionality ---------->
	if($("#search_sort_by_dd_link").exists())
		create_dd("search_sort_by");

	//# Search Display By Drop Down functionality ---------->
	if($("#search_display_dd_link").exists())
		create_dd("search_display");

  if($("#reference_url_dd_link").exists())
		create_dd("reference_url");

	//# Add or remove collections highlighting ---------->
  /*
	if($(".results_tn_collection_box input").exists())
	{
		$(".results_tn_collection_box input").parents(".results_tn_collection_box").removeClass("results_tn_collection_box_checked");
		$(".results_tn_collection_box input:checked").parents(".results_tn_collection_box").addClass("results_tn_collection_box_checked");

    $(".results_tn_collection_box input").click(function () {
	    $(this).parents(".results_tn_collection_box").toggleClass("results_tn_collection_box_checked");
    });
	}
	*/
//# compound object page -------------------------------------------------------------------------->
	//# SocialLinks Favorites Drop Down functionality ---------->
	if($("#favorites_dd_link").exists())
		create_dd("favorites");


//# landing page -------------------------------------------------------------------------->
	//# imageflow REMOVE ME------------>
	$("#lp_img_flow_previous, #lp_img_flow_next, #lp_img_flow_slider").hover(function(){
		var button = $(this).find("div.imageflow_button");
		var name = button.attr("button_type");
		button_mouseover(name, button);
	}, function(){
		var button = $(this).find("div.imageflow_button");
		var name = button.attr("button_type");
		button_mouseout(name, button);
	});

	var button_html = "<div class='imageflow_button' button_type='imageflow'><table class='button_table'><tr><td><span class='imageflow_button_icon icon_circle_triangle_w'></span></td></tr></table></div>";
	$("#lp_img_flow_previous").html(button_html);
	button_html = "<div class='imageflow_button' button_type='imageflow'><table class='button_table'><tr><td><span class='imageflow_button_icon icon_circle_triangle_e'></span></td></tr></table></div>";
	$("#lp_img_flow_next").html(button_html);
	button_html = "<div class='imageflow_button' button_type='imageflow'>&nbsp;</div>";
	$("#lp_img_flow_slider").html(button_html);

  if($("#nav_top_right").exists()){
    $(".cdmHelpLink").click(function(){
	    window.open ($("#collectionHomeUrl").val()+"helpdocs" + cdm.gvars.collectionLink,"cdmHelpWindow","menubar=0,resizable=1,width=700,height=600,top=200,left=50,scrollbars=yes");
    });
  }
  if($("#cdm_helplauncher").val() == "1"){
	  window.open ($("#collectionHomeUrl").val()+"helpdocs" + cdm.gvars.collectionLink,"cdmHelpWindow","menubar=0,resizable=1,width=700,height=600,top=200,left=50,scrollbars=yes");
  }

//#::::::::::::::::::::::::::::::::::::::: Final instructions :::::::::::::::::::::::::::::::::::::-->


//# dialog ------------------------------------------------------------------------------------------------------->
	if($(".dialog_title_bar_close_link").exists())
	{
		$(".dialog_title_bar_close_link").hover(function(){$(this).addClass("dialog_title_bar_close_link_hover").find("span:first").addClass("dialog_title_bar_close_link_inner_hover")},
																						function(){$(this).removeClass("dialog_title_bar_close_link_hover").find("span:first").removeClass("dialog_title_bar_close_link_inner_hover")});

		// upon closing a dialog, put it back in its original position
		$(".dialog_title_bar_close_link").click(function()
		{
			if($(this).parent().parent().hasClass("ui-dialog"))
			{
				var name = $(this).parent().parent().next().attr("dialog_name");
				if(!name)	name = $(this).parent().next().attr("dialog_name");
				// do not put the dialog back in its place if there are many different places it could spawn from
				if(true) //!$(this).parent().next().attr("id") == "under_construction_dialog")
				{
					var x = $("#" + name + "_link").offset().left - icon_width;
					var y = $("#" + name + "_link").offset().top + link_bar_height;
					$("#" + name + "_dialog").dialog( "option", "position", [x, y] );
				}
			}
		});
	}


//# accordion ------------------------------------------------------------------------------------------------------->
	if($(".cdm_accordion").exists())
	{
		$(".cdm_accordion h3.ui-accordion-header").click(function(){
				$(".cdm_accordion h3.ui-accordion-header").removeClass("accordion_header_open").addClass("accordion_header_closed").find("span.ui-icon").removeClass("accordion_header_icon_open").addClass("accordion_header_icon_closed");

				if($(this).hasClass("ui-state-default"))
					$(this).removeClass("accordion_header_open").addClass("accordion_header_closed").find("span.ui-icon").removeClass("accordion_header_icon_open").addClass("accordion_header_icon_closed");
				else
					$(this).removeClass("accordion_header_closed").addClass("accordion_header_open").find("span.ui-icon").removeClass("accordion_header_icon_closed").addClass("accordion_header_icon_open");
			});
	}

  setTimeout("cdm_reset_accordion_tabindexes()",250);
  $("h3.accordion_header").each(function(){
    $(this).click(function(){
      setTimeout("cdm_reset_accordion_tabindexes()",250);
    }).keypress(function(event) {
      if(event.keyCode == '13') {
        setTimeout("cdm_reset_accordion_tabindexes()",250);
      }
    });
  });
  if($("#search_content_box").exists()){
    $("#search_content_box").focus();
  }
  cdm.gvars.qvBGColor = $("#cdm_qvBGColor").val();
  cdm.gvars.qvBorderColor = $("#cdm_qvBorderColor").val();
}); // end $(document).ready

function resizeCompObjHeight(){
    if($("#cdm_view").val() == "compoundobject" )
    {
        if (cdm.api.CompoundObject.OriginalSideBarWrapperHeight == 0  || cdm.api.CompoundObject.OriginalAccordionHeight == 0)
        {
            cdm.api.CompoundObject.OriginalSideBarWrapperHeight = $('#co-sidebar-wrapper').height();
            cdm.api.CompoundObject.OriginalAccordionHeight = $("#details_accordion").height();
            cdm.api.CompoundObject.OldAccordionHeight = $("#details_accordion").height();
            cdm.util.ConsoleLogger("cdm.api.CompoundObject.OriginalSideBarWrapperHeight: " + cdm.api.CompoundObject.OriginalSideBarWrapperHeight);
        }
        var newDiff = 0;
        if ($("#details_accordion").height() > cdm.api.CompoundObject.OldAccordionHeight)
        {
           newDiff =  $("#details_accordion").height() - cdm.api.CompoundObject.OldAccordionHeight;
        }else{
           newDiff =  (cdm.api.CompoundObject.OldAccordionHeight - $("#details_accordion").height()) * -1;
        }
        if (cdm.api.CompoundObject.OldAccordionHeight + newDiff > cdm.api.CompoundObject.OriginalAccordionHeight)
        {
           $('#co-sidebar-wrapper').height($('#co-sidebar-wrapper').height() + newDiff);
        }else {
           $('#co-sidebar-wrapper').height(cdm.api.CompoundObject.OriginalSideBarWrapperHeight);
        }
        cdm.api.CompoundObject.OldAccordionHeight = $("#details_accordion").height();
    }
}

/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/

var Base64 = {

	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;

		input = Base64._utf8_encode(input);

		while (i < input.length) {

			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);

			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;

			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}

			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

		}

		return output;
	},

	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;

		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

		while (i < input.length) {

			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));

			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;

			output = output + String.fromCharCode(chr1);

			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}

		}

		output = Base64._utf8_decode(output);

		return output;

	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}
