﻿// JAVASCRIPT FUNCTIONS FOR SHORELINE COMMUNITY COLLEGE LIBRARY'S WEBSITE
//COMPILED AND CREATED BY OWEN ROGERS - OROGERS@SHORELINE.EDU


//************************************************************************
//FUNCTION FOR CLEARING THE TEXT FROM AN INPUT FIELD UPON FOCUS
//ACCEPTS A STRING CONTAINING DEFAULT VALUES FOR THE CONTROL SO THAT
//THE CONTROL IS ONLY CLEARED WHEN FOCUSED AND CONTAINS A DEFAULT VALUE
//************************************************************************
function clearText(thefield, defaultValues){
var fieldValue = thefield.value;
var valuesArray = defaultValues.split("?");

for(var i = 0; i < valuesArray.length; i++)
    {
        if(valuesArray[i] == fieldValue)
        {
            thefield.value = "";
        }
    }   
}

//************************************************************************
//FUNCTION FOR CHANGING THE VALUE OF THE MULTI SEARCH TEXT BOX ON CHANGE
//************************************************************************
function MultiSearchDDChange(evt, defaultValues){
var dd = getElemEvent(evt);
var elems = document.getElementsByTagName('input');
var tb;
for(var i = 0; i < elems.length; i++)
    {   
        if(elems[i].className == "tbMultiSearch")
            {
                var tb = elems[i];
                i = elems.length;
            }
    }
var tbValue = tb.value;

var valuesArray = defaultValues.split("?");

for(var i = 0; i < valuesArray.length; i++)
    {
        if(valuesArray[i] == tbValue || tbValue == "")
        {
            switch(dd.value){
                case 'catSearch': tb.value = "Search only for Books, DVDs, CDs (Catalog)";
                break;
                
                case 'siteSearch': tb.value = "Search the Library Website";
                break;    
                
                case 'osisSearch': tb.value = "OSIS Search";
                break;
                
                default: tb.value = "OSIS Search";
                break;
            }
 
        }
    }   
}    

//************************************************************************
//FUNCTIONS FOR THE PRELOADING OF IMAGES
//************************************************************************
var preloadFlag = false;

function preloadImages(url) {
        if (document.images) {
                btnaboutlib = newImage(url + 'btnAboutActive.jpg');
                btncommuninfo = newImage(url + 'btnCommunInfoActive.jpg');
                btnfindinfo = newImage(url + 'btnFindInfoActive.jpg');
                btnlibmedia = newImage(url + 'btnServicesActive.jpg');
                btnresasst = newImage(url + 'btnResAsstActive.jpg');
                btnhome = newImage(url + 'btnHomeActive.jpg');
				preloadFlag = true;
        }
}

function newImage(arg) {
        if (document.images) {
                rslt = new Image();
                rslt.src = arg;
                return rslt;
        }
}
//****************************************************************
//FUNCTIONS FOR CHANGING IMAGES AND DISPLAYING NAV MENUS ON MOUSE-OVER
//****************************************************************
function switchImage(imgName, imgSrc, evt, vis, t, l, active) 
{
  if (document.images)
  {
    if (imgSrc != "none")
    {
      document.images[imgName].src = imgSrc;
      if(vis == "show")
      {
      showMenu(evt, t, l, active);
      }
      if(vis == "hide")
      {
      hideMenu(evt);
      }
    }
  }
}


var childSuffix = "pnlGlobalNavDD";

function showMenu(evt, t, l, active)
{
    var btn = getElemEvent(evt);
    var btnSrc = btn.src.toString();
    var menuID = getChildElemID(evt, childSuffix);
    var menu = document.getElementById(menuID);
    menu.className = "pnlNavDDExpanded";
    
    menu.style.top = t;
    menu.style.left = l;
    
    menu.onmouseover = function(){
        menu.className = "pnlNavDDExpanded";
        //keep the button image active while mouse is over the menu
        //this functionality requires the naming convention that the 
        //"active" and "default" buttons have the same file name except
        //for the differentiating words "Active" and "Default"
        btn.src = btnSwap("Deafult", "Active", btnSrc);
    }
    
    if(active == "true")
    {
        //then this is the active silo button, so don't change its image to the default one
        menu.onmouseout = function(){menu.className = "pnlNavDDCollapsed";}     
    }
    else
    {
        //this is not the active silo, so change the button image back after hiding the menu
       
        //change the button image back to the default
        //this functionality requires the image file naming convention that the 
        //"active" and "default" buttons have the same file name except
        //for the differentiating words "Active" and "Default"
        menu.onmouseout = function(){
            menu.className = "pnlNavDDCollapsed";
            btn.src = btnSwap("Active", "Default", btnSrc);
            }

    }
      
}

function btnSwap(searchString, replaceString, btnSrc)
{
    
    var re = new RegExp(searchString, "g");
    var result = btnSrc.replace(re, replaceString);
    return result;
}
  
function hideMenu(evt)
{
    var menuID = getChildElemID(evt, childSuffix);
    var menu = document.getElementById(menuID);
    menu.className = "pnlNavDDCollapsed";    
}





//************************************************************************
//THE FUNCTIONS BELOW ARE FOR THE RESEARCH TUTORIAL AND CAN BE SCRAPPED
//WHEN THE NEW TUTORIAL COMES ONLINE
//************************************************************************

//THIS FUNCTION OPENS A SMALL WINDOW
function MiniDisplay(uval) {
        var this_Url = uval; 
        window_jsvar=window.open(this_Url, "window15", "status=yes,scrollbars=yes,menubar=yes,width=830,height=650,screenY=30,screenX=30");
        window_jsvar.focus();
        
}


//************************************************************************
//THIS FUNCTION RETURNS A REFERENCE TO THE ELEMENT THAT HAS FIRED AN EVENT
//************************************************************************
function getElemEvent(evt)
{
    evt = (evt) ? evt : ((window.event) ? window.event : "");
    if (evt) 
        {
            var elemRef = (evt.target) ? evt.target : evt.srcElement;
            return elemRef;
            
        }
}

//***********************************************************************
//THIS FUNCTION GETS THE ID FOR AN ELEMENT THAT HAS FIRED AN EVENT AND
//THEN BREAKS THE ID UP INTO AN ARRAY; USEFUL FOR DETERMINING THE ID OF
//A CHILD ELEMENT IN AN ASP.NET ENVIRO; TAKES AN EVENT AND A STRING AS ARGS
//***********************************************************************
function getChildElemID(evt, childSuffix)
{
    var evtElem = getElemEvent(evt);
    var evtElemID = evtElem.id.toString();
    var elemArray = evtElemID.split("_");
    var elemID = "";
    for(var i = 0; i < elemArray.length - 1; i++)//LEAVES THE LAST ELEM OF ARRAY OFF THE CONSTRUCTED STRING
    {
        elemID += elemArray[i] + "_";
    }
    elemID += childSuffix;
    return elemID;
}
    

function openNewWindow(url, width, height)
{
    var window = window.open(url, "status=yes,scrollbars=yes,menubar=yes,width=" + width + ",height=" + height);
    window.focus();
}      