// 20drama.js
//
// This is the main javascript file for the 20th Century Drama collection.
// It provides declarations for page headers and copyright notices.
// It also defines functions to swap between simple and advanced
// search forms and to invoke the browse pages.
//

var header = "<table width=683 border=0 cellspacing=1 cellpadding=0><tr><td cellspacing=0 rowspan='3' border='1' color='#000099'><a href='/20drama/htxview?template=basic.htx&content=home.htx' class='nav'><img src='/images_old/20drama/photo_1.jpg' alt='Twentieth-Century Drama home page' border=0></a></td><td><img height='50' width='510' src='/images_old/20drama/20Dtitle.gif' alt='Title: Twentieth-Century Drama'><a href='http://www.proquest.co.uk' alt='ProQuest Information and Learning home page'><img border=0 height='50' width='63' src='/images_old/20drama/chlogo.gif' alt='ProQuest Information and Learning home page'></a></td></tr><tr><td height='25' class='ltblue' align='right'><a href='/html/20drama/about.htm' class='nav'>&nbsp;About&nbsp;</a>|<a href='/html/20drama/help/ind.htm' class='nav'>&nbsp;Help&nbsp;</a>|<a href='/' class='nav'>&nbsp;Individual Literature Collections&nbsp;</a>&nbsp;</td></tr><tr><td height='25' class='dkblue'>&nbsp;<a href='/20drama/htxview?template=basic.htx&content=home.htx' class='nav'>&nbsp;Home page&nbsp;</a>|<a href='htxview?template=toc_hdft.htx&content=toc.htx' class='nav'>&nbsp;Table of Contents&nbsp;</a></td></tr></table>";

var copyright = "<font face='Verdana, Arial, Helvetica, sans-serif' size='1'>Send your suggestions, comments or queries to our <A href='/html/20drama/webmaster.htm' class='browse'>webmaster</a>.<br><a href='/html/20drama/copyrite.htm' class='browse'>Copyright</a> &copy; 2003 ProQuest Information and Learning Company.<br>All Rights Reserved.</font>";

var copyright2 = "<font face='Verdana, Arial, Helvetica, sans-serif' size='1'>Send your suggestions, comments or queries to our <A href='javascript:loadParent(\"/html/20drama/webmaster.htm\")' class='browse'>webmaster</a>.<br><a href='javascript:loadParent(\"/html/20drama/copyrite.htm\")' class='browse'>Copyright</a> &copy; 2003 ProQuest Information and Learning Company.<br>All Rights Reserved.</font>";

var helpcopyright = "<hr><table cellpadding='0' cellspacing='0' border='0'><tr><td><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>Send your suggestions, comments or queries to our <A href='javascript:loadParent(\"/html/20drama/webmaster.htm\");'>webmaster</a>.<br><a href='javascript:loadParent(\"/html/20drama/copyrite.htm\");'>Copyright</a> &copy; 2003 ProQuest Information and Learning Company.<br>All Rights Reserved.</font></td></tr></table>";




// function do_advanced_search() switches between the simple and advanced search forms
//
// Copied from acta and adapted for 20D - September 2003


var isDHTML = 0;
var isLayers = 0;
var isAll = 0;
var isID = 0;
 
if (document.getElementById) 
{
    isID = 1; 
    isDHTML = 1;
}
else 
{
    if (document.all) 
    {
        isAll = 1; 
        isDHTML = 1;
    }
    else 
    {
        browserVersion = parseInt(navigator.appVersion);
        if ((navigator.appName.indexOf('Netscape') != -1) && (browserVersion == 4)) 
        {
            isLayers = 1; 
            isDHTML = 1;
        }
    }
}
 
function findDOM(objectID,withStyle) 
{
    if (withStyle == 1) 
    {
        if (isID) 
        { 
            return (document.getElementById(objectID).style) ; 
        }
        else 
        { 
            if (isAll) 
            { 
                return (document.all[objectID].style); 
            }
            else 
            {
                if (isLayers) 
                { 
                    return (document.layers[objectID]); 
                }
            };
        }
    }
    //without style
    else 
    {
        if (isID) 
        { 
            return (document.getElementById(objectID)) ; 
        }
        else 
        { 
            if (isAll) 
            { 
                return (document.all[objectID]); 
            }
            else 
            {
                if (isLayers) 
                { 
                    return (document.layers[objectID]); 
                }
            };
        }
    }
}

 
function setVisibility(ObjectID, state)
{
    var Obj = findDOM(ObjectID, 1);
    Obj.visibility = state;
}


function toggleVisibility(ObjectID)
{
    var Obj = findDOM(ObjectID, 1);
    var currentState = Obj.visibility;
    if (currentState == "hidden")
    {
        setVisibility(ObjectID, "visible");
    }
    else
    {
        setVisibility(ObjectID, "hidden");
    }
}

function setDisplay(ObjectID, state)
{
    var Obj = findDOM(ObjectID, 1);
    Obj.display = state;
}
 

function toggleDisplay(ObjectID)
{
    var Obj = findDOM(ObjectID, 1);
    var currentState = Obj.display;
    if (currentState == "none")
    {
        setDisplay(ObjectID, "block");
        setVisibility(ObjectID, "visible");
    }
    else
    {
        setDisplay(ObjectID, "none");
        setVisibility(ObjectID, "hidden");
    }
}

function addScrollingDiv()
{
    //if we are not in netscape place textbody contents into a scrolling div
    var isNS = 0;
    var browVer = 0;
    if(navigator.appName.indexOf('Netscape') != -1)
    {
        isNS = 1;

        //give up on detecting which Netscape since it doesn't work properly in 7.0 anyway 
        //	alert (navigator.userAgent);
        //	var pos = navigator.userAgent.indexOf('Netscape') + 8;
        //	verString = navigator.userAgent.substr(pos);
        //	var browVer = verString.substr(1,3);
        //	alert(browVer);
    }
    if (isNS == 0)
    {
        if (document.getElementById('mytext'))
        {
            return;
        }
        var newDiv = document.createElement('div');
        newDiv.id = "mytext";
        var tableObj = document.getElementById('textbody');
        var divObj = document.getElementById('toolbar');
        divObj.parentNode.appendChild(newDiv);
        newDiv.appendChild(tableObj);
        tableObj.style.position = 'absolute'; 
        tableObj.style.left = '0px'; 
        tableObj.style.top = '0px'; 
        if (document.URL.indexOf('#Page') != -1)
        {
            document.URL = '#Page';
            divObj.scrollTop = divObj.scrollTop + 150;
        }
    }
}
function storeCaret (textEl) {
    if (textEl.createTextRange)
        textEl.caretPos = document.selection.createRange().duplicate();
}

function insertAtCaret (textEl, text) {
    if (textEl.createTextRange && textEl.caretPos) {
        var caretPos = textEl.caretPos;
        caretPos.text =
            caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?
            text + ' ' : text;
    }
    else
        textEl.value  = text;
}

function translateKey(evnt) {
    var charcode;
    var isNS = (navigator.appName.indexOf('Netscape') != -1);
    var keyInput = 0;
    if (isNS)
    {
	keyInput = evnt.which;
    }
    else
    {
	keyInput = event.keyCode;
    }
    switch(keyInput)
    {
    case 65://A
	charcode = 0x3b1;
	break;
    case 66://B
	charcode = 0x3b2;
	break;
    case 67://C
	charcode = 0x3c7;
	break;
    case 68://D
	charcode = 0x3b4;
	break;
    case 69://E
	charcode = 0x3b5;
	break;
    case 70://F
	charcode = 0x3c6;
	break;
    case 71://G
	charcode = 0x3b3;
	break;
    case 72://H
	charcode = 0x3b7;
	break;
    case 73://I
	charcode = 0x3b9;
	break;
    case 74://J
	charcode = 0x3ba;
	break;
    case 75://K
	charcode = 0x3ba;
	break;
    case 76://L
	charcode = 0x3bb;
	break;
    case 77://M
	charcode = 0x3bc;
	break;
    case 78://N
	charcode = 0x3bd;
	break;
    case 79://O
	charcode = 0x3bf;
	break;
    case 80://P
	charcode = 0x3c0;
	break;
    case 81://Q
	charcode = 0x3b8;
	break;
    case 82://R
	charcode = 0x3c1;
	break;
    case 83://S
	charcode = 0x3c3;
	break;
    case 84://T
	charcode = 0x3c4;
	break;
    case 85://U
	charcode = 0x3c5;
	break;
    case 86://V
	charcode = 0x3c6;
	break;
    case 87://W
	charcode = 0x3c9;
	break;
    case 88://X
	charcode = 0x3be;
	break;
    case 89://Y
	charcode = 0x3c8;
	break;
    case 90://Z
	charcode = 0x3b6;
	break;
    case 97://a
	charcode = 0x3b1;
	break;
    case 98://b
	charcode = 0x3b2;
	break;
    case 99://c
	charcode = 0x3c7;
	break;
    case 100://d
	charcode = 0x3b4;
	break;
    case 101://e
	charcode = 0x3b5;
	break;
    case 102://f
	charcode = 0x3c6;
	break;
    case 103://g
	charcode = 0x3b3;
	break;
    case 104://h
	charcode = 0x3b7;
	break;
    case 105://i
	charcode = 0x3b9;
	break;
    case 106://j
	charcode = 0x3ba;
	break;
    case 107://k
	charcode = 0x3ba;
	break;
    case 108://l
	charcode = 0x3bb;
	break;
    case 109://m
	charcode = 0x3bc;
	break;
    case 110://n
	charcode = 0x3bd;
	break;
    case 111://o
	charcode = 0x3bf;
	break;
    case 112://p
	charcode = 0x3c0;
	break;
    case 113://q
	charcode = 0x3b8;
	break;
    case 114://r
	charcode = 0x3c1;
	break;
    case 115://s
	charcode = 0x3c3;
	break;
    case 116://t
	charcode = 0x3c4;
	break;
    case 117://u
	charcode = 0x3c5;
	break;
    case 118://v
	charcode = 0x3c6;
	break;
    case 119://w
	charcode = 0x3c9;
	break;
    case 120://x
	charcode = 0x3be;
	break;
    case 121://y
	charcode = 0x3c8;
	break;
    case 122://z
	charcode = 0x3b6;
	break;
    default:
	charcode = 0;
	break;
    }
//alert(document.ACCFORM.Accelerator.value);
    if (!isNS)
    {
//	document.selection.clear();
    }
    if (charcode > 0)
    {
	if (isNS)
	{
            sText = String.fromCharCode(charcode);
            document.ACCFORM.Accelerator.value = document.ACCFORM.Accelerator.value + sText;
            return false;
	}
	else
	{
            event.keyCode = charcode;
	}
    }
    else
    {
	return true;
    }
}

function context_toc()
{
    if (document && document.forms && document.forms.ContextFrm)
    {
        if (document.forms.ContextFrm.CONTEXT_TOC)
        {
            if (document.forms.ContextFrm.CONTEXT_TOC.value)
            {
                var urlstring = document.forms.ContextFrm.CONTEXT_TOC.value;
                if (urlstring && (urlstring.length > 0) && (urlstring.indexOf('!--') <= 0))
                {
                    var strlength = urlstring.length;
                    var tocref=urlstring.slice(9,strlength-2);
                    document.location=tocref;
                }
            }
        }
    }
}

function text_only()
{
    if (document && document.location.href)
    {
        var locn = document.location.href;
        var loc1 = locn;
        if (locn.indexOf('#') > 0)
        {
            loc1 = locn.replace(/\#(.*)$/, '');
        }		
        document.location=loc1 + '&PRINT=yes&ALL=Y&WARN=N';
    }
}

function new_search()
{
    setAdvancedSearchCookieOff();
    document.location='search';
    }

function focusAccelField()
{
//document.forms[0].elements[0].focus(); 
}

function dummyErrorHandler()
{
    return true;
}


// function do_advanced_search() is used to switch from displaying the simple
// search form to the advanced search form and back.

// The parameter passed in controls it's action. If it is 0 then it will check
// the cookie and display the advanced form if the cookie is set.
// (The cookie ensures that the current form is returned to
// after visiting another page, e.g. a browse page)
// If the parameter is 1 it will display the advanced form.
// If it is any other value then it will display the simple form.

// There are 3 elements to be considered.
// 1.   Display of the forms is controlled by placing them in a <DIV> tag.
//      When the "display" property of that <DIV> tag is set to "none" it is
//      hidden. When it is set to "block" the contents of the tag are displayed.
// 2.   As well as displaying and hiding the forms the input values are copied
//	between the forms when switching, except that if there is already data
//	in a field it is not overwritten.
// 3.   The checkboxes used to switch need to be set to checked in the advanced
//	form and not checked in the simple form.

function do_advanced_search(cs)
{
    //onerror = dummyErrorHandler;
    var advancedSearchFlag = false;
	
    //if we are initialising (cs = 0) then check the value of the cookie
    if (cs == 0)
    {
        advancedSearchFlag = isAdvancedSearchCookieTrue();
    }
    if ((cs == 1) || advancedSearchFlag)
    {
        //show the Advanced Search form
        setDisplay('SimpleSearchDiv', 'none');	
        setDisplay('AdvancedSearchDiv', 'block');	
//        document.forms['AdvancedSearchForm'].elements['ADVANCEDSEARCH'].checked=true;
        if (document.forms['AdvancedSearchForm'].elements['KEY'].value == '')
        {
            document.forms['AdvancedSearchForm'].elements['KEY'].value = document.forms['SimpleSearchForm'].elements['KEY'].value;
        }
        if (document.forms['AdvancedSearchForm'].elements['AUTHOR'].value == '')
        {
            document.forms['AdvancedSearchForm'].elements['AUTHOR'].value = document.forms['SimpleSearchForm'].elements['AUTHOR'].value;
        }
        if (document.forms['AdvancedSearchForm'].elements['TITLE'].value == '')
        {
            document.forms['AdvancedSearchForm'].elements['TITLE'].value = document.forms['SimpleSearchForm'].elements['TITLE'].value;
        }
        if (document.forms['AdvancedSearchForm'].elements['PERFDATE1'].value == '1900')
        {
            document.forms['AdvancedSearchForm'].elements['PERFDATE1'].value = document.forms['SimpleSearchForm'].elements['PERFDATE1'].value;
        }
        if (document.forms['AdvancedSearchForm'].elements['PERFDATE2'].value == '1999')
        {
            document.forms['AdvancedSearchForm'].elements['PERFDATE2'].value = document.forms['SimpleSearchForm'].elements['PERFDATE2'].value;
        }
        if (document.forms['AdvancedSearchForm'].elements['PUBDATE1'].value == '1900')
        {
            document.forms['AdvancedSearchForm'].elements['PUBDATE1'].value = document.forms['SimpleSearchForm'].elements['PUBDATE1'].value;
        }
        if (document.forms['AdvancedSearchForm'].elements['PUBDATE2'].value == '1999')
        {
            document.forms['AdvancedSearchForm'].elements['PUBDATE2'].value = document.forms['SimpleSearchForm'].elements['PUBDATE2'].value;
        }
        if (document.forms['AdvancedSearchForm'].elements['GENRE'].value == '')
        {
            document.forms['AdvancedSearchForm'].elements['GENRE'].value = document.forms['SimpleSearchForm'].elements['GENRE'].value;
        }
        if (document.forms['AdvancedSearchForm'].elements['GENDER'].value == ' ')
        {
            document.forms['AdvancedSearchForm'].elements['GENDER'].value = document.forms['SimpleSearchForm'].elements['GENDER'].value;
        }
        if (document.forms['AdvancedSearchForm'].elements['NATIONALITY'].value == '')
        {
            document.forms['AdvancedSearchForm'].elements['NATIONALITY'].value = document.forms['SimpleSearchForm'].elements['NATIONALITY'].value;
        }
        document.forms['AdvancedSearchForm'].elements['KEY'].focus();
        setAdvancedSearchCookieOn();
    }
    else
    {
        //show the Simple Search Form
        setDisplay('SimpleSearchDiv', 'block');	
        setDisplay('AdvancedSearchDiv', 'none');
//        document.forms['SimpleSearchForm'].elements['ADVANCEDSEARCH'].checked=false;
        if (document.forms['SimpleSearchForm'].elements['KEY'].value == '')
        {
            document.forms['SimpleSearchForm'].elements['KEY'].value = document.forms['AdvancedSearchForm'].elements['KEY'].value;
        }
        if (document.forms['SimpleSearchForm'].elements['AUTHOR'].value == '')
        {
            document.forms['SimpleSearchForm'].elements['AUTHOR'].value = document.forms['AdvancedSearchForm'].elements['AUTHOR'].value;
        }
        if (document.forms['SimpleSearchForm'].elements['TITLE'].value == '')
        {
            document.forms['SimpleSearchForm'].elements['TITLE'].value = document.forms['AdvancedSearchForm'].elements['TITLE'].value;
        }
        if (document.forms['SimpleSearchForm'].elements['PERFDATE1'].value == '1900')
        {
            document.forms['SimpleSearchForm'].elements['PERFDATE1'].value = document.forms['AdvancedSearchForm'].elements['PERFDATE1'].value;
        }
        if (document.forms['SimpleSearchForm'].elements['PERFDATE2'].value == '1999')
        {
            document.forms['SimpleSearchForm'].elements['PERFDATE2'].value = document.forms['AdvancedSearchForm'].elements['PERFDATE2'].value;
        }
        if (document.forms['SimpleSearchForm'].elements['PUBDATE1'].value == '1900')
        {
            document.forms['SimpleSearchForm'].elements['PUBDATE1'].value = document.forms['AdvancedSearchForm'].elements['PUBDATE1'].value;
        }
        if (document.forms['SimpleSearchForm'].elements['PUBDATE2'].value == '1999')
        {
            document.forms['SimpleSearchForm'].elements['PUBDATE2'].value = document.forms['AdvancedSearchForm'].elements['PUBDATE2'].value;
        }
        if (document.forms['SimpleSearchForm'].elements['GENRE'].value == '')
        {
            document.forms['SimpleSearchForm'].elements['GENRE'].value = document.forms['AdvancedSearchForm'].elements['GENRE'].value;
        }
        if (document.forms['SimpleSearchForm'].elements['GENDER'].value == ' ')
        {
            document.forms['SimpleSearchForm'].elements['GENDER'].value = document.forms['AdvancedSearchForm'].elements['GENDER'].value;
        }
        if (document.forms['SimpleSearchForm'].elements['NATIONALITY'].value == '')
        {
            document.forms['SimpleSearchForm'].elements['NATIONALITY'].value = document.forms['AdvancedSearchForm'].elements['NATIONALITY'].value;
        }
        document.forms['SimpleSearchForm'].elements['KEY'].focus();
        setAdvancedSearchCookieOff();
    }
}

function isAdvancedSearchCookieTrue()
{
    var retVal = false;
    var allCookies = document.cookie;
    var pos = allCookies.indexOf("advancedsearch=");
    if(pos != -1)
    {
        var start = pos + 15;
        var end = allCookies.indexOf(";", start);
        if (end == -1) end = allCookies.length;
        var value = allCookies.substring(start, end);
        if (value > 0)
            retVal = true;
    }
    return retVal;
}


function setAdvancedSearchCookieOn()
{
    document.cookie = "advancedsearch=1";
}

function setAdvancedSearchCookieOff()
{
    document.cookie = "advancedsearch=0";
}



// copied this function from FII

function browse(browsename)
{
    var formname = "SimpleSearchForm";
	
    // Set all the hidden browse control names to nothing, except for
    // the one that is to trigger the browse.
	
    if(isAdvancedSearchCookieTrue())
    {
        formname = "AdvancedSearchForm";
    }
	
    for (var i = 0; i < document.forms[formname].elements.length; i++) 
    {
        var name = document.forms[formname].elements[i].name;
		
    	if(name.match(/^B_/))
    	{
            document.forms[formname].elements[i].value = "";
    	}
    }
    
    var control = "B_" + browsename;
    document.forms[formname].elements[control].value = "ok";
    document.forms[formname].submit();
}


// New for 20drama
function loadParent( url )
{
    window.opener.location = url;
    window.opener.focus();
}



// NewSatellite is based on CreateSatellite from sitewide, but with the extra
// parameter "main" replacing window. This allows satellites to pass "opener"
// and have the new window created as a child of the caller's parent window.
function NewSatellite( main, theURL, name, width, height, center, options )
{
    DetermineBrowserTypeVersion();

    // Different Browsers have different ways to get the 
    // position and size of the browser window.
    if( is_nav4up && center )
    {
        var x = main.screenX;
        var y = main.screenY;
        var w = main.outerWidth;
        var h = main.outerHeight;
        var midx = x + (w - width)/2; 
        var midy = y + (h - height)/2; 	

        w1 = main.open( theURL, name, "left=" + midx + ",top=" + midy + ",height="+ height + ",width=" +  width + options );
    }else if( is_ie5up && center ) 
    {
        var x = main.screenLeft;
        var y = main.screenTop;
        var w = document.body.clientWidth;
        var h = document.body.clientHeight;
        var midx = x + (w - width)/2;
        var midy = y + (h - height - 100)/2;	// 100 is a guesstimate for toolbar height

        // Next bit forces IE5 to give focus and display the window in the correct position
        if( w1 != null && !w1.closed )
        {
            w1.close();
            w1 = null;
        }			    

        w1 = main.open(theURL, name, "left=" + midx + ",top=" + midy + ",height="+ height + ",width=" +  width + options );
    }else{  
        // Older browsers can't determine browser window pos/size and IE4 has probs
        // closing and re-opening a window  	      

        w1 = main.open(theURL, name, "height="+ height + ",width=" +  width + options );
    }

    w1.focus();
}

