﻿// ecelearn common javascript






function OnSubmitForm(elementID) 
{
    if (document.location.href.search('#element') == -1) {

        document.aspnetForm.action = document.location.href + "#element" + elementID;
    } else {

        document.aspnetForm.action = document.location.href;
    }
}


// stop IE 6 from downloading background images everytime element is resized
try { document.execCommand("BackgroundImageCache", false, true); } catch (e) {};

var gPopupWindow = null;
var gPopupWindowDimensions = { width: 900, height: 800 };







// link which opens up in a popup window has been clicked
function OnClickWindowLink(e, width, height)
{
    FixEvent(e);
    e.preventDefault();
    var link = e.target;
    while(link.tagName.toLowerCase() != 'a' && link.parentNode)
    {
        link = link.parentNode;
    }
    var url = link.getAttribute('href');
    if(!url)
    {
        return;
    }
    else if(gPopupWindow && !gPopupWindow.closed)
    {
        gPopupWindow.focus();
        gPopupWindow.location = url;
        return;
    }
    var d = GetPageDimensions();
    var scroll = GetPageScroll();
    if(!width)
    {
        width = gPopupWindowDimensions.width;
    }
    if(!height)
    {
        height = Math.min(d.clientHeight, gPopupWindowDimensions.height);
    }
    // get window position from difference between click window position and document position
    var left = e.screenX - e.pageX + scroll.x + d.clientWidth / 2 - width/2; // center window on page content
    var top = e.screenY - e.pageY + scroll.y;                           // set window top at page top
    gPopupWindow = window.open(url, "linkWindow", "width=" + width + ",height=" + height + ",scrollbars=yes,resizable=yes,location=yes,left=" + left + ",top=" + top + ",screenX=" + left + ",screenY=" + top);
}

// makes all links within an element open in a popup window
function PopupExternalLinks(parent)
{
    if(!parent)
    {
        return;
    }
    var links = parent.getElementsByTagName('a');
    var urlRegex = new RegExp('^https?:\/\/(?!' + document.location.host + '($|\/))', 'i');
    for(var k in links)
    {
        var a = links[k];
        if(!a.getAttribute)
        {
            continue;
        }
        var url = a.href;
        if(url && urlRegex.test(url))
        {
            AddEventListener(a, 'click', OnClickWindowLink);
        }
    }
}

// Returns the width and height of the current page
function GetPageDimensions()
{
	var d = { width: 0, height: 0, clientWidth: 0, clientHeight: 0 };
	// dimensions of the viewport
    if(window.innerWidth)
    {
        d.clientWidth = window.innerWidth;
        d.clientHeight = window.innerHeight;
    }
    else if(document.documentElement && document.documentElement.clientWidth)
    {
        d.clientWidth = document.documentElement.clientWidth;
        d.clientHeight = document.documentElement.clientHeight;
    }
    else if(document.body)
    {
        d.clientWidth = document.body.clientWidth;
        d.clientHeight = document.body.clientHeight;
    }
    // dimensions of the page
    d.width = Math.max(document.body.scrollWidth, document.body.offsetWidth);
	d.height = Math.max(document.body.scrollHeight, document.body.offsetHeight);
	return d;
}

function GetPageScroll()
{
    var p = { x: 0, y: 0 };
    if(window.pageYOffset !== undefined)
    {
        p.x = window.pageXOffset;
        p.y = window.pageYOffset;
    }
    else if(document.documentElement && document.documentElement.scrollTop !== undefined)
    {
        p.x = document.documentElement.scrollLeft;
        p.y = document.documentElement.scrollTop;
    }
    else if(document.body)
    {
        p.x = document.body.scrollLeft;
        p.y = document.body.scrollTop;
    }
    return p;
}

// Returns the x and y position of the current page
function GetPagePosition()
{
    var p = { x: 0, y: 0 };
    if(window.screenX !== undefined)
    {
        p.x = window.screenX;
        p.y = window.screenY;
    }
    else
    {
        p.x = window.screenLeft;
        p.y = window.screenTop;
    }
    return p;
}

// Toggle the visibility of an element
function ToggleElementVisible(id)
{
    var el = document.getElementById(id);
    if(el)
    {
        el.style.display = (el.style.display == 'none') ? '' : 'none';
    }
}

function ShowElement(id,display)
{
    var el = document.getElementById(id);
    if(el)
    {
        el.style.display = display ? display : 'block';
    }
}

function HideElement(id)
{
    var el = document.getElementById(id);
    if(el)
    {
        el.style.display = 'none';
    }
}
function CssHover(tdItem,PopupMenu)
{
 
    var el = document.getElementById(tdItem);
    var el2 = document.getElementById(PopupMenu);
    if(el && el2)
    {      
       
        el2.style.display = 'block'; 
        el.className = 'editStudyGuideHover';
    }
}
function CssNormal(tdItem,PopupMenu)
{

    var el = document.getElementById(tdItem);
    var el2 = document.getElementById(PopupMenu);
    if(el && el2)
    { 
         
         el2.style.display = 'none'; 
          el.className = 'editStudyGuide'; 
          el.width = '96%';
       
    }
    
}
// Returns the position of a mouse event relative to the page
function GetMousePosition(e)
{
    var p = { x: e.clientX, y: e.clientY };
    if (window.scrollX !== undefined)
    {
        p.x += window.scrollX;
        p.y += window.scrollY;
    }
    else
    {
        p.x += document.documentElement.scrollLeft + document.body.scrollLeft;
        p.y += document.documentElement.scrollTop + document.body.scrollTop;
    }
    return p;
}

// Returns the position of an element relative to the page
function GetElementPosition(el)
{
	var p = { x: 0, y: 0 };
	if(!el)
	{
	    return p;
	}
	var parent = el;
	while (parent.offsetParent)
	{
		p.x += parent.offsetLeft;
		p.y += parent.offsetTop;
		parent = parent.offsetParent;
	}
	parent = el;
	while(parent = parent.parentNode && parent != document.body)
	{
        if(parent.scrollX !== undefined)
        {
            p.x -= parent.scrollX;
            p.y -= parent.scrollY;
        }
        else if(parent.scrollLeft !== undefined)
        {
            p.x -= parent.scrollLeft;
            p.y -= parent.scrollTop;
        }
    }
	return p;
}

// Creates a browse cookie
function CreateCookie(name, value, time, path, skipEncode)
{
  
    if(!skipEncode)
    {
        value = escape(value);
    }
	var cookie = name + '=' + value + '; ';
	if (time) {
		var date = new Date();
		date.setTime(date.getTime() + time);
		cookie = 'expires=' + date.toGMTString() + '; ';
	}
	if(!path)
	{
	    path = '/';
	}
	cookie += 'path=' + path;
	document.cookie = cookie;
}

// Reads and returns the contents of a browser cookie
function ReadCookie(name, skipUnencode)
{
	var nameEQ = name + '=';
	var cookies = document.cookie.split(';');
	for(var i = 0; i < cookies.length; i++) {
		var c = cookies[i];
		c = c.replace(/^\s+/,'');
		if (c.indexOf(nameEQ) == 0)
	    {
	        var value = c.substring(nameEQ.length,c.length);
	        if(skipUnencode)
	        {
	            return value;
	        }
	        else
	        {
    	        return unescape(value);
    	    }
	    }
	}
	return null;
}

// Deletes a browser cookie
function DeleteCookie(name)
{
	CreateCookie(name,'');
}

// Parses the boolean value of a string
function parseBoolean(b)
{
    if(typeof(b) === 'string')
    {
        return b.toLowerCase() === 'true';
    }
    else
    {
        return Boolean(b);
    }
}

// Set cursor position
function setSelectionRange(input, selectionStart, selectionEnd) {
    if (input.createTextRange) {
        var range = input.createTextRange();
        range.collapse(true);
        range.moveEnd('character', selectionEnd);
        range.moveStart('character', selectionStart);
        range.select();
    }
    else if (input.setSelectionRange) {
        input.focus();
        input.setSelectionRange(selectionStart, selectionEnd);
    }
}

// fix ie event object to be compatible with w3c events
function FixEvent(e)
{
    if(!e)
    {
        e = window.event;
    }
    if(!e.target)
    {
        e.target = e.srcElement;
    }
    if(!e.preventDefault)
    {
        e.preventDefault = function() { this.returnValue = false; };
    }
    if(!e.stopPropagation)
    {
        e.stopPropagation = function() { this.cancelBubble = true; };
    }
    if (e.pageX === undefined)
    {
		e.pageX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		e.pageY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
	return e;
}

// Add an event handler to an object
function AddEventListener(obj, eventName, handler, capture) {
    
	if(obj.addEventListener)
	{
	    // standard event
		obj.addEventListener(eventName, handler, capture);
	}
	else if(obj.attachEvent)
	{
	    // IE event
		obj.attachEvent('on' + eventName, handler);
	}
	else
	{
	    // Ye olde evente
		obj['on' + eventName] = handler;
	}
}

// Remove an event handler from an object
function RemoveEventListener(obj, eventName, handler, capture)
{
	if(obj.removeEventListener)
	{
	    // standard event
		obj.removeEventListener(eventName, handler, capture);
	}
	else if(obj.attachEvent)
	{
	    // IE event
		obj.detachEvent('on' + eventName, handler);
	}
	else
	{
	    // old event
		obj['on' + eventName] = null;
	}
}

function FireEvent(el, eventName, eventArgs)
{
    if(!eventArgs)
    {
        eventArgs = { };
    }
    var evObj;
    if(document.createEvent)
    {
        switch(eventName)
        {
            case 'abort': case 'blur': case 'change': case 'error': case 'focus': case 'load': case 'reset': case 'resize': case 'scroll':
            case 'select': case 'submit': case 'unload': default:
                evObj = document.createEvent('Events');
                evObj.initEvent(eventName, true, true);
                break;
            case 'DOMActivate': case 'DOMFocusIn': case 'DOMFocusOut':
                evObj = document.createEvent('UIEvents');
                evObj.initUIEvent(eventName, true, true, self, eventArgs.detail);
                break;
            case 'keydown': case 'keypress': case 'keyup':
                if(window.KeyEvent)
                {
                    // firefox only
                    evObj = document.createEvent('KeyEvents');
                    evObj.initUIEvent(eventName, true, true, self, eventArgs.ctrlKey, eventArgs.altKey, eventArgs.shiftKey, eventArgs.metaKey,
                        eventArgs.keyCode, eventArgs.charCode);
                }
                else
                {
                    evObj = document.createEvent('UIEvents');
                    evObj.initUIEvent(eventName, true, true, self, eventArgs.detail);
                    evObj.keyCode = eventArgs.keyCode;
                }
                break;
            case 'click': case 'mousedown': case 'mousemove': case 'mouseout': case 'mouseover': case 'mouseup':
                evObj = document.createEvent('MouseEvents');
                evObj.initMouseEvent(eventName, true, true, self, eventArgs.screenX, eventArgs.screenY, eventArgs.clientX, eventArgs.clientY,
                    eventArgs.ctrlKey, eventArgs.altKey, eventArgs.shiftKey, eventArgs.metaKey, eventArgs.button, eventArgs.relatedTarget);
                break;
            case 'DOMAttrModified': case 'DOMNodeInserted': case 'DOMNodeRemoved': case 'DOMCharacterDataModified':
            case 'DOMNodeInsertedIntoDocument': case 'DOMNodeRemovedFromDocument': case 'DOMSubtreeModified':
                evObj = document.createEvent('MutationEvents');
                evObj.initMutationEvent(eventName, true, true, self, eventArgs.prevValue, eventArgs.newValue, eventArgs.attrName,
                    eventArgs.attrChange);
            break;
        }
        el.dispatchEvent(evObj);
    }
    else if(document.createEventObject)
    {
        // IE
        var evObj = document.createEventObject();
        evObj.target = el;
        for(var k in eventArgs)
        {
            evObj[k] = eventArgs;
        }
        el.fireEvent('on' + eventName, evObj);
    }
    if(el['on' + eventName])
    {
        el['on' + eventName](evObj);
    }
}

// Print the contents of a page
//  this function only loads the page into a hidden frame
//  the page itself must call print on body.onload
function PrintPage(url)
{
    self.frames.frmPrint.location.href = url;
}

// Add a stylesheet to the page
function AddStyleSheet(url, media)
{
    var headElement = document.getElementsByTagName('head')[0];         
	var cssNode = document.createElement('link');
	cssNode.type = 'text/css';
	cssNode.rel = 'stylesheet';
	cssNode.href = url;
	if(media)
	{
    	cssNode.media = media;
    }
	headElement.appendChild(cssNode);
}

// Enable or disable a link element
function SetLinkEnabled(link, enabled)
{
    if(link.enabled === undefined)
    {
        link.enabled = true;
    }
    if(enabled == Boolean(link.enabled))
	{
		return;
	}
	link.enabled = enabled;
	if(enabled)
	{
		link.href = link.disabledhref;
		link.onclick = link.disabledonclick;
		link.className = link.disabledClass;
	}
	else
	{
		link.disabledhref = link.href;
		link.disabledonclick = link.onclick;
		link.removeAttribute('href');
		link.onclick = function() { return false; };
		link.disabledClass = link.className;
		link.className = (link.disabledClass + 'Disabled');
	}
}

// Create a delegate for an object method
function CreateDelegate(obj, method)
{
    if(arguments.length > 2)
    {
        return function() { method.apply(obj, arguments.slice(2)) };
    }
    else
    {
        return function() { method.call(obj) };
    }
}

// activate the flash control automatically
function CreateFlashObject(DivID, WIDTH, HEIGHT, URL)
{
    document.getElementById(DivID).innerHTML =
        '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' +
        'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"' +
        ' WIDTH=' + WIDTH + ' HEIGHT=' + HEIGHT + ' id="f-intro" ALIGN="">' +
        '<PARAM NAME=movie VALUE=' + URL + '> <PARAM NAME=quality VALUE=high> <PARAM NAME=scale VALUE=noscale> <PARAM NAME=wmode VALUE=transparent> <PARAM NAME=bgcolor VALUE=#FFFFFF>' +
       '<PARAM NAME="autoStart" value="-1"><EMBED src=' + URL + ' quality=high scale=noscale wmode=transparent bgcolor=#FFFFFF  WIDTH=' + WIDTH + ' HEIGHT=' + HEIGHT + ' NAME="flash" ALIGN=""' +
       'TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED></OBJECT>';
}

function ClearFormInput(parent)
{
    var inputs = parent.getElementsByTagName('input');
    for(var k = 0; k < inputs.length; k++)
    {
        var type = inputs[k].type;
        type = type || type.toLowerCase();
        if(!type || type == 'text' || type == 'password' || type == 'file')
        {
            inputs[k].value = '';
        }
        else if(type == 'radio' || type == 'checkbox')
        {
            inputs[k].checked = false;
        }
    }
    var textareas = parent.getElementsByTagName('textarea');
    for(var k = 0; k < textareas.length; k++)
    {
        textareas[k].value = '';
    }
    var selects = parent.getElementsByTagName('select');
    for(var k = 0; k < selects.length; k++)
    {
        selects[k].value = '';
    }
}

// Add the Extends method to all classes
// which allows it to inherit from another class
Function.prototype.Extends = function(parentClass)
{
    for(var k in parentClass.prototype)
    {
        this.prototype[k] = parentClass.prototype[k];
    }
    this.prototype.base = parentClass.prototype;
}

if(!String.prototype.trim)
{
    String.prototype.trim = function()
    {
        return this.replace(/^\s+/,'').replace(/\s+$/,'');
    }
}

String.prototype.stripHtml = function()
{
    var ignoreTags = arguments;
    if(ignoreTags.length > 0 && typeof(ignoreTags[0]) == 'object')
    {
        ignoreTags = ignoreTags[0];
    }
    var regex = ignoreTags && ignoreTags.length > 0 ? new RegExp('<(?!/?(' + String.join('|', ignoreTags) + ')(\\s|/|>))[^>]+>', 'g') : /<[^>]+>/g;
    return this.replace(/&nbsp;/g,' ').replace(regex, '');
}

String.prototype.containsHtml = function()
{
    var ignoreTags = arguments;
    if(ignoreTags.length > 0 && typeof(ignoreTags[0]) == 'object')
    {
        ignoreTags = ignoreTags[0];
    }
    var regex = ignoreTags && ignoreTags.length > 0 ? new RegExp('<(?!/?(' + String.join('|', ignoreTags) + ')(\\s|/|>))[^>]+>') : /<[^>]+>/;
    return regex.test(this);
}

if(!String.join)
{
    String.join = function(chr, arr)
    {
        if(!arr || !arr.length)
        {
            return '';
        }
        var str = '';
        for(var k = 0; k < arr.length; k++)
        {
            if(k > 0)
            {
                str += chr;
            }
            str += arr[k];
        }
        return str;
    }
}

//Is this correct? It looks to me like it would overwrite the last item in the array... -ds
if(!Array.prototype.push)
{
    Array.prototype.push = function(item)
    {
        this[this.length - 1] = item;
    }
}

var gDebugElement = null;

function Debug(str)
{
    if(!gDebugElement)
    {
        gDebugElement = document.createElement("ul");
        gDebugElement.className = 'debug';
        document.body.insertBefore(gDebugElement, document.body.childNodes[0]);
    }
    var item = document.createElement('li');
    item.innerHTML = str;
    gDebugElement.appendChild(item);
    gDebugElement.scrollTop = gDebugElement.scrollHeight;
}

function trimText(sString)
{
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
}

// ------------Section start: page auto refresh-------------
function setPageAutoRefresh(refreshInterval)
{
    var refreshIntervalInMs = refreshInterval * 1000;

    // return the timeout handler
    return setTimeout("window.location.reload()", refreshIntervalInMs);
}
// -------------Section end: page auto refresh--------------

// -------------Imminent timeout warning-------------------
var savedTimeDelay;
function setPageTimeoutWarning(timeDelay)
{
    if (timeDelay!=-1) //Use the timedelay given
    {
        savedTimeDelay = timeDelay;
    }
    else //Use the previously saved timedelay (hopefully there is one...)
    {
        timeDelay = savedTimeDelay;
    }
    var timeDelayInMs = timeDelay * 1000;

    // return the timeout handler
    return setTimeout("showTimeoutWarning()", timeDelayInMs);
}

function showTimeoutWarning()
{
    if (confirm("Your eceLearn session is due to time out."+'\n'+ 
                "Click 'Ok' if you are still working, or 'Cancel' to do nothing."+'\n'+'\n'+
                "Refresh your eceLearn login information?"))
                {
                PageMethods.RefreshSession(refreshSuccessful,refreshFailed);
                }
                else
                {
                //Do nothing. (Might want to log them off?)
                }
}
function refreshSuccessful(result, userContext, methodName)
{
setPageTimeoutWarning(-1);  //-1 means use the previous timedelay.
//alert(result);
}
function refreshFailed(result, userContext, methodName)
{
//alert(result);
alert ("Could not restore session.");
}

function logAjaxError(message)
{
    //PageMethods.RefreshSession(refreshSuccessful,refreshFailed);
    PageMethods.LogAjaxError(message, logErrorSuccessful, logErrorFailed);
}
function logErrorSuccessful(result, userContext, methodName)
{
//alert(result);
}
function logErrorFailed(result, userContext, methodName)
{
//alert(result);
//alert ("Could not restore session.");
}

//Function that accepts only integers
function maskKeyPress(objEvent)
{
    var shiftKeyLeft = objEvent.shiftLeft;
    var shiftKeyRight = objEvent.shiftKey;
    var specialChar = false;
    var charCode = (objEvent.which) ? objEvent.which : event.keyCode
    // Check any special characters are entered
    if(shiftKeyLeft == true || shiftKeyRight == true)
    {
        if( (charCode >= 46 && charCode <= 57 ) || (charCode >= 96 && charCode <= 105) )
        {
            specialChar = true;
        }
        else
        {
            specialChar = false;
        }
    }
    if(specialChar == false)
    {
        //Accepts backspace, delete, numerics, numerics in numpad
        if ( charCode == 8 || (charCode >= 46 && charCode <= 57 ) || (charCode >= 96 && charCode <= 105) )
        return true;
    }
    return false;
}


var CheckedClickedLinks = (function()
{
    var clickedValues= {};
    var bClicked = null;
    
    function UpdateClick(clicked)
    {
        bClicked = clicked;
    }
    
    clickedValues.UpdateClick = function(clicked){ UpdateClick(clicked); };
    clickedValues.getClickedStatus = function() {return bClicked; };
    
    return clickedValues;
}());


var WarningMessageModule = (function() {
    var myReturnObject = {};
    var needToConfirm = false;

    function UpdateStatus(status) {

        needToConfirm = status
    }



    myReturnObject.getStatus = function() { return needToConfirm;  };

    myReturnObject.UpdateStatus = function(status) { UpdateStatus(status); };

    return myReturnObject;
} ());





function OnPageUnload(e) {


    if (document.all) 
    {
        e = event;
    }

    if (!e)
    {
        e = window.event;
    }


    if (e)
    {
        if ((CheckedClickedLinks.getClickedStatus() == false && (e.target == document || e.clientX < 0 || e.clientY < 0)) || WarningMessageModule.getStatus() == true) {
            
            e.returnValue = "Do you want to leave the page without saving?";
            return e.returnValue;
        }
    }  
}






function setAClick() {

    
    CheckedClickedLinks.UpdateClick(true);
}


function cancelAClick() {

    CheckedClickedLinks.UpdateClick(false);

}


var aList = document.getElementsByTagName("a");

if (aList && aList.length > 0) {

    for (i = 0; i < aList.length; i++) {

        var a = aList[i];

        if (checkForLocal(a.href)) {

            a.onclick = setAClick;
            
            alert('setAClick');

        } else {

            a.onclick = cancelAClick;

            alert('cancelAClick');

        }

    }

}

function checkForLocal(src) {

    return (src.indexOf("localhost") != -1 ||
        src.indexOf("urdomain") != -1 || src.indexOf("javascript") != -1 || src.indexOf("mailto") != -1 || src.indexOf("#") == 0);

}

function isEmpty(input) {
    return (input == null || input == "")
}
// Return MSIE version
function getMSIEVersion() {

    return brs.match(/msie\s(\d+(\.?\d)*)/)[1];
}

function getInternetBrowser(obj) {
   
    var b = new Array("unknown", "unknown");
    var c = new Array("unknown");
    (isEmpty(obj) ? brs = navigator.userAgent.toLowerCase() : brs = obj);

    if (brs.search(/omniweb[\/\s]v?(\d+([\.-]\d)*)/) != -1) {
        // Omniweb
        b[0] = "Omniweb";
        b[1] = brs.match(/omniweb[\/\s]v?(\d+([\.-]\d)*)/)[1];
        (b[1] > 4.5 ? b[2] = "khtml" : b[2] = "omniweb");
        (brs.search(/omniweb[\/\s]((\d+([\.-]\d)*)-)?v(\d+([\.-]\d)*)/) == -1 ? b[3] = brs.match(/omniweb[\/\s](\d+([\.-]\d)*)/)[1] : b[3] = brs.match(/omniweb[\/\s]((\d+([\.-]\d)*)-)?v(\d+([\.-]\d)*)/)[4]);
        return b;
    } else if (brs.search(/opera[\/\s](\d+(\.?\d)*)/) != -1) {
        // Opera
        b[0] = "Opera";
        b[1] = brs.match(/opera[\/\s](\d+(\.?\d)*)/)[1];
        b[2] = "opera";
        b[3] = b[1];
        return b;
    } else if (brs.search(/crazy\s?browser\s(\d+(\.?\d)*)/) != -1) {
        // Crazy Browser
        b[0] = "crazy"; 6
        b[1] = brs.match(/crazy\s?browser\s(\d+(\.?\d)*)/)[1];
        b[2] = "msie";
        b[3] = getMSIEVersion();
        return b;
    } else if (brs.search(/myie2/) != -1) {
        // MyIE2
        b[0] = "myie2";
        b[2] = "msie";
        b[3] = brs.match(/msie\s(\d+(\.?\d)*)/)[1];
        return b;
    } else if (brs.search(/netcaptor/) != -1) {
        // NetCaptor
        b[0] = "netcaptor";
        b[1] = brs.match(/netcaptor\s(\d+(\.?\d)*)/)[1];
        b[2] = "msie";
        b[3] = getMSIEVersion();
        return b;
    } else if (brs.search(/avant\sbrowser/) != -1) {
        // Avant Browser
        b[0] = "avantbrowser";
        b[2] = "msie";
        b[3] = getMSIEVersion();
        return b;
    } else if (brs.search(/msn\s(\d+(\.?\d)*)/) != -1) {
        // MSN Explorer
        b[0] = "msn";
        b[1] = brs.match(/msn\s(\d+(\.?\d)*)/)[1];
        //b[2]="msie";
        //b[3]=getMSIEVersion();
        return b;
    } else if (brs.search(/msie\s(\d+(\.?\d)*)/) != -1) {
        // MS Internet Explorer
        b[0] = "Microsoft Internet Explorer";
        b[1] = getMSIEVersion();
        //c[0]=b[0];
        // b[2]="msie";
        //b[3]=b[1];
        //return b[0];
        return b;
        //return c;
    } else if (brs.search(/powermarks\/(\d+(\.?\d)*)/) != -1) {
        // PowerMarks
        b[0] = "powermarks";
        b[1] = brs.match(/powermarks\/(\d+(\.?\d)*)/)[1];
        b[2] = "msie";
        try {
            b[3] = getMSIEVersion();
        } catch (e) { }
        return b;
    } else if (brs.search(/konqueror[\/\s](\d+([\.-]\d)*)/) != -1) {
        // Konqueror
        b[0] = "konqueror";
        b[1] = brs.match(/konqueror[\/\s](\d+([\.-]\d)*)/)[1];
        // b[2]="khtml";
        return b;
    } else if (brs.search(/chrome\/(\d)*/) != -1) {
        // Safari
        b[0] = "Google Chrome";
        b[1] = brs.match(/chrome\/(\d+(\.?\d*)*)/)[1];
        //b[2]="applewebkit";
        //b[3]=brs.match(/applewebkit\/(\d+(\.?\d*)*)/)[1];
        return b;
    } else if (brs.search(/safari\/(\d)*/) != -1) {
        // Safari
        b[0] = "Safari";
        //b[2]="khtml";
        //b[3]=brs.match(/applewebkit\/(\d+(\.?\d*)*)/)[1];
        b[1] = brs.match(/safari\/(\d+(\.?\d*)*)/)[1];

        return b;
    } else if (brs.search(/zyborg/) != -1) {
        // Zyborg (SSD)
        b[0] = "zyborg";
        b[1] = brs.match(/zyborg\/(\d+(\.?\d)*)/)[1];
        b[2] = "robot";
        b[3] = "-1"
        return b;
    } else if (brs.search(/netscape6[\/\s](\d+([\.-]\d)*)/) != -1) {
        // Netscape 6.x
        b[0] = "Netscape";
        b[1] = brs.match(/netscape6[\/\s](\d+([\.-]\d)*)/)[1];
        //b[2]="gecko";
        //b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/netscape\/(7\.\d*)/) != -1) {
        // Netscape 7.x
        b[0] = "Netscape";
        b[1] = brs.match(/netscape\/(7\.\d*)/)[1];
        // b[2]="gecko";
        //b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/galeon[\/\s](\d+([\.-]\d)*)/) != -1) {
        // Galeon
        b[0] = "galeon";
        b[1] = brs.match(/galeon[\/\s](\d+([\.-]\d)*)/)[1];
        // b[2]="gecko";
        // b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/nautilus[\/\s](\d+([\.-]\d)*)/) != -1) {
        // Nautilus
        b[0] = "nautilus";
        b[1] = brs.match(/nautilus[\/\s](\d+([\.-]\d)*)/)[1];
        // b[2]="gecko";
        // b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/firefox[\/\s](\d+([\.-]\d)*)/) != -1) {
        // Firefox
        b[0] = "Firefox";
        b[1] = brs.match(/firefox[\/\s](\d+([\.-]\d)*)/)[1];
        //b[2]="gecko";
        //b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/k-meleon[\/\s](\d+([\.-]\d)*)/) != -1) {
        // K-Meleon
        b[0] = "kmeleon";
        b[1] = brs.match(/k-meleon[\/\s](\d+([\.-]\d)*)/)[1];
        // b[2]="gecko";
        //b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/playstation\s3/) != -1) {
        // Playstation 3
        b[0] = "netfront";
        b[1] = "2.81"; // Taken from the Wikipedia article
        //b[2]="playstation3"
        // b[3]=brs.match(/playstation\s3;\s(\d+\.\d+)/)[1];
        return b;
    } else if (brs.search(/firebird[\/\s](\d+([\.-]\d)*)/) != -1) {
        // Firebird
        b[0] = "firebird";
        b[1] = brs.match(/firebird[\/\s](\d+([\.-]\d)*)/)[1];
        // b[2]="gecko";
        // b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/phoenix[\/\s](\d+([\.-]\d)*)/) != -1) {
        // Phoenix
        b[0] = "phoenix";
        b[1] = brs.match(/phoenix[\/\s](\d+([\.-]\d)*)/)[1];
        // b[2]="gecko";
        // b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/camino[\/\s](\d+([\.-]\d)*)/) != -1) {
        // Camino
        b[0] = "camino";
        b[1] = brs.match(/camino[\/\s](\d+([\.-]\d)*)/)[1];
        //b[2]="gecko";
        // b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/epiphany[\/\s](\d+([\.-]\d)*)/) != -1) {
        // Epiphany
        b[0] = "epiphany";
        b[1] = brs.match(/epiphany[\/\s](\d+([\.-]\d)*)/)[1];
        // b[2]="gecko";
        //b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/chimera[\/\s](\d+([\.-]\d)*)/) != -1) {
        // Chimera
        b[0] = "chimera";
        b[1] = brs.match(/chimera[\/\s](\d+([\.-]\d)*)/)[1];
        // b[2]="gecko";
        // b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/icab[\s\/]?(\d+(\.?\d)*)/) != -1) {
        // iCab
        b[0] = "icab";
        b[1] = brs.match(/icab[\s\/]?(\d+(\.?\d)*)/)[1];
        // b[2]="icab";
        // b[3]=b[1];
        return b;
    } else if (brs.search(/netfront\/(\d+([\._]\d)*)/) != -1) {
        // NetFront
        b[0] = "netfront";
        b[1] = brs.match(/netfront\/(\d+([\._]\d)*)/)[1];
        // b[2]="netfront";
        // b[3]=b[1];
        return b;
    } else if (brs.search(/netscape4\/(\d+([\.-]\d)*)/) != -1) {
        // Netscape 4.x
        b[0] = "netscape";
        b[1] = brs.match(/netscape4\/(\d+([\.-]\d)*)/)[1];
        // b[2]="mozold";
        // b[3]=b[1];
        return b;
    } else if ((brs.search(/mozilla\/(4.\d*)/) != -1) && (brs.search(/msie\s(\d+(\.?\d)*)/) == -1)) {
        b[0] = "netscape";
        b[1] = brs.match(/mozilla\/(4.\d*)/)[1];
        // b[2]="mozold";
        // b[3]=b[1];
        return b;
    } else if ((brs.search(/mozilla\/5.0/) != -1) && (brs.search(/gecko\//) != -1)) {
        // Mozilla Seamonkey
        b[0] = "mozsea";
        b[1] = brs.match(/rv\x3a(\d+(\.?\d)*)/)[1];
        // b[2]="gecko";
        // b[3]=getGeckoVersion();
        return b;
    } else if (brs.search(/elinks/) != -1) {
        // ELinks
        b[0] = "elinks";
        (brs.search(/elinks\/(\d+(\.?\d)*)/) == -1 ?
        b[1] = brs.match(/elinks\s\x28(\d+(\.?\d)*)/)[1] :
        b[1] = brs.match(/elinks\/(\d+(\.?\d)*)/)[1]);
        b[2] = "elinks";
        b[3] = b[1];
        return b;
    } else if (brs.search(/w3m\/(\d+(\.?\d)*)/) != -1) {
        // w3m
        b[0] = "w3m"
        b[1] = brs.match(/(^w3m|\sw3m)\/(\d+(\.?\d)*)/)[2];
        b[2] = "w3m";
        b[3] = b[1];
        return b;
    } else if (brs.search(/links/) != -1) {
        // Links
        b[0] = "links";
        (brs.search(/links\/(\d+(\.?\d)*)/) == -1 ? b[1] = brs.match(/links\s\x28(\d+(\.?\d)*)/)[1] : b[1] = brs.match(/links\/(\d+(\.?\d)*)/)[1]);
        b[2] = "links";
        b[3] = b[1];
        return b;
    } else if (brs.search(/java[\/\s]?(\d+([\._]\d)*)/) != -1) {
        // Java (as web-browser)
        b[0] = "java";
        b[1] = brs.match(/java[\/\s]?(\d+([\._]\d)*)/)[1];
        b[2] = "java";
        b[3] = b[1];
        return b;
    } else if (brs.search(/lynx/) != -1) {
        // Lynx (SSD)
        b[0] = "lynx";
        b[1] = brs.match(/lynx\/(\d+(\.?\d)*)/)[1];
        b[2] = "libwww-fm";
        b[3] = brs.match(/libwww-fm\/(\d+(\.?\d)*)/)[1];
        return b;

    }

}

function EnableClipBoard() {

    var site = window.location.protocol + "//" + window.location.host;
  
    user_pref("capability.policy.policynames", "allowclipboard");
    user_pref("capability.policy.allowclipboard.sites", site);
    user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess");
    user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");
}



if (getInternetBrowser()) {
 
    var x = getInternetBrowser();
    
    var a = x[0];
    var bFound = false;
    
    if (a == "Firefox")
    {
        EnableClipBoard();
    }
    else if (a == "Safari") {

      
        EnableClipBoard();
    }
    else if (a == "Google Chrome") {
      
        EnableClipBoard();
    }


}
