var currentSlide = '';
var currentLargeSlide = ''; //added for zoom slide feature on 20070112
var lgwin = false;

function lg_slide() {
    Lvl_openWin('lg_slide.htm', '_lgslide', '0', '0', '0', '0', '0', 'fullscreen=1');
    return document.MM_returnValue;
}
function Lvl_openWin(u, n, w, h, l, t, c, f) {
    var x = ((screen.width - w) / 2); if (c == 1) { l = x; t = (screen.height - h) / 2; } if (c == 2) { l = x }
    f += ',top=' + t + ',left=' + l; lgwin = window.open(u, n, f); lgwin.focus();
}
function updLargeSld(lgSld) {
    try {
        if (lgwin) {

            var regExp = new RegExp("(p-p-t.*\.jpg|cs.*\.jpg|p-p-t.*\.gif|cs.*\.gif)");
            var slideOnlyName = regExp.exec(lgSld);

            lgwin.document["lg"].src = lgSld;
            lgwin.document["org"].src = lgSld;

        }
    } catch (e) {
        var err = e;
        // lgwin = false;
    }
}
var stretch2fit = "false";

/* global variable... can be forced */
var ie, ns, mz, debug, msver, os;
var ie = self.document.all;
var ns = eval("self.document.layers");
var mz = self.document.getElementById;
var os = 1; //assume pc by default
var debug = eval(rngetvar("debug", "false"));
var os, browser, version, data;

function rngetvar(el, def) { //el=str, def= default value
    var urls = new String(eval("self.location"));
    var re = new RegExp("\\?[\\w\\W]*" + el + "=([^\\&\\?#]*)", "i");
    var arr = re.exec(urls);
    if (arr && arr.length > 1) return arr[1];
    else return def;
}

function echo(str) {
    document.open();
    document.write(str);
    document.close();
}

function html_friendly(ss) { //parses string & conver to html friendly characters
    ss = new String(ss);
    ss = ss.replace(/\</g, '&lt;');
    ss = ss.replace(/\>/g, '&gt;');
    return "<code><pre>" + ss + "</pre></code>";
}

// browser and os detection code
function detectbrowser() {
    var ua = navigator.userAgent.toLowerCase();
    if (detectagent('konqueror', ua)) { browser = "konqueror"; os = "linux"; }
    else if (detectagent('safari', ua)) browser = "safari";
    else if (detectagent('omniweb', ua)) browser = "omniweb";
    else if (detectagent('firefox', ua)) browser = "firefox";
    else if (detectagent('opera', ua)) browser = "opera";
    else if (detectagent('webtv', ua)) browser = "webtv";
    else if (detectagent('icab', ua)) browser = "icab";
    else if (detectagent('msie', ua)) browser = "ie";
    else if (!detectagent('compatible', ua)) { browser = "netscape"; version = ua.charAt(8); }
    else browser = "unknown";

    if (!version) version = ua.charAt(stringposition + data.length);

    if (detectagent('linux', ua)) os = "linux";
    else if (detectagent('x11', ua)) os = "unix";
    else if (detectagent('mac', ua)) os = "mac";
    else if (detectagent('win', ua)) os = "win";
    else os = "unknown";

}
function detectagent(type, useragent) {
    stringposition = useragent.indexOf(type) + 1;
    data = type;
    return stringposition;
}


function detectrn() {
    ns = eval("self.document.layers");
    /* os code, 1=win32,2=mac,3=other */
    navigator.plugins.refresh();
    var platform = new String(navigator.platform);
    var winre = /^win32/i;
    var macre = /mac/i;
    if (winre.test(platform)) { //windows 95+
        os = 'win';
    } else if (macre.test(platform)) {
        os = 'macx';
    } else { //unix & stuff
        os = 'unix';
    }
    // detailed browser and os detection
    detectbrowser();
}

function videorn(url, uimode, width, height) { // RealPlayer
    var ostr = new String();
    if ((ns) || (browser == 'netscape') || (browser == 'firefox') || (os == 'mac')) {
        ostr += '<embed id="MediaPlayer" name="MediaPlayer" type="audio/x-pn-realaudio-plugin"';
        ostr += 'width="' + (width) + '" height="' + (height) + '" backgroundcolor="black" ';
        ostr += 'src="' + url + '" autostart="true" autogotourl="false" ';
        ostr += 'console="theclip" nojava="true" controls="' + uimode + '"></embed>';
    } else {
        ostr += "<object id=\"MediaPlayer\" width=\"" + (width) + "\" height=\"" + (height) + "\" ";
        ostr += " classid=\"CLSID:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA\">\r\n";
        ostr += "\t<param name=\"Src\" value=\"" + url + "\" />\r\n";
        ostr += "\t<param name=\"AutoStart\" value=\"true\" />\r\n";
        ostr += "\t<param name=\"AutoGoToUrl\" value=\"false\" />\r\n";
        ostr += "\t<param name=\"Console\" value=\"theclip\" />\r\n";
        ostr += "\t<param name=\"NoJava\" value=\"true\" />\r\n";
        ostr += "\t<param name=\"Controls\" value=\"" + uimode + "\" />\r\n";
        ostr += "</object>";
    }
    if (debug) echo(html_friendly(ostr));
    else echo(ostr);
}

function OnGotoURL(url, type) { //unified sync
    handleSync(type, url);
}
function handleSync(type, url) {
    if (!type || !url) return;
    var u = url.toLowerCase();

    // process commands
    if (u.indexOf('attp') == 0) {
        eval(url.substring(7, url.lastIndexOf('&&')));
        return;
    }

    var t = type.toLowerCase();
    if (t != 'url') return;

    var iframe = null;
    var region = '';
    var delimiter = '&&';
    var index = u.indexOf(delimiter);
    if (index > 0) {
        u = url.slice(0, index);
        region = url.substr(index + delimiter.length);
        if (isNullOrBlank(region)) region = '__pop_up__';
        else iframe = parent.document.getElementById(region);
        region = region.replace(' ', '_');
    }

    var isImage = isImageUrl(u);
    if (isUrlLocal(u)) t = 'slide';
    if (region == 'region1') {
        var result = updateUrl(t, region, u, isImage);
        isImage = result.isImage;
        u = result.url;
    }

    var handle;
    if (!iframe) handle = window.open(u, region);
    else {
        var synced = false;
        if (isImage == true && isUrlLocal(iframe.src)) {
            try {
                if (t == 'slide') {
                    if (parent.frames[region].swapImage) {
                        parent.frames[region].swapImage(u);
                        synced = true;
                    }
                }
                else {
                    if (parent.frames[region].__imgViewer && parent.frames[region].swapImage) {
                        parent.frames[region].swapImage(u);
                        synced = true;
                    }
                }
            } catch (ex) { }
        }

        if (!synced) iframe.src = u;
    }

    handleUiAfterSync(t, region, u, isImage);
    return handle;
}
function updateUrl(type, region, url, isImage) {
    if (isImage) {
        if (type == 'slide') {
            currentLargeSlide = url.replace('_1.', '_lg.');
            url = 'seek.htm?img={0}'.format(url);
        }
        else {
            currentLargeSlide = url;
            url = 'viewer.htm?img={0}'.format(url);
        }
    }
    else {
        currentLargeSlide = 'slidenotavailable_lg.jpg'
    }

    return { isImage: isImage, url: url };
}
function handleUiAfterSync(type, region, slide, isImage) {
    if (region == 'region1') {
        updLargeSld(currentLargeSlide, false);
    }
    else if (region == 'Interactive') {
        window.top.changeMenu(6);
    }
}
function strsafe(istr) {
    var str = new String(istr);
    var re_q = new RegExp("'", "g");
    var re_s = new RegExp("\\\\", "g");
    if (re_q.test(str)) str = str.replace(re_q, "\\'");
    if (re_s.test(str)) str = str.replace(re_s, "\\\\");
    return (str);
}

function underscore(istr) {
    var str = new String(istr);
    var re_ = new RegExp("[ \\s\\t\\r\\n]+", "g");
    if (re_.test(str)) str = str.replace(re_, "_");
    return (str);
}

/********************************************* rn control codes *********************************************/

function StopClick() {
    if (document.MediaPlayer.CanStop()) document.MediaPlayer.DoStop();
}


function PlayClick() {
    if (document.MediaPlayer.CanPlay()) document.MediaPlayer.DoPlay();
}

function PauseClick() {
    if (document.MediaPlayer.CanPause()) document.MediaPlayer.DoPause();
    else if (document.MediaPlayer.CanPlay()) document.MediaPlayer.DoPlay();
}

function VolumeDown() {
    if (document.MediaPlayer.GetVolume() >= 10) {
        document.MediaPlayer.SetVolume(document.MediaPlayer.GetVolume() - 10);
    }
}

function VolumeUp() {
    if (document.MediaPlayer.GetVolume() <= 90) {
        document.MediaPlayer.SetVolume(document.MediaPlayer.GetVolume() + 10);
    }
}

function MuteAudioClick() {
    if (!document.MediaPlayer.GetMute()) document.MediaPlayer.SetMute(true);
    else document.MediaPlayer.SetMute(false);
}

function full_screen(Param) {
    if (Param == false) {
        document.MediaPlayer.SetOriginalSize();
    } else {
        document.MediaPlayer.SetFullScreen();
    }
}

function time2ms(istr) { //take time as string, return second in +-integer
    istr = new String(istr);
    var neg = /^-/i;
    var re = /[+-]*[0]*([1-9])/g;
    var str = new String(istr);
    if (re.test(str)) str = str.replace(re, "$1"); //eliminate leading zeros & signs
    var foo = str.split(":");
    var tsec = new Number(foo[foo.length - 1]);
    tsec += new Number(foo[foo.length - 2]) * 60;
    tsec += new Number(foo[foo.length - 3]) * 60 * 60;
    if (foo.length >= 4) tsec += new Number(foo[foo.length - 4]) * 60 * 60 * 24;
    tsec = tsec * 1000;
    if (neg.test(istr)) return (0 - tsec); //if negative
    else return (tsec);
}

function seek(tstr) {
    var _vid = self.document.MediaPlayer;
    try {
        if (_vid && _vid.GetCanSeek()) _vid.SetPosition(time2ms(tstr));
    } catch (e) {
        alert("A problem has occured with your Real Media plugin. Please re-install the plugin.");
    }
}

function getvar_parent(el, case_sensitive) { //el=str, case_sensitive=bool
    var rs = "";
    if (!case_sensitive) rs = "i";
    var urls = new String(window.parent.location);
    var re = new RegExp("\\?[\\w\\W]*" + el + "=([^\\&\\?#]*)", rs);
    var arr = re.exec(urls);
    if (arr && arr.length > 1) return arr[1];
    else return '';
}
