var strServerRoot = "";
var strFusionCopyrightNotice = "";
var nLibraryThingTagsEnabled = 0;
var strNovelistSelectProfile = "";
var strNovelistSelectPassword = "";
var nNovelistSelectLinks = 0;
var nNovelistSelectFullDisplay = 0;
var strNovelistSelectHeader = "";

var ajaxreq = false, ajaxCallback;

function ajaxRequest(filename) {
    try {
        //Firefox IE 7
        ajaxreq = new XMLHttpRequest();
    } catch (error) {
        try {
            //IE 5 & IE 6
            ajaxreq = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (error) {
            try {
                ajaxreq = new ActiveXObject("msxml2.XMLHTTP");
            } catch (error) {
                return false;
            }
        }
    }
    ajaxreq.open("GET", filename, false);
    ajaxreq.onreadystatechange = ajaxResponse;
    ajaxreq.send(null);
}

function ajaxResponse() {
    if (ajaxreq.readyState != 4) return;
    if (ajaxreq.status == 200) {
        if (ajaxCallback) ajaxCallback();
    } else alert("Request failed" + ajaxreq.statusText);
    return true;
}

function GetCookie(name)
{
    var cookies = document.cookie.split("; ");
    
    for (var index = 0; index < cookies.length; index++)
    {
        var crumb = cookies[index].split("=");
        if (name == crumb[0]) 
            return unescape(crumb[1]);
    }
    
    return null;
}

function SetServerRoot(value)
{
    strServerRoot = value;
}

function SetFusionCopyrightNotice(value)
{
    strFusionCopyrightNotice = value;
}

function SetLibraryThingTagsEnabled(value) 
{
    nLibraryThingTagsEnabled = value;
}

function SetNovelistSelectValues(strProfile, strPassword, nFullDisplay, nLinks, strHeader)
{
    strNovelistSelectProfile = strProfile;
    strNovelistSelectPassword = strPassword;
    nNovelistSelectFullDisplay = nFullDisplay;
    nNovelistSelectLinks = nLinks;
    strNovelistSelectHeader = strHeader;
}

function SessionTimedOut()
{
    document.body.style.cursor = "default";
    
    if (null == GetCookie("SPOOF"))
    {
        alert("Your session has timed out.");
        window.location = strServerRoot + "default.aspx";
    }
    else
    {
        external.TimeoutSession();
    }
}

function handleHttpResponseContent(http, divid, isbn, show) 
{
    if (http.readyState == 4)
    {
	    if (http.responseText.indexOf("POWERPAC-ERROR:TIMEOUT") != -1)
	    {
	        SessionTimedOut();
	        return;
	    }

        var pos = '';
        if (divid.indexOf('content_') != -1)
            pos = divid.replace('content_', '');

        if (nNovelistSelectFullDisplay == 1 && pos != '' && document.getElementById('novsel-full_' + pos) != null)
            document.getElementById('novsel-full_' + pos).innerHTML = "";

	    document.getElementById(divid).innerHTML = http.responseText;

	    if (show == "details" && nNovelistSelectFullDisplay == 1 && jQuery.trim(document.getElementById("options_" + pos).innerHTML) != '')
            AppendNovelistSelect(pos, isbn);

        if (divid.indexOf('content_') != -1)
	        ShowExtendedOptions(pos, isbn, show);

	    document.body.style.cursor = "default";
	}
}

function NovelistLinkBuilder(jsonResult, pos) 
{
    if (nNovelistSelectLinks == 0)
        return;

    jQuery('#NovelistLinks_' + pos).empty();

    jQuery(jsonResult).each(function (o) {
        var i = jsonResult[o];
        var a = jQuery('<a href="javascript:">' + i.featureLabel + '</a><br/>');
        a.click(function () {
            ShowNovelistSelect(pos, i.isbn);
            var target = jQuery('div[data-novelist-' + i.featureType + '="' + i.isbn + '"]');
            jQuery(window).scrollTop(target.offset().top);
        });

        jQuery('#NovelistLinks_' + pos).append(a);
    });
}


function AppendNovelistSelect(pos, isbn) 
{
    if (document.getElementById('content_' + pos) && document.getElementById('novsel_' + isbn) && document.getElementById('novsel_' + isbn).innerHTML.indexOf('[LOADING]') == -1 && (document.getElementById('novsel-full_' + pos) == null || (document.getElementById('novsel-full_' + pos) && jQuery.trim(document.getElementById('novsel-full_' + pos).innerHTML) == '')))
    {
        if (document.getElementById('novsel-full_' + pos))
            document.getElementById('novsel-full_' + pos).innerHTML = "<br/><br/>" + document.getElementById('novsel_' + isbn).innerHTML;
        else
            jQuery('#content_' + pos).after('<div id="novsel-full_' + pos + '"><br/><br/>' + document.getElementById('novsel_' + isbn).innerHTML + '</div>');
    }
}


function handleHttpResponseExtended(http, pos, isbn, show) 
{
    if (http.readyState == 4) 
    {
        if (http.responseText.indexOf("POWERPAC-ERROR:TIMEOUT") != -1) 
        {
            SessionTimedOut();
            return;
        }

        document.getElementById("options_" + pos).innerHTML = http.responseText;

        if ((nNovelistSelectLinks == 1 || nNovelistSelectFullDisplay == 1) && isbn.length > 0) 
        {
            //document.getElementById('novsel_' + isbn).innerHTML = '';
            jQuery('div').each(function () { if (jQuery(this).html().indexOf('data-novelist') != -1 && jQuery(this).html().indexOf('"' + isbn + '"') != -1) { jQuery(this).empty(); } });

            if (document.getElementById("novsel_" + isbn).innerHTML != '[LOADING]') 
            {
                document.getElementById("novsel_" + isbn).innerHTML = '[LOADING]';
                novSelect.loadContentForISBN(isbn, strNovelistSelectProfile, strNovelistSelectPassword, function (novSelectResults) { document.getElementById("novsel_" + isbn).innerHTML = document.getElementById("novsel_" + isbn).innerHTML.replace('[LOADING]', ''); NovelistLinkBuilder(novSelectResults, pos); if (document.getElementById("content_" + pos).innerHTML.indexOf("FullDisplay") != -1 && nNovelistSelectFullDisplay == 1) AppendNovelistSelect(pos, isbn); });
            }
        }
        
        document.body.style.cursor = "default";
    }
}

function handleHttpResponseContentInitial(http, pos, isbn, show) 
{
	if (http.readyState == 4)
	{ 
	    if (http.responseText.indexOf("POWERPAC-ERROR:TIMEOUT") != -1)
	    {
	        SessionTimedOut();
	        return;
	    }

        document.getElementById('content_' + pos).innerHTML = http.responseText;                                                                       
        ShowExtendedOptions(pos, isbn, show);
	}
}

function ShowExtendedOptions(pos, isbn, show) 
{
    var http = getHTTPObject();

    if (jQuery.trim(document.getElementById("options_" + pos).innerHTML) != '') 
    {
        document.body.style.cursor = "default";
        return;
    }

    http.open("GET", strServerRoot + "search/components/extendedoptions.aspx?pos=" + pos, true);
    http.onreadystatechange = function () { handleHttpResponseExtended(http, pos, isbn, show) };
	http.send(null);
    document.body.style.cursor = "wait";
}

function handleHttpResponseTitleUpdate(http, pos) 
{
	if (http.readyState == 4)
	{ 
	    if (http.responseText.indexOf("POWERPAC-ERROR:TIMEOUT") != -1)
	    {
	        SessionTimedOut();
	        return;
	    }

		document.getElementById('addtolist_' + pos).innerHTML = http.responseText;
	
		http = getHTTPObject();

		http.open("GET", strServerRoot + "search/components/titlelistdash.aspx", true);
		http.onreadystatechange = function () { handleHttpResponseContent(http, 'dashTitleList', '', '') };
		http.send(null);
        document.body.style.cursor = "wait";
	}
}

function urlencode(str) {
    return encodeURIComponent(encodeURI(str)).replace(/&/g, '%26');
}


function AddToList(pos, controlnumber, listid)
{
    ResetTimer();
    var http = getHTTPObject();
    listid = urlencode(listid);
	
    document.getElementById('addtolist_' + pos).innerHTML = "";
	
    http.open("GET", strServerRoot + "search/components/titlelistlink.aspx?action=add&pos=" + pos + "&cn=" + controlnumber + "&list=" + listid, true);
    http.onreadystatechange = function () { handleHttpResponseTitleUpdate(http, pos) };
	http.send(null);

    var elems = document.getElementsByName('TLMenu_' + pos);
    if (elems.length != 0)
        if(elems[0].style.display == "")
            elems[0].style.display = "none";

    document.body.style.cursor = "wait";
}

function RemoveFromList(pos, controlnumber)
{
    ResetTimer();
	var http = getHTTPObject();

    http.open("GET", strServerRoot + "search/components/titlelistlink.aspx?action=remove&pos=" + pos + "&cn=" + controlnumber, true);
    http.onreadystatechange = function () { handleHttpResponseTitleUpdate(http, pos) };
	http.send(null);
    document.body.style.cursor = "wait";
}

function IsThisTitleExpanded(id)
{
    ResetTimer();
    var style;

	if (document.getElementById)
        style = document.getElementById('content_' + id).style;
	else if (document.all)
		style = document.all['content_' + id].style;
	else if (document.layers)
		style = document.layers['content_' + id].style;

    if (style.display == "block")
        return true;
    else
        return false;
}

function ShowContent(pos, show, highlight, isbn, bibid, requestLevel) 
{
    var nBibID = "";
    if (bibid)
        nBibID = bibid;

    var strRequestLevel = "";
    if (requestLevel)
        strRequestLevel = requestLevel;
    
    if (IsThisTitleExpanded(pos) == false)
        ExpandThisTitle(pos, isbn);
       
	if (show != "" && highlight != 0)
		HighlightThisTitle(pos);

	var http = getHTTPObject(); 

    if (show == "localavail0" || show == "autoavail0")
        http.open("GET", strServerRoot + "search/components/availability.aspx?level=local&pos=" + pos + "&morelink=0" + "&bibid=" + nBibID + "&requestlevel=" + strRequestLevel, true);
    else if (show == "localavail1" || show == "autoavail1")
        http.open("GET", strServerRoot + "search/components/availability.aspx?level=local&pos=" + pos + "&morelink=1" + "&bibid=" + nBibID + "&requestlevel=" + strRequestLevel, true);
    else if (show == "systemavail")
        http.open("GET", strServerRoot + "search/components/availability.aspx?level=system&pos=" + pos + "&bibid=" + nBibID + "&requestlevel=" + strRequestLevel, true);
    else if (show == "details" || show == "autodetails")
        http.open("GET", strServerRoot + "search/components/details.aspx?pos=" + pos, true);
    else if (show == "marc")
        http.open("GET", strServerRoot + "search/components/marc.aspx?pos=" + pos, true);
    else if (show == "similar-ti")
        http.open("GET", strServerRoot + "search/components/similartitles.aspx?isbn=" + isbn + "&pos=" + pos, true);
    else if (show == "similar-au")
        http.open("GET", strServerRoot + "search/components/similarauthors.aspx?isbn=" + isbn, true);
    else if (show == "nextreads")
        http.open("GET", strServerRoot + "search/components/nextreads.aspx?isbn=" + isbn, true);
    else if (show == "mapit")
    {
        if (nNovelistSelectFullDisplay == 1 && document.getElementById('novsel-full_' + pos) != null)
            document.getElementById('novsel-full_' + pos).innerHTML = "";
        document.getElementById("content_" + pos).innerHTML = "<iframe width=100% height=600 frameborder=0 src=" + strServerRoot + "search/components/mapit.aspx?pos=" + pos + "></iframe>";
        ShowExtendedOptions(pos, isbn, show);
        return;
    }
    else 
    {
        document.getElementById("content_" + pos).innerHTML = "";
        return;
    }

    if (show == "autoavail0" || show == "autoavail1" || show == "autodetails")
        http.onreadystatechange = function () { handleHttpResponseContentInitial(http, pos, isbn, show) };
    else
        http.onreadystatechange = function () { handleHttpResponseContent(http, "content_" + pos, isbn, show) };
	
	http.send(null);
    document.body.style.cursor = "wait";
}

function LogFusionTransaction(pos, status)
{
	var http = getHTTPObject(); 
    http.open("GET", strServerRoot + "search/components/fusionProcess.aspx?pos=" + pos + "&status=" + status);
	http.send(null);
}

function FusionAccessDenied(pos, message)
{
    LogFusionTransaction(pos, 0);
    alert(message);
}

function FusionLoginRequired(pos, message, pageURL, bibID, pacURL)
{
    LogFusionTransaction(bibID, 0);
    var sAns = confirm(message + ' ');
    if (sAns == true) 
        window.location = pacURL + '/logon.aspx?src=' + escape(pageURL);

    return;
}

function ShowFusionElement(pos, isbn, show, url, mediaType, videoType)
{
    var strBuff;
    
    if (IsThisTitleExpanded(pos) == false)
        ExpandThisTitle(pos, isbn);
       
	HighlightThisTitle(pos);

	LogFusionTransaction(videoType, 1);

    if (mediaType == 9) // Inline HTML/Text fragment
    {
	    var http = getHTTPObject(); 
        http.open("GET", url, true);
        http.onreadystatechange = function () { handleHttpResponseContentInitial(http, pos, isbn, '') };
    	http.send(null);
        document.body.style.cursor = "wait";
        return;
    }
    
    if (mediaType == 5) // Images
        strBuff = '<img src="' + url + '">' + strFusionCopyrightNotice;
    else if (mediaType == 1) // Audio -- NOT CURRENTLY BEING USED
        strBuff = '<embed src="' + url + '" autostart=true loop=false volume=60 height=360 width=400>';
    else if (mediaType == 11) // Video -- NOT CURRENTLY BEING USED
    {
        if (videoType == 1) // Windows Media 
            strBuff = '<OBJECT ID="MediaPlayer" WIDTH="400" HEIGHT="360" CLASSID="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" STANDBY="Loading Windows Media Player components..." TYPE="application/x-oleobject"> <PARAM NAME="FileName" VALUE="' + url + '"><PARAM name="ShowControls" VALUE="true"><param name="ShowStatusBar" value="false"><PARAM name="ShowDisplay" VALUE="false"><PARAM name="autostart" VALUE="true"><EMBED TYPE="application/x-mplayer2" SRC="' + url + '" NAME="MediaPlayer" WIDTH="192" HEIGHT="190" ShowControls="1" ShowStatusBar="0" ShowDisplay="0" autostart="0"></EMBED></OBJECT>';
        else if (videoType == 2) // Quicktime
            strBuff = '<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="400" HEIGHT="360" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab"><PARAM name="SRC" VALUE="' + url + '"><PARAM name="AUTOPLAY" VALUE="true"><PARAM name="CONTROLLER" VALUE="true"><EMBED SRC="' + url + '" WIDTH="400" HEIGHT="360" AUTOPLAY="true" CONTROLLER="true" PLUGINSPAGE="http://www.apple.com/quicktime/download/"></EMBED></OBJECT>';  
    }
         
	document.getElementById("content_" + pos).innerHTML = strBuff;

    ShowExtendedOptions(pos, isbn, show);
}


function HighlightThisTitle(id)
{
	tds = document.getElementsByTagName("td");

	for (i=0; i<tds.length; i++) 
	{
		thisTD = tds[i];
		if (thisTD.id == 'srcp_' + id)
			thisTD.className = "ResultsCoverPaneHigh";
		else if (thisTD.id.indexOf('srcp_') == 0)
			thisTD.className = "ResultsCoverPane";

		if (thisTD.id == 'srtp_' + id)
			thisTD.className = "ResultsTitlePaneHigh";
		else if (thisTD.id.indexOf('srtp_') == 0)
			thisTD.className = "ResultsTitlePane";
	}
}

function SetDisplayAttribute(pos, isbn, attr)
{
	var ltfl_id = 'ltfl_widgets_' + isbn + '_' + pos;

	if (document.getElementById)
	{
	    document.getElementById('expanded_' + pos).style.display = attr;
		document.getElementById('button_less_' + pos).style.display = attr;
	    document.getElementById('options_' + pos).style.display = attr;
		document.getElementById('content_' + pos).style.display = attr;
		if (nLibraryThingTagsEnabled == 1 && typeof LibraryThingConnector != 'undefined' && isbn != '' && document.getElementById(ltfl_id))
		    document.getElementById(ltfl_id).style.display = attr;
		if (nNovelistSelectFullDisplay == 1 && attr == 'none' && document.getElementById('novsel-full_' + pos) != null)
		    document.getElementById('novsel-full_' + pos).innerHTML = "";
    }
	else if (document.all)
	{
		document.all['expanded_' + pos].style.display = attr;
		document.all['button_less_' + pos].style.display = attr;
		document.all['options_' + pos].style.display = attr;
		document.all['content_' + pos].style.display = attr;
		if (nLibraryThingTagsEnabled == 1 && typeof LibraryThingConnector != 'undefined' && isbn != '' && document.all[ltfl_id]) 
		    document.all[ltfl_id].style.display = attr;
		if (nNovelistSelectFullDisplay == 1 && attr == 'none' && document.all['novsel-full_' + pos])
		    document.all['novsel-full_' + pos].innerHTML = "";   
    }
	else if (document.layers)
	{
		document.layers['expanded_' + pos].style.display = attr;
		document.layers['button_less_' + pos].style.display = attr;
		document.layers['options_' + pos].style.display = attr;
		document.layers['content_' + pos].style.display = attr;
		if (nLibraryThingTagsEnabled == 1 && typeof LibraryThingConnector != 'undefined' && isbn != '' && document.layers[ltfl_id])
		    document.layers[ltfl_id].style.display = attr;
		if (nNovelistSelectFullDisplay == 1 && attr == 'none' && document.layers['novsel-full_' + pos])
		    document.layers['novsel-full_' + pos].innerHTML = "";  
    }
}


function ExpandThisTitle(pos, isbn) 
{
    SetDisplayAttribute(pos, isbn, "block");

    if (nLibraryThingTagsEnabled == 1 && typeof LibraryThingConnector != 'undefined' && isbn != '')
        LibraryThingConnector.backends.polaris.widgets.run(isbn, pos);
    
    location.hash = '#__pos' + pos;
}


function CollapseThisTitle(pos, isbn)
{
    SetDisplayAttribute(pos, isbn, "none");
}


function toggleDetails(pos, bAutoLoadAvailability, bMoreLink, url, mediaType, videoType, isbn, bibid) 
{
    ResetTimer();

    var sISBN = '';
    if (isbn)
        sISBN = isbn;

    HighlightThisTitle(pos);
    if (IsThisTitleExpanded(pos) && url == "")
    {
        CollapseThisTitle(pos, sISBN);
        document.getElementById('content_' + pos).innerHTML = "";
    }
    else
    {
        ExpandThisTitle(pos, sISBN);
        if (url != "")
            ShowFusionElement(pos, sISBN, '', url, mediaType, videoType);
        else if (bAutoLoadAvailability == 1)
        {
            if (bMoreLink == 0)
                ShowContent(pos, "autoavail0", 1, sISBN, bibid);
            else
                ShowContent(pos, "autoavail1", 1, sISBN, bibid);
        }
        else
            ShowContent(pos, "autodetails", 1, sISBN, bibid);
    }
}

function checkRequestLevel(id) 
{
    ResetTimer();
	var http;
	var http = getHTTPObject();
    http.open("GET", strServerRoot + "search/components/bibtype.aspx?id=" + id, false);
    http.send(null);

    if (http.responseText.indexOf("POWERPAC-ERROR:TIMEOUT") != -1) 
    {
        SessionTimedOut();
        return "TIMEOUT";
    }

    var strIsSerialBib = http.responseText.indexOf("IsSerialBib:N") != -1 ? "N" : "Y";
    var strIsMultiPartSetBib = http.responseText.indexOf("IsMultiPartSetBib:N") != -1 ? "N" : "Y";

    return (strIsSerialBib + strIsMultiPartSetBib);
}

function chilifreshComplete(pos, isbn) 
{
    HighlightThisTitle(pos);
    ExpandThisTitle(pos, isbn);
    ShowExtendedOptions(pos, isbn, '');
}

function ShowSyndetics(pos, ids, key, file) 
{
	HighlightThisTitle(pos);

	var http = getHTTPObject(); 

    http.open("GET", strServerRoot + "search/components/syndetics.aspx?ids=" + ids + "&key=" + key + "&file=" + file, true);

    http.onreadystatechange = function () { handleHttpResponseContent(http, "content_" + pos, '', '') };
	http.send(null);
    document.body.style.cursor = "wait";
}

function ShowBakerAndTaylor(pos, ids, key) 
{
	HighlightThisTitle(pos);

	var http = getHTTPObject(); 

    http.open("GET", strServerRoot + "search/components/bakerandtaylor.aspx?ids=" + ids + "&key=" + key, true);

	http.onreadystatechange = function () { handleHttpResponseContent(http, "content_" + pos, '', '') };
	http.send(null);
    document.body.style.cursor = "wait";
}

function ShowNovelistSelect(pos, isbn) 
{
    HighlightThisTitle(pos);

    if (nNovelistSelectFullDisplay == 1 && document.getElementById('novsel-full_' + pos) != null)
        document.getElementById('novsel-full_' + pos).innerHTML = "";

    document.getElementById("content_" + pos).innerHTML = '<div class="ContentsHeader">' + strNovelistSelectHeader + '</div>' + document.getElementById('novsel_' + isbn).innerHTML; 
}

function ToggleNC(clusterid)
{        
	var http = getHTTPObject();

    http.open("GET", strServerRoot + "search/components/narrowsearchdash.aspx?clusterid=" + clusterid, true);
	http.onreadystatechange = function () { handleHttpResponseContent(http, "dashNarrowSearch", '', '') };
	http.send(null);
    document.body.style.cursor = "wait";
}

function ToggleDashList(divid)
{
    var element;

	if (document.getElementById)
        element = document.getElementById(divid);
	else if (document.all)
		element = document.all[divid];
	else if (document.layers)
		element = document.layers[divid];
		
    if (element.style.display == "block")
        element.style.display = "none";
    else
        element.style.display = "block";
}

function ToggleTLMenu(e, div)
{
    TLstopB(e);
    
    var elems=document.getElementsByName(div);
    
    if (elems.length == 0) 
        return; 
    
    for(var i=0;i<elems.length;i++)
    {
        var obj = elems[i], dp = "";
        if (obj.style.display == "")
        {
            dp="none";
        }
        obj.style.display = dp;
    }
    
    return false;
}

function TLstopB(e)
{
    if (!e)
        e = window.event;    
    e.cancelBubble = true;
}

function GetWindowinfo(bHeight) {
    // Find the size of the window
    var nHeight = 0;
    var nHeight2 = 0;

    if (bHeight == true) {
        if (typeof (window.innerWidth) == 'number') {
            //Non-IE
            nHeight = window.innerHeight;
        } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
            //IE 6+ in 'standards compliant mode'
            nHeight = document.documentElement.clientHeight;
        } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
            //IE 4 compatible
            nHeight = document.body.clientHeight;
        }
        if (document.body && document.body.scrollHeight) {
            nHeight2 = document.body.scrollHeight;
        }
    } else {
        if (typeof (window.innerWidth) == 'number') {
            //Non-IE
            nHeight = window.innerWidth;
        } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
            //IE 6+ in 'standards compliant mode'
            nHeight = document.documentElement.clientWidth;
        } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
            //IE 4 compatible
            nHeight = document.body.clientWidth;
        }
        if (document.body && document.body.scrollWidth) {
            nHeight2 = document.body.scrollWidth;
        }
    }
    if (nHeight2 > nHeight) {
        nHeight = nHeight2;
    }

    return nHeight;
}

function GetScrollOffests(bIsofX) {
    // Get scroll offsets
    nScrollPos = 0;
    if (bIsofX == true) {

        if (typeof (window.pageYOffset) == 'number') {
            //Netscape compliant
            nScrollPos = window.pageXOffset;
        } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
            //DOM compliant
            nScrollPos = document.body.scrollLeft;
        } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
            //IE6 standards compliant mode
            nScrollPos = document.documentElement.scrollLeft;
        }
    }
    else {

        if (typeof (window.pageYOffset) == 'number') {
            //Netscape compliant
            nScrollPos = window.pageYOffset;
        } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
            //DOM compliant
            nScrollPos = document.body.scrollTop;
        } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
            //IE6 standards compliant mode
            nScrollPos = document.documentElement.scrollTop;
        }
    }
    return nScrollPos;
}






function DoSMS(MyDIv, SMSDimDiv, MyTitle, IMGUrl, Greet1, Greet2, TitleLab, MobileLab, CarrierLab, SENDBut, CLOSEBut, CLEARBut, CallNum, Bran, Des, MobilePhone1, MobilePhone2, MobilePhone3, CarrierID, URLTitle) {

    var browserName = navigator.appName;
    ResetTimer();
    var myWidth = GetWindowinfo(false);
    var myHeight = GetWindowinfo(true);
    var scrOfX = GetScrollOffests(true);
    var scrOfY = GetScrollOffests(false);
    myWidth = myWidth - 5;
    myHeight = myHeight - 5;
    var DimDiv = document.getElementById(SMSDimDiv);
    DimDiv.style.height = myHeight;
    DimDiv.style.width = myWidth;
    DimDiv.style.visibility = 'visible';
    DimDiv.style.display = 'block';

    // Grab Bar Creation
    var AnchorDiv = document.getElementById(MyDIv);
    var mNewdiv = document.createElement("div")
    var GrabDiv = 'smsgrab' + MyDIv
    mNewdiv.setAttribute('id', GrabDiv);
    // Browser differences sometimes crop up
    if (browserName == "Netscape") {
        mNewdiv.setAttribute('class', 'OptionsBar')
    } else {
        mNewdiv.setAttribute('className', 'OptionsBar')
    }
    if (browserName == "Netscape") {
        clrtext = "draglightbox(event,'" + MyDIv + "',100,250);"
        mNewdiv.setAttribute("onmousedown", clrtext);
    } else {
        mNewdiv.onmousedown = function () { draglightbox(event, MyDIv, 100, 10 ); };
    }
    var mnewjs = document.createElement('script')
    mnewjs.setAttribute('src', '../scripts/moveit.js');
    mnewjs.setAttribute('language', 'javascript');
    mnewjs.setAttribute('type', 'text/javascript');
    var jsDivNam = 'tmpjs' + MyDIv
    mnewjs.setAttribute('id', jsDivNam);
    AnchorDiv.appendChild(mnewjs);
    var newmtab = document.createElement('table');
    newmtab.setAttribute('width', '100%');
    var newmtbody = document.createElement('tbody');
    var mtabtr = document.createElement('tr');
    var mtabcell = document.createElement('td');
    mtabcell.setAttribute('align', 'right');
    mtabcell.setAttribute('valign', 'top');
    var mtabimg = document.createElement('img');
    mtabimg.setAttribute('src', '../themes/classic/delete.gif');
    mtabimg.setAttribute('alt', 'Close');
    mtabimg.align = 'right';
    if (browserName == "Netscape") {
        clrtext = "clearsms('" + MyDIv + "','" + SMSDimDiv + "');"
        mtabimg.setAttribute("onClick", clrtext);
    } else {
        mtabimg.onclick = function () { clearsms(MyDIv, SMSDimDiv); };
    }
    mtabcell.appendChild(mtabimg);
    mtabtr.appendChild(mtabcell);
    newmtbody.appendChild(mtabtr);
    newmtab.appendChild(newmtbody);
    mNewdiv.appendChild(newmtab);
    AnchorDiv.appendChild(mNewdiv);
    // END Grab Bar Creation

    var MyTab = document.createElement('table');
    MyTab.setAttribute('cellpadding', '1');
    MyTab.setAttribute('cellspacing', '1');
    MyTab.setAttribute('border', '0');
    MyTab.setAttribute('id', 'smsTab');
    var MyTabBody = document.createElement('tbody');
    var MyTabRow = document.createElement('tr');
    var MyTabCell = document.createElement('td');
    MyTabCell.setAttribute('align', 'middle');
    MyTabCell.setAttribute('valign', 'center');
    var Myimg = document.createElement('img');
    Myimg.setAttribute('src', IMGUrl);
    Myimg.setAttribute('alt', 'device');
    MyTabCell.appendChild(Myimg);
    MyTabRow.appendChild(MyTabCell);
    MyTabCell = document.createElement('td');
    MyTabCell.setAttribute('align', 'left');
    MyTabCell.setAttribute('valign', 'top');
    // Create a second table to hold the form elements
    var MyTab1 = document.createElement('table');
    MyTab1.setAttribute('cellpadding', '1');
    MyTab1.setAttribute('cellspacing', '1');
    MyTab1.setAttribute('border', '0');
    var MyTabBody1 = document.createElement('tbody');
    var MyTabRow1 = document.createElement('tr');
    var MyTabCell1 = document.createElement('td');
    MyTabCell1.setAttribute('align', 'middle');
    MyTabCell1.setAttribute('valign', 'center');
    //Add The greeting
    var strEl = document.createTextNode(Greet1);
    var MyStrong = document.createElement("strong");
    MyStrong.appendChild(strEl);
    MyTabCell1.appendChild(MyStrong);
    var MyBreak = document.createElement("br");
    MyTabCell1.appendChild(MyBreak);
    strEl = document.createTextNode(Greet2);
    MyTabCell1.appendChild(strEl);

    MyBreak = document.createElement("br")
    MyTabCell1.appendChild(MyBreak);
    MyBreak = document.createElement("br")
    MyTabCell1.appendChild(MyBreak);
    MyBreak = document.createElement("br")
    MyTabCell1.appendChild(MyBreak);
    // Begin a new table to hold the various form elements
    var MyTab3 = document.createElement('table');
    MyTab3.setAttribute('cellpadding', '1');
    MyTab3.setAttribute('cellspacing', '1');
    MyTab3.setAttribute('border', '0');
    var MyTabBody3 = document.createElement('tbody');
    var MyTabRow3 = document.createElement('tr');
    var MyTabCell3 = document.createElement('td');
    MyTabCell3.setAttribute('style', 'width: 98px;');
    MyTabCell3.setAttribute('align', 'left');
    MyTabCell3.setAttribute('valign', 'top');
    // Add title label
    var strEl3 = document.createTextNode(TitleLab + ':');
    var MyStrong3 = document.createElement("strong");
    MyStrong3.appendChild(strEl3);
    MyTabCell3.appendChild(MyStrong3);
    MyTabRow3.appendChild(MyTabCell3);
    //Add Title
    MyTabCell3 = document.createElement('td');
    strEl3 = document.createTextNode(MyTitle);
    MyTabCell3.appendChild(strEl3);
    MyTabRow3.appendChild(MyTabCell3);
    MyTabBody3.appendChild(MyTabRow3);
    //Add mobile phone label
    MyTabRow3 = document.createElement('tr');
    MyTabCell3 = document.createElement('td');
    strEl3 = document.createTextNode(MobileLab + ':');
    MyStrong3 = document.createElement("strong");
    MyStrong3.appendChild(strEl3);
    MyTabCell3.appendChild(MyStrong3);
    MyTabRow3.appendChild(MyTabCell3);
    //Add mobile phone input box1
    MyTabCell3 = document.createElement('td');
    MyTabCell3.setAttribute('align', 'left');
    MyTabCell3.setAttribute('valign', 'top');
    var elem = document.createElement("input");
    elem.setAttribute("type", "text");
    elem.setAttribute("id", "txtMobile1");
    elem.setAttribute("maxLength", "3");
    elem.setAttribute("size", "3");
    if (browserName == "Netscape") {
        elem.setAttribute("onKeyUp", "return MozvalidateSMSPhoneNumber(event,1)");
    }
    MyTabCell3.appendChild(elem);
    strEl3 = document.createTextNode(' - ');
    MyTabCell3.appendChild(strEl3);
    //Add mobile phone input box2
    elem = document.createElement("input");
    elem.setAttribute("type", "text");
    elem.setAttribute("id", "txtMobile2");
    elem.setAttribute("maxLength", "3");
    elem.setAttribute("size", "3");
    if (browserName == "Netscape") {
        elem.setAttribute("onKeyUp", "return MozvalidateSMSPhoneNumber(event,2)");
    }
    MyTabCell3.appendChild(elem);
    strEl3 = document.createTextNode(' - ');
    MyTabCell3.appendChild(strEl3);
    //Add mobile phone input box3
    elem = document.createElement("input");
    elem.setAttribute("type", "text");
    elem.setAttribute("id", "txtMobile3");
    elem.setAttribute("maxLength", "4");
    elem.setAttribute("size", "4");
    if (browserName == "Netscape") {
        elem.setAttribute("onKeyUp", "return MozvalidateSMSPhoneNumber(event,3)");
    }
    MyTabCell3.appendChild(elem);
    MyTabRow3.appendChild(MyTabCell3);
    MyTabBody3.appendChild(MyTabRow3);
    //Add Carrier Label
    MyTabRow3 = document.createElement('tr');
    MyTabCell3 = document.createElement('td');
    strEl3 = document.createTextNode(CarrierLab + ':');
    MyStrong3 = document.createElement("strong");
    MyStrong3.appendChild(strEl3);
    MyTabCell3.appendChild(MyStrong3);
    MyTabRow3.appendChild(MyTabCell3);
    //Add Carrier dropdown
    MyTabCell3 = document.createElement('td');
    MyTabCell3.setAttribute('align', 'left');
    MyTabCell3.setAttribute('valign', 'top');
    elem = document.createElement('select');
    elem.setAttribute("id", "CarrierID");
    elem.setAttribute("style", "width: 215px;");

    MyTabCell3.appendChild(elem);
    MyTabRow3.appendChild(MyTabCell3);
    MyTabBody3.appendChild(MyTabRow3);

    //Send Button - needs work
    MyTabRow3 = document.createElement('tr');
    MyTabCell3 = document.createElement('td');
    MyTabCell3.setAttribute("colSpan", "3");
    MyTabCell3.setAttribute('align', 'center');
    MyTabCell3.setAttribute('valign', 'top');
    MyBreak3 = document.createElement("br");
    MyTabCell3.appendChild(MyBreak);
    elem = document.createElement("input");
    elem.setAttribute("id", "btnSend");
    elem.setAttribute("type", "button");
    elem.setAttribute("value", SENDBut);
    if (browserName == "Netscape") {
        var clrtext = "sendSMS('" + URLTitle + "','" + CallNum + "','" + Des + "','" + Bran + "','" + MyDIv + "','" + SMSDimDiv + "');"
        elem.setAttribute("onClick", clrtext);
    }
    MyTabCell3.appendChild(elem);
    strEl = document.createTextNode(' ');
    MyTabCell3.appendChild(strEl)
    //Clear Button - done
    elem = document.createElement("input");
    elem.setAttribute("id", "btnReset");
    elem.setAttribute("type", "reset");
    elem.setAttribute("value", CLEARBut);
    MyTabCell3.appendChild(elem);
    strEl = document.createTextNode(' ');
    MyTabCell3.appendChild(strEl)
    // Close Button - done
    elem = document.createElement("input");
    elem.setAttribute("id", "btnClose");
    elem.setAttribute("type", "button");
    if (browserName == "Netscape") {
        clrtext = "clearsms('" + MyDIv + "','" + SMSDimDiv + "');"
        elem.setAttribute("onClick", clrtext);
    }
    elem.setAttribute("value", CLOSEBut);
    MyTabCell3.appendChild(elem);
    MyTabRow3.appendChild(MyTabCell3);
    MyTabBody3.appendChild(MyTabRow3);



    // At End of table 3
    MyTab3.appendChild(MyTabBody3);
    MyTabCell1.appendChild(MyTab3);
    //At End of table 2
    MyTabRow1.appendChild(MyTabCell1);
    MyTabBody1.appendChild(MyTabRow1);
    MyTab1.appendChild(MyTabBody1);
    // At End of table 1
    MyTabCell.appendChild(MyTab1);
    MyTabRow.appendChild(MyTabCell);
    MyTabBody.appendChild(MyTabRow);
    MyTab.appendChild(MyTabBody);
    AnchorDiv.appendChild(MyTab);

    AnchorDiv.style.visibility = 'visible';
    AnchorDiv.style.display = 'block';
    AnchorDiv.style.top = scrOfY + 100;


    if (browserName != "Netscape") {
        var MyEl = document.getElementById("txtMobile1");
        MyEl.onkeyup = function() { return validateSMSPhoneNumber(event, '1'); };
        MyEl = document.getElementById("txtMobile2");
        MyEl.onkeyup = function() { return validateSMSPhoneNumber(event, '2'); };
        MyEl = document.getElementById("txtMobile3");
        MyEl.onkeyup = function() { return validateSMSPhoneNumber(event, '3'); };
        MyEl = document.getElementById("btnClose");
        MyEl.onclick = function() { clearsms(MyDIv, SMSDimDiv); };
        MyEl = document.getElementById("btnSend");
        MyEl.onclick = function() { sendSMS(URLTitle, CallNum, Des, Bran, MyDIv, SMSDimDiv); };
    }
    var Mob1 = document.getElementById("txtMobile1");
    // Set Values for Form elements
    BuildFeList('CarrierID', 'CarrierID', 'CarrierName', 'carrier', CarrierID);
    if (MobilePhone1.length = 3 && MobilePhone2.length == 3 && MobilePhone3.length == 4) {
        var Mob2 = document.getElementById("txtMobile2");
        var Mob3 = document.getElementById("txtMobile3");
        Mob1.value = MobilePhone1;
        Mob2.value = MobilePhone2;
        Mob3.value = MobilePhone3;
    }

    Mob1.focus();

}


function MozvalidateSMSPhoneNumber(event,section) {

    var keyCode = event.keyCode;
    var keyShft = event.shftkey;
    var Mob1 = document.getElementById('txtMobile1')
    var Mob2 = document.getElementById('txtMobile2')
    var Mob3 = document.getElementById('txtMobile3')
    // alert(keyCode);
    // alert(keyShft);
    //if ((keyCode >= 32 && keyCode <= 45) || (keyCode >= 58 && keyCode <= 255))
    //	return false;
    //else	

    if (keyCode == 9) {
        return;   //  forget about tabs
    }
    if (keyCode == 16) {
        return;   // forget about the shift key
    }
    switch (section) {
        case 1:
            if (Mob1.value.length >= 3)
                if (event.shftkey == false) {
                Mob3.focus();
            }
            else {
                Mob2.focus();
            }
            break;
        case 2:
            if (Mob2.value.length >= 3)
                if (event.shftkey == false) {
                Mob1.focus();
            }
            else {
                Mob3.focus();
            }
            break;
        case 3:
            if (Mob3.value.length >= 4)
                if (event.shftkey == false) {
                Mob3.focus();
            }

            break;
    }
}



function validateSMSPhoneNumber(event,section) {
    ResetTimer();
    if (event.keyCode) {
        keyCode = event.keyCode;
    }
    else {
        keyCode = event.charCode
    }
    var Mob1 = document.getElementById('txtMobile1');
    var Mob2 = document.getElementById('txtMobile2');
    var Mob3 = document.getElementById('txtMobile3');
    var Car = document.getElementById('CarrierID');
    
    

    if (keyCode == 9) {
        return;   //  forget about tabs
    }
    if (keyCode == 16) {
        return;   // forget about the shift key
    }
    
    switch (section) {
        case '1':
            if (Mob1.value.length >= 3) 
            {
                Mob2.focus();
            }
            break;
        case '2':
            if (Mob2.value.length >= 3) 
            {
                Mob3.focus();
            }
            break;
        case '3':
            if (Mob3.value.length >= 4) {
                Car.focus();
            }

            break;
    }
}

function clearsms(MyDIv, SMSDimDiv) {
    ResetTimer();
    var DivClse = document.getElementById(MyDIv);
    var DivClse2 = document.getElementById(SMSDimDiv);
    var DivRem = document.getElementById('smsTab')
    DivClse.removeChild(DivRem);
    var GrabDiv = 'smsgrab' + MyDIv
    var DivRem2 = document.getElementById(GrabDiv);

    
    var jsDivNam = 'tmpjs' + MyDIv
    var DivRem3 = document.getElementById(jsDivNam);

    DivClse.removeChild(DivRem3);
    DivClse.removeChild(DivRem2);
    DivClse.style.visibility = 'hidden';
    DivClse.style.display = 'none';
    DivClse2.style.visibility = 'hidden';
    DivClse2.style.display = 'none';
    return true;
}

function sendSMS(SMSTitle, SMSCallNum, SMSDes, SMSBran, MyDIv, SMSDimDiv) {
    ResetTimer();
    var Mob1 = document.getElementById("txtMobile1");
    var Mob2 = document.getElementById("txtMobile2");
    var Mob3 = document.getElementById("txtMobile3");
    var SMSCar = document.getElementById("CarrierID");
 
    var Opt2 = Mob1.value;
    var Opt3 = Mob2.value;
    var Opt4 = Mob3.value;
    var Option2 = SMSCar[SMSCar.selectedIndex].value;
    if (Option2 == 0) {
        alert('Please select a carrier.');
        return false;
    }
    if (Opt2.length != 3) {
        alert('Please enter a valid 10-digit phone number.');
        return false;
    }
    if (Opt3.length != 3) {
        alert('Please enter a valid 10-digit phone number.');
        return false;
    }
    if (Opt4.length != 4) {
        alert('Please enter a valid 10-digit phone number.');
        return false;
    }
    var Option3 = Opt2 + Opt3 + Opt4;
    if (!IsItANumber(Option3)) {
        alert('Please enter a valid 10-digit phone number.');
        return false;
    }

    var FileName = "./components/ajaxSMS.aspx";
    if (SMSCallNum.length == 0) {
        SMSCallNum = "CALL";
    }
    if (SMSDes.length == 0) {
        SMSDes = "DES";
    }
    var Option1 = "?Option1=mailit&Option2=" + Option2 + "&Option3=" + Option3 + "&Option4=" + SMSTitle + "&Option5=" + SMSCallNum + "&Option6=" + SMSBran + "&Option7=" + SMSDes;
    var FileName = "./components/ajaxSMS.aspx";

    GetRes(FileName, Option1);
    alert('Text message sent.');










    var DivClse = document.getElementById(MyDIv);

    // Remove the grab Div
    var GrabDiv = 'smsgrab' + MyDIv
    var DivRem2 = document.getElementById(GrabDiv);

    // Remove the Javascript div
    var jsDivNam = 'tmpjs' + MyDIv
    var DivRem3 = document.getElementById(jsDivNam);

    DivClse.removeChild(DivRem3);
    DivClse.removeChild(DivRem2);



    var DivClse2 = document.getElementById(SMSDimDiv);
    var DivRem = document.getElementById('smsTab')
    DivClse.removeChild(DivRem);
    DivClse.style.visibility = 'hidden';
    DivClse.style.display = 'none';
    DivClse2.style.visibility = 'hidden';
    DivClse2.style.display = 'none';
    return true;
}


function GetRes(FileName, Option1) {
    var PagURL = FileName + Option1
    ajaxRequest(PagURL);
    var xmlDoc = ajaxreq.responseXML;
    
}



function BuildFeList(FormElement, ValuePart, TextPart, Opt1, currentVal) {
    var Fe = document.getElementById(FormElement);
    var FileName = "./components/ajaxSMS.aspx";
    var Option1 = "?Option1=" + Opt1
    var PagURL = FileName + Option1
    ajaxRequest(PagURL);
    var xmlDoc = ajaxreq.responseXML;
    var RecordSetIDs = xmlDoc.getElementsByTagName(ValuePart);
    var RecordSetNames = xmlDoc.getElementsByTagName(TextPart);
    if (currentVal == '0') {
        Fe[Fe.length] = new Option('<Select a ' + Opt1 + '>', '0', true, true);
    } else {
        Fe[Fe.length] = new Option('<Select a ' + Opt1 + '>', '0', false, false);
    }
    for (var ii = 0; ii < RecordSetIDs.length; ii++) {
        if (RecordSetIDs[ii].firstChild.nodeValue == currentVal) {
            Fe[Fe.length] = new Option(RecordSetNames[ii].firstChild.nodeValue, RecordSetIDs[ii].firstChild.nodeValue, true, true);
        } else {
            Fe[Fe.length] = new Option(RecordSetNames[ii].firstChild.nodeValue, RecordSetIDs[ii].firstChild.nodeValue, false, false);
        }
    }
    return true;
}


function IsItANumber(sText) {
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;


    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;

}
