﻿var BrowserDetect = {
    init: function () {
        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
        this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
        this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
        for (var i = 0; i < data.length; i++) {
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = data[i].versionSearch || data[i].identity;
            if (dataString) {
                if (dataString.indexOf(data[i].subString) != -1)
                    return data[i].identity;
            }
            else if (dataProp)
                return data[i].identity;
        }
    },
    searchVersion: function (dataString) {
        var index = dataString.indexOf(this.versionSearchString);
        if (index == -1) return;
        return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
    },
    dataBrowser: [
		{ string: navigator.userAgent,
		    subString: "OmniWeb",
		    versionSearch: "OmniWeb/",
		    identity: "OmniWeb"
		},
		{
		    string: navigator.vendor,
		    subString: "Apple",
		    identity: "Safari"
		},
		{
		    string: navigator.vendor,
		    subString: "Google",
		    identity: "Chrome"
		},
		{
		    prop: window.opera,
		    identity: "Opera"
		},
		{
		    string: navigator.vendor,
		    subString: "iCab",
		    identity: "iCab"
		},
		{
		    string: navigator.vendor,
		    subString: "KDE",
		    identity: "Konqueror"
		},
		{
		    string: navigator.userAgent,
		    subString: "Firefox",
		    identity: "Firefox"
		},
		{
		    string: navigator.vendor,
		    subString: "Camino",
		    identity: "Camino"
		},
		{		// for newer Netscapes (6+)
		    string: navigator.userAgent,
		    subString: "Netscape",
		    identity: "Netscape"
		},
		{
		    string: navigator.userAgent,
		    subString: "MSIE",
		    identity: "Explorer",
		    versionSearch: "MSIE"
		},
		{
		    string: navigator.userAgent,
		    subString: "Gecko",
		    identity: "Mozilla",
		    versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
		    string: navigator.userAgent,
		    subString: "Mozilla",
		    identity: "Netscape",
		    versionSearch: "Mozilla"
		}
	],
    dataOS: [
		{
		    string: navigator.platform,
		    subString: "Win",
		    identity: "Windows"
		},
		{
		    string: navigator.platform,
		    subString: "Mac",
		    identity: "Mac"
		},
		{
		    string: navigator.platform,
		    subString: "Linux",
		    identity: "Linux"
		}
	]

};
BrowserDetect.init();

var isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
var isIE7 = /msie|MSIE 7/.test(navigator.userAgent);
var isIE8 = /msie|MSIE 8/.test(navigator.userAgent);

function background() {
    if (isIE6) {
        if (screen.height >= '1025') {
            document.body.style.backgroundImage = "url(" + path_prefix + "images/back.png)";
            document.body.style.backgroundRepeat = "repeat-x";
        }
        else if ((screen.height >= '960') && (screen.height <= '1024')) {
            document.body.style.backgroundImage = "url(" + path_prefix + "images/back1.png)";
            document.body.style.backgroundRepeat = "repeat-x";
            // 780px
        }
        else if (screen.height == '768') {
            document.body.style.backgroundImage = "url(" + path_prefix + "images/back2.png)";
            document.body.style.backgroundRepeat = "repeat-x";
            // 550px
        }
        else if (screen.height <= '767') {
            document.body.style.backgroundImage = "url(" + path_prefix + "images/back3.png)";
            document.body.style.backgroundRepeat = "repeat-x";
            // 350px
        } else {
            document.body.style.backgroundImage = "url(" + path_prefix + "images/back4.png)";
            document.body.style.backgroundRepeat = "repeat-x";
            // 600px
        }
    } else {
        document.body.style.backgroundImage = "url(" + path_prefix + "images/back.png)";
        document.body.style.backgroundRepeat = "repeat-x";
    }
}

var stylesheet = '';
if (!isIE6) {
    if (!isIE7) {
        if (!isIE8) {
            //alert("default");
            stylesheet = ' <link href="' + path_prefix + 'stylesheets/default.css" rel="stylesheet" type="text/css" />'; // + '<link href="' + path_prefix + 'stylesheets/printDefault.css" rel="stylesheet" type="text/css" media="print"/>';
        } else {
            //alert("ie8");
            stylesheet = ' <link href="' + path_prefix + 'stylesheets/IE8.css" rel="stylesheet" type="text/css" media="screen"/>'; // + '<link href="' + path_prefix + 'stylesheets/printIE.css" rel="stylesheet" type="text/css" media="print"/>';
        }
    } else {
        //alert("ie7");
        stylesheet = ' <link href="' + path_prefix + 'stylesheets/IE7.css" rel="stylesheet" type="text/css" media="screen"/>'; // + '<link href="' + path_prefix + 'stylesheets/printIE.css" rel="stylesheet" type="text/css" media="print"/>';
    }
} else {
    //alert("ie6");
    stylesheet = ' <link href="' + path_prefix + 'stylesheets/IE6.css" rel="stylesheet" type="text/css" media="screen"/>'; // + '<link href="' + path_prefix + 'stylesheets/printIE.css" rel="stylesheet" type="text/css" media="print"/>';
}
document.write(stylesheet);

// -- rollover script -- //
var W3CDOM = (document.createElement && document.getElementsByTagName);

var mouseOvers = new Array();
var mouseOuts = new Array();

//window.onload = init;
function rollOvers() {
    if (!W3CDOM) return;
    var nav = document.getElementById('mouseovers');
    var imgs = nav.getElementsByTagName('img');
    for (var i = 0; i < imgs.length; i++) {
        imgs[i].onmouseover = mouseGoesOver;
        imgs[i].onmouseout = mouseGoesOut;
        var suffix = imgs[i].src.substring(imgs[i].src.lastIndexOf('.'));
        mouseOuts[i] = new Image();
        mouseOuts[i].src = imgs[i].src;
        mouseOvers[i] = new Image();
        mouseOvers[i].src = imgs[i].src.substring(0, imgs[i].src.lastIndexOf('.')) + "_omo" + suffix;
        imgs[i].number = i;
    }
}
function mouseGoesOver() {
    this.src = mouseOvers[this.number].src;
}

function mouseGoesOut() {
    this.src = mouseOuts[this.number].src;
}

// -- other client validation functions are declared via server code -- //
// -- trim function: removes whitespace -- //
function trim(strText) {
    // this will get rid of leading spaces 
    while (strText.substring(0, 1) == ' ')
        strText = strText.substring(1, strText.length);

    // this will get rid of trailing spaces 
    while (strText.substring(strText.length - 1, strText.length) == ' ')
        strText = strText.substring(0, strText.length - 1);

    return strText;
}

// the enter button is hit //
function hitEnter(event) {
    if (event.keyCode == 13) {
        var txtFocus = false;
        var textBoxes = document.getElementsByTagName('textarea');

        for (var i = 0; i < textBoxes.length; i++) { // we want the user to be able to hit enter in a text area 
            var elem = textBoxes[i];
            if (textBoxes[i].name != 'tbMessage') { // so that the onblur and onfocus events still work
                if (elem) {
                    elem.onfocus = function () {
                        txtFocus = true;
                    }
                    elem.onblur = function () {
                        txtFocus = false;
                    }
                }
            }
        }

        if (!txtFocus) {
            // do nothing
        } else {
            //alert('here');
            document.getElementById('btnSubmit').click();
            return false;
        }
    }
}

// used to tell us what browser we are using // 
/* <script type="text/javascript">
<!--
document.write('<p class="accent">You\'re using ' + BrowserDetect.browser + ' ' + BrowserDetect.version + ' on ' + BrowserDetect.OS + '!</p>');
// --> </script>*/

function readMorePopUp(num) {
    var readMoreWindow = window.open("newsPopUp.aspx?num=" + num,
    "readMoreWindow", "top=200, width=350, height=420, directories=no, toolbar=no, location=no, scrollbars=yes");
    readMoreWindow.focus();
}

function exLinkPopUp(exLink) {
    var newWindow = window.open(exLink, "newWindow", "channelmode=0, location=1, menubar=1, resizable=1, scrollbars=1, status=1, titlebar=1, toolbar=1, directories=1");
    newWindow.focus();
}

/* ------------------------------------------ functions for contact page -----------------------------------------*/
function nameValidationFunc(source, args) {
    var nameRegEx = /^[a-zA-Z0-9\s\'`.]{5,40}$/;
    var name = document.getElementById('tbName').value;
    var cvName = document.getElementById('cvName');
    var nameError = '<div class="nameValidator">Please enter a valid name.</div>';
    if (nameRegEx.test(name) == true) {
        args.IsValid = true;
        cvName.innerHTML = '';
        setStyle('nameTag', 'color', '#000');
    } else {
        args.IsValid = false;
        cvName.innerHTML = nameError;
        setStyle('nameTag', 'color', '#d20000');
    }
}

function serviceAffiliationValidationFunc(source, args) {
    var serviceAffiliationRegEx = /^[a-zA-Z0-9\s\'`.]{2,40}$/;
    var serviceAffiliation = document.getElementById('tbServiceAffiliation').value;
    var cvServiceAffiliation = document.getElementById('cvServiceAffiliation');
    var serviceAffiliationError = '<div class="serviceAffiliationValidator">Invalid service affiliation.</div>';
    if (serviceAffiliation != '') {
        args.IsValid = true;
        cvServiceAffiliation.innerHTML = '';
        setStyle('serviceAffiliationTag', 'color', '#000');
        if (serviceAffiliationRegEx.test(serviceAffiliation) == true) {
            args.IsValid = true;
            cvServiceAffiliation.innerHTML = '';
            setStyle('serviceAffiliationTag', 'color', '#000');
        } else {
            args.IsValid = false;
            cvServiceAffiliation.innerHTML = serviceAffiliationError;
            setStyle('serviceAffiliationTag', 'color', '#d20000');
        }
    } else {
        args.IsValid = true;
        cvServiceAffiliation.innerHTML = '';
        setStyle('serviceAffiliationTag', 'color', '#000');
    }
}

function titleValidationFunc(source, args) {
    var titleRegEx = /^[a-zA-Z0-9\s\'`.]{2,40}$/;
    var title = document.getElementById('tbTitle').value;
    var cvTitle = document.getElementById('cvTitle');
    var titleError = '<div class="titleValidator">Please enter a valid title.</div>';
    if (title != '') {
        args.IsValid = true;
        cvTitle.innerHTML = '';
        setStyle('titleTag', 'color', '#000');
        if (titleRegEx.test(title) == true) {
            args.IsValid = true;
            cvTitle.innerHTML = '';
            setStyle('titleTag', 'color', '#000');
        } else {
            args.IsValid = false;
            cvTitle.innerHTML = titleError;
            setStyle('titleTag', 'color', '#d20000');
        }
    } else {
        args.IsValid = true;
        cvTitle.innerHTML = '';
        setStyle('titleTag', 'color', '#000');
    }
}

function emailValidationFunc(source, args) {
    var emailRegEx = /^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
    var email = document.getElementById('tbEmail').value;
    var cvEmail = document.getElementById('cvEmail');
    var emailError = '<div class="emailValidator">Please enter a valid email.</div>';
    if (emailRegEx.test(email) == true) {
        args.IsValid = true;
        cvEmail.innerHTML = '';
        setStyle('emailTag', 'color', '#000'); 
    } else {
        args.IsValid = false;
        cvEmail.innerHTML = emailError;
        setStyle('emailTag', 'color', '#d20000');
    }
}

function gmqEmailValidationFunc(source, args) {
    var emailRegEx = /^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
    var email = document.getElementById('tbEmail').value;
    var cvEmail = document.getElementById('cvEmail');
    var emailError = '<div class="emailValidator">Please enter a valid email.</div>';
    if (emailRegEx.test(email) == true) {
        args.IsValid = true;
        cvEmail.innerHTML = '';
    } else {
        args.IsValid = false;
        cvEmail.innerHTML = emailError;
    }
}

function telephoneValidationFunc(source, args) {
    var RegExTelephone1 = /^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/; /* reg expression 1 not currently used */
    var RegExTelephone2 = /^\(?(\d{3})\)?[\.\-\/ ]?(\d{3})[\.\-\/ ]?(\d{4})$/;
    var telephone = document.getElementById('tbTelephone');
    var cvTelephone = document.getElementById('cvTelephone');
    var error1 = '<div class="telephoneValidator">Please enter a phone.</div>';
    var error2 = '<div class="telephoneValidator">Must be a valid phone.</div>';
    if (telephone.value != '') {
        if (RegExTelephone2.test(telephone.value) == true) {
            var validPhone = RegExTelephone2.exec(telephone.value);
            if (validPhone) {
                telephone.value = "(" + validPhone[1] + ") " + validPhone[2] + "-" + validPhone[3]
                args.IsValid = true;
                cvTelephone.innerHTML = '';
                setStyle('telephoneTag', 'color', '#000');
            } else {
                cvTelephone.innerHTML = error2;
                args.IsValid = false;
                setStyle('telephoneTag', 'color', '#d20000');
            }
        } else {
            cvTelephone.innerHTML = error2;
            args.IsValid = false;
            setStyle('telephoneTag', 'color', '#d20000');
        }
    } else {
        cvTelephone.innerHTML = error1;
        args.IsValid = false;
        setStyle('telephoneTag', 'color', '#d20000');
    }
}

function fixTelephone() {
    var RegExTelephone2 = /^\(?(\d{1})?[\.\-\/ ]?[\(\/ ]?(\d{3})\)?[\)\/ ]?[\.\-\/ ]?(\d{3})[\.\-\/ ]?(\d{4})$/; /* 1-(232)-232-2323 */
    var cvTelephone = document.getElementById('cvTelephone');
    var telephone = document.getElementById('tbTelephone');
    if (telephone.value != '') {
        var validPhone = RegExTelephone2.exec(telephone.value)
        if (validPhone) {
            telephone.value = "(" + validPhone[2] + ") " + validPhone[3] + "-" + validPhone[4];
        }
    }
}

function subjectValidationFunc(source, args) {
    var badSubjectString = '';
    var badCharactersSubject = '<>{}|*^[]';
    var subjectBoxString = document.getElementById('tbSubject').value;
    var cvSubject = document.getElementById('cvSubject');
    for (i = 0; i < subjectBoxString.length; i++) {
        for (j = 0; j < badCharactersSubject.length; j++) {
            if (subjectBoxString.substring(i, i + 1) == badCharactersSubject.substring(j, j + 1)) {
                var booleanVar = new Boolean(false);
                for (z = 0; z < badSubjectString.length; z++) {
                    if (subjectBoxString.substring(i, i + 1) == badSubjectString.substring(z, z + 1)) {
                        booleanVar = true;
                        break;
                    }
                }
                if (booleanVar == false)
                    badSubjectString += subjectBoxString.substring(i, i + 1);
            }
        }
    }
    if (badSubjectString.length > 0) {
        args.IsValid = false;
        badSubjectString = '<div class="subjectValidator">Invalid characters: ' + badSubjectString + '</div>';
        cvSubject.innerHTML = badSubjectString;
        setStyle('subjectTag', 'color', '#d20000');
    } else {
        args.IsValid = true;
        cvSubject.innerHTML = '';
        setStyle('subjectTag', 'color', '#000');
        subjectValidationFunc2(source, args);
    }
    return badSubjectString;
}

function subjectValidationFunc2(source, args) {
    var subjectRegEx = /^[^<>{}=+*^~]{2,100}$/;
    var subject = document.getElementById('tbSubject').value;
    var cvSubject = document.getElementById('cvSubject');
    var subjectError = '<div class="subjectValidator">Please enter a valid subject.</div>';
    if (subjectRegEx.test(subject) == true) {
        args.IsValid = true;
        cvSubject.innerHTML = '';
        setStyle('subjectTag', 'color', '#000');
    } else {
        args.IsValid = false;
        cvSubject.innerHTML = subjectError;
        setStyle('subjectTag', 'color', '#d20000');
    }
}

function messagePrompt() {
    var messageBox = document.getElementById('tbMessage');
    if (messageBox != null) {
        if (messageBox.value == "Type your message here.") {
            messageBox.value = "";
            setStyle('tbMessage', 'color', '#000');
        }
    }
}

function messagePromptReload() {
    var messageBox = document.getElementById('tbMessage');
    if (messageBox != null) {
        if (messageBox.value == "") {
            messageBox.value = "Type your message here.";
            setStyle('tbMessage', 'color', '#777');
        }
    }
}

function messageLoad() {
    var messageBox = document.getElementById('tbMessage');
    if (messageBox != null) {
        var messagePrompt = "Type your message here.";
        messageBox.value = messagePrompt;
        setStyle('tbMessage', 'color', '#777');
    }
}

function messageValidationFunc(source, args) {
    var badMessageString = '';
    var badCharactersMessage = '<>{}|*^[]';
    var messageBoxString = document.getElementById('tbMessage').value;
    var cvMessage = document.getElementById('cvMessage');
    for (i = 0; i < messageBoxString.length; i++) {
        for (j = 0; j < badCharactersMessage.length; j++) {
            if (messageBoxString.substring(i, i + 1) == badCharactersMessage.substring(j, j + 1)) {
                var booleanVar = new Boolean(false);
                for (z = 0; z < badMessageString.length; z++) {
                    if (messageBoxString.substring(i, i + 1) == badMessageString.substring(z, z + 1)) {
                        booleanVar = true;
                        break;
                    }
                }
                if (booleanVar == false)
                    badMessageString += messageBoxString.substring(i, i + 1);
            }
        }
    }
    if (badMessageString.length > 0) {
        args.IsValid = false;
        badMessageString = '<div class="messageValidator">Invalid characters: ' + badMessageString + '</div>';
        cvMessage.innerHTML = badMessageString;
        setStyle('messageTag', 'color', '#d20000');
    } else {
        args.IsValid = true;
        cvMessage.innerHTML = '';
        setStyle('messageTag', 'color', '#000');
        messageValidationFunc2(source, args);
    }
    return badMessageString;
}

function messageValidationFunc2(source, args) {
    var messageRegEx = /^[a-zA-Z0-9`!@#\$%&()\-_\'":;,\.\?\s\/\\]{9,1000}$/;
    var messageBox = document.getElementById('tbMessage').value;
    var cvMessage = document.getElementById('cvMessage');
    var messageDefault = "Type your message here.";
    var messageError1 = '<div class="messageValidator">Please enter a message.</div>';
    var messageError2 = '<div class="messageValidator">Please enter a valid message.</div>';
    var messageError3 = '<div class="messageValidator">Please reduce size of message - may not exceed 1000 Characters.</div>';
    if (messageBox != "" && messageBox != messageDefault) {
        if (messageRegEx.test(messageBox) == true) {
            args.IsValid = true;
            cvMessage.innerHTML = '';
            setStyle('messageTag', 'color', '#000');
        } else {
            if (messageBox.length < 1000) {
                args.IsValid = false;
                cvMessage.innerHTML = messageError2;
                setStyle('messageTag', 'color', '#d20000');
            } else {
                args.IsValid = false;
                cvMessage.innerHTML = messageError3;
                setStyle('messageTag', 'color', '#d20000');
            }
        }
    } else {
        args.IsValid = false;
        cvMessage.innerHTML = messageError1;
        setStyle('messageTag', 'color', '#d20000');
    }
}

function setStyle(obj, style, value) {
    getRef(obj).style[style] = value;
}

function getRef(obj) {
    return (typeof obj == "string") ?
			 document.getElementById(obj) : obj;
}
/*
* USAGE:
* objId    = element id.
* style    = the style to be changed.
* value    = the value assigned to the style.
Adds event to window.onload without overwriting currently 
assigned onload functions.
*/
/* --------------------------------- functions for newsletter subscribe page and Great Money Quest ----------------------------------------------*/
function emailLoad() {
    var emailBox = document.getElementById('ea');
    var emailPrompt = "Enter E-mail";
    setStyle('ea', 'color', '#666');

    if (emailBox.value != "Enter E-mail" && emailBox.value != "") {
        emailBox.value = emailBox.value;
        return;
    }
    emailBox.value = emailPrompt;
}

function loadEmail() {
    var emailBox = document.getElementById('tbEmail');
    var emailPrompt = "Enter E-mail";
    setStyle('tbEmail', 'color', '#666');

    if (emailBox.value != "Enter E-mail" && emailBox.value != "") {
        emailBox.value = emailBox.value;
        return;
    }
    emailBox.value = emailPrompt;
}

function emailPrompt(id, text) {
    var emailBox = document.getElementById(id);
    if (emailBox.value == text) {
        emailBox.value = "";
        setStyle(id, 'color', '#000');
    }
}

function emailReload(id, text) {
    var emailBox = document.getElementById(id);
    if (emailBox.value == "") {
        emailBox.value = text;
        setStyle(id, 'color', '#666');
    }
}

/*--------------------------------------- load event function --------------------------------------------------*/
function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        window.onload = function () {
            oldonload();
            func();
        }
    }
}

addLoadEvent(rollOvers);
addLoadEvent(background);
