function BrowserInfo() {
	var agent = window.navigator.userAgent;
	if (agent.indexOf("MSIE") != -1) {
			var start = agent.indexOf("MSIE");
			this.name = "MSIE";
			this.version = parseFloat(agent.substring(start + 5, agent.indexOf(";", start)));
	} else if (agent.indexOf("Firefox") != -1) {
			var start = agent.indexOf("Firefox");
			this.name = "Firefox";
			this.version = agent.substring(start + 8, agent.length);
			var firstDec = this.version.indexOf(".") + 1;
			while (this.version.indexOf(".", firstDec) != -1)
				this.version = this.version.substring(0, firstDec) + this.version.substring(firstDec).replace(".", "");
			this.version = parseFloat(this.version);
	} else {
			this.name = "Unknown";
			this.version = 0;
	}
}

var info = new BrowserInfo();
var userAgent = window.navigator.userAgent;
var isIE = (window.navigator.userAgent.indexOf("MSIE") != -1);
var isIE6 = (info.name == "MSIE" && info.version < 7);
var isSafari = (window.navigator.userAgent.indexOf("Safari") != -1);
var isMac = navigator.appVersion.indexOf("Mac")!=-1;
var isFireFox = (window.navigator.userAgent.indexOf("Firefox") != -1);
var isFireFox3 = ((window.navigator.userAgent.indexOf("Firefox") != -1) && info.version >= 3);
var isMacFireFox = isMac && isFireFox;
var isMacFireFox3 = isMac && isFireFox3;
var is_iPod = navigator.appVersion.indexOf("iPod")!=-1;
var is_iPhone = navigator.appVersion.indexOf("iPhone") != -1;
var loweredAgent = userAgent.toLowerCase();

function startsWith(txt, compare) { return txt.substr(0, compare.length) == compare; }

var isMobileDevice = (loweredAgent.indexOf("mobile") != -1 ||
    loweredAgent.indexOf("blackberry") != -1 ||
    startsWith(loweredAgent, "htc") ||
    startsWith(loweredAgent, "lg ") ||
    loweredAgent.indexOf("motorola") != -1 ||
    loweredAgent.indexOf("palmsource") != -1 ||
    loweredAgent.indexOf("webOS") != -1 ||
    loweredAgent.indexOf("opera mini") != -1);

// Used in conjunction with CSNGlobal.DN.Components.Forms 
String.prototype.replaceAll = function(find, replace) {
    var tmp = this + "";
    var last = tmp;

    tmp = tmp.replace(find, replace);
    while (tmp != last) {
        last = tmp;
        tmp = tmp.replace(find, replace);
    }

    return tmp;
}

setInputLabel = function(control, label) {
    if (control.value.trim() == "") {
        if (control.type == "password")
            control.className += " " + label;
        else
            control.value = label;
    }
};

clearInputLabel = function(control, label) {
    if (control.value.trim() == label || (control.value.trim() == "" && control.type == "password")) {
        if (control.type == "password") {
            control.className = control.className.replaceAll(label, "");
        } else
            control.value = "";
    }
};

/*
if (info.name == "MSIE" && info.version < 7)
document.writeln('<link href="/App_Themes/CSNMedia/stylesIE6.css" rel="stylesheet" type="text/css" />');
else if(isSafari == true)
document.writeln('<link href="/App_Themes/CSNMedia/stylesSafari.css" rel="stylesheet" type="text/css" />');
else
document.writeln('<link href="/App_Themes/CSNMedia/stylesDynamic.css" rel="stylesheet" type="text/css" />');9*/



function renderFlash(src, width, height, features) {
	document.writeln('<embed wmode="transparent" src="' + src + '" quality="high" width="' + width + 
					 '" height="' + height + '" align="middle" allowscriptaccess="sameDomain" ' +
					 'type="application/x-shockwave-flash" ' + features + 
					 'pluginspage="http://www.macromedia.com/go/getflashplayer" />');
}

function writePngClass(url, width, height, alt, className) {
	if (!isIE6)
		document.write("<img class=\"" + className + "\" alt=\"" + alt + "\" src=\"" + url + "\" style=\"width: " + width + "px; height: " + height + "px;\">");
	else
		document.write("<img class=\"" + className + "\" alt=\"" + alt + "\"  src=\"spacer.png\" style=\"width: " + width + "px; height: " + height + 
			"px; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url + "', sizingMethod=scale);\">");
}

var TimerDelayedAction = {
    actions: Array(),

    create: function(name, action, delay) {
        var obj = new Object();
        obj.name = name;
        obj.action = action;
        obj.index = TimerDelayedAction.actions.length;
        obj.timerId = setTimeout('TimerDelayedAction.execute(' + obj.index + ')', delay);
        obj.canceled = false;
        TimerDelayedAction.actions.push(obj);
    },

    cancel: function(name) {
        for (var i = 0; i < TimerDelayedAction.actions.length; i++) {
            if (TimerDelayedAction.actions[i].name == name) {
                TimerDelayedAction.actions[i].canceled = true;
                clearTimeout(TimerDelayedAction.actions[i].timerId);
                TimerDelayedAction.removeAction(i);
                break;
            }
        }
    },

    execute: function(index) {
        if (!TimerDelayedAction.actions[index].canceled)
            TimerDelayedAction.actions[index].action();
        
        TimerDelayedAction.removeAction(index);
    },

    removeAction: function(index) {
        var list = new Array();
        for (var i = 0; i < TimerDelayedAction.actions.length; i++) {
            if (i != index)
                list.push(TimerDelayedAction.actions[i]);
        }

        TimerDelayedAction.actions = list;
    }
};

function flashDrop() {
	TimerDelayedAction.cancel("dropFlash");
	
	TimerDelayedAction.create("dropFlash", function() {
		var obj = document.getElementById("flash_main");
		if (obj.style.zIndex != 0)
			obj.style.zIndex = 0;
	}, 250);
}

function flashRaise() {
	TimerDelayedAction.cancel("dropFlash");
	
	var obj = document.getElementById("flash_main");
	if (obj.style.zIndex != 1000)
		obj.style.zIndex = 1000;
}

function displayContactForm() {
	var obj = document.getElementById("contact_form_panel");
	
	if (obj == null) {
		var url = "" + document.location;
		if (url.indexOf("contact.aspx") == -1) {
			document.location = "/contact.aspx";
		} else {
			return;
		}
	}

	if (obj.style.height == "0px" || obj.style.height == "") {
	    if (document.getElementsByTagName("html")[0].scrollTop > 100) {
	        jQuery("body,html").animate({ scrollTop: 0 }, 250, null, function() {
	            setTimeout('displayContactFormAnim()', 250);
	        });
	    } else {
	        displayContactFormAnim();
	    }
	} else {
		var anim = CSNGAnim.create({
			objectId: "contact_form_panel",
			property: "height",
			speed: 40,
			steps: 20,
			start: 590,
			stop: 0,
			animFunc: easeOutQuad
		});
		
		anim.start();
	}
}

function displayContactFormAnim() {
    var anim = CSNGAnim.create({
        objectId: "contact_form_panel",
        property: "height",
        speed: 40,
        steps: 20,
        start: 0,
        stop: 590,
        animFunc: easeOutQuad
    });

    anim.start();
}

function lightboxPortfolioItem(id) {
	MOOdalBox.open("/PortfolioManager/Lightbox.aspx?ID=" + id, "*", "763");
}

function togglePanel(id, link, downCss, upCss) {
	var obj = jQuery(id);
		
	if (obj.is(":hidden")) {
		link.className = downCss;
		obj.slideDown('fast');
	} else {
		link.className = upCss;
		obj.slideUp('fast');
	}
	
	return false;
}



var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion() {
    var version;
    var axo;
    var e;

    // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

    try {
        // version will be set for 7.X or greater players
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
        version = axo.GetVariable("$version");
    } catch (e) {
    }

    if (!version) {
        try {
            // version will be set for 6.X players only
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

            // installed player is some revision of 6.0
            // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
            // so we have to be careful. 

            // default to the first public version
            version = "WIN 6,0,21,0";

            // throws if AllowScripAccess does not exist (introduced in 6.0r47)		
            axo.AllowScriptAccess = "always";

            // safe to call for 6.0r47 or greater
            version = axo.GetVariable("$version");

        } catch (e) {
        }
    }

    if (!version) {
        try {
            // version will be set for 4.X or 5.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = axo.GetVariable("$version");
        } catch (e) {
        }
    }

    if (!version) {
        try {
            // version will be set for 3.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = "WIN 3,0,18,0";
        } catch (e) {
        }
    }

    if (!version) {
        try {
            // version will be set for 2.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
            version = "WIN 2,0,0,11";
        } catch (e) {
            version = -1;
        }
    }

    return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer() {
    // NS/Opera version >= 3 check for Flash plugin in plugin array
    var flashVer = -1;

    //return flashVer;

    if (navigator.plugins != null && navigator.plugins.length > 0) {
        if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
            var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
            var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
            var descArray = flashDescription.split(" ");
            var tempArrayMajor = descArray[2].split(".");
            var versionMajor = tempArrayMajor[0];
            var versionMinor = tempArrayMajor[1];
            var versionRevision = descArray[3];
            if (versionRevision == "") {
                versionRevision = descArray[4];
            }
            if (versionRevision[0] == "d") {
                versionRevision = versionRevision.substring(1);
            } else if (versionRevision[0] == "r") {
                versionRevision = versionRevision.substring(1);
                if (versionRevision.indexOf("d") > 0) {
                    versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
                }
            } else if (versionRevision[0] == "b") {
                versionRevision = versionRevision.substring(1);
            }
            var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
        }
    }
    // MSN/WebTV 2.6 supports Flash 4
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
    // WebTV 2.5 supports Flash 3
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
    // older WebTV supports Flash 2
    else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
    else if (isIE && isWin && !isOpera) {
        flashVer = ControlVersion();
    }
    return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) {
    versionStr = GetSwfVer();
    if (versionStr == -1) {
        return false;
    } else if (versionStr != 0) {
        if (isIE && isWin && !isOpera) {
            // Given "WIN 2,0,0,11"
            tempArray = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
            tempString = tempArray[1]; 		// "2,0,0,11"
            versionArray = tempString.split(","); // ['2', '0', '0', '11']
        } else {
            versionArray = versionStr.split(".");
        }
        var versionMajor = versionArray[0];
        var versionMinor = versionArray[1];
        var versionRevision = versionArray[2];

        // is the major.revision >= requested major.revision AND the minor version >= requested minor
        if (versionMajor > parseFloat(reqMajorVer)) {
            return true;
        } else if (versionMajor == parseFloat(reqMajorVer)) {
            if (versionMinor > parseFloat(reqMinorVer))
                return true;
            else if (versionMinor == parseFloat(reqMinorVer)) {
                if (versionRevision >= parseFloat(reqRevision))
                    return true;
            }
        }
        return false;
    }
}

function flashOption(flashOptionId, htmlOptionId) {
    if (DetectFlashVer(10, 0, 0)) {
        document.getElementById(htmlOptionId).style.display = "none";
    } else {
        document.getElementById(flashOptionId).style.display = "none";
    }
}

var lastActiveMenu = -1;
var lastMenuAction = -1;

function enableHtmlMenus() {
    jQuery(document).ready(function() {
        setInterval('checkMenus()', 2000);
        checkMenus();

        if (!isMobileDevice) {
            jQuery(".nav_main li").each(function(index, element) {
                element = jQuery(element);
                element.hover(
			        function(e) {
			        }, function(e) {
			            TimerDelayedAction.create("hideMenu_" + index, function() {
			                //if (lastActiveMenu != 2) {
			                    var objDD = element.parent().find("div.dropdown");
			                    objDD.slideUp('fast');
			                    lastActiveMenu = -1;
			                    flashDrop();
			                //}
			            }, 500);
			        });
            });

            jQuery(".nav_main .has_dropdown").each(function(index, element) {

                element = jQuery(element);
                element.hover(
			        function(e) {
			            TimerDelayedAction.cancel("hideMenu_" + index);
			            var objDD = element.parent().find("div.dropdown");
			            objDD.slideDown('fast');
			            lastActiveMenu = index;
			            lastMenuAction = 2;
			            setTimeout('lastMenuAction=1', 250);
			            flashRaise();
			        }, function(e) { });

                element.parent().find("div.dropdown").hover(function() {
                    TimerDelayedAction.cancel("hideMenu_" + index);
                    lastActiveMenu = index;
                    lastMenuAction = 2;
                    setTimeout('lastMenuAction=1', 250);
                    flashRaise();
                }, function() {
                    TimerDelayedAction.create("hideMenu_" + index, function() {
                        //if (lastMenuAction != 2) {
                            var objDD = element.parent().find("div.dropdown");
                            objDD.slideUp('fast');
                            lastActiveMenu = -1;
                            flashDrop();
                        //}
                    }, 500);
                });
            });
        }
    });
}

function checkMenus() {
    if (!isMobileDevice) {
        jQuery(".nav_main .dropdown").each(function(index, element) {
            if (index != lastActiveMenu) {
                TimerDelayedAction.cancel("hideMenu_" + index);
                jQuery(element).slideUp('fast');
            }
        });

        if (lastActiveMenu == -1) {
            flashDrop();
        }
    }

    var days = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
    var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

    var dt = new Date();
    var day = dt.getDate() + "";
    var daySuffix = "";

    var dayCmp = day.substr(day.length - 1, 1);
    if (dayCmp == "1") { daySuffix = "st"; }
    else if (dayCmp == "2") { daySuffix = "nd"; }
    else if (dayCmp == "3") { daySuffix = "rd"; }
    else { daySuffix = "th"; }

    var dateString = days[dt.getDay()] + " " + months[dt.getMonth()] + " " + day + daySuffix + ", " + dt.getFullYear();
    document.getElementById("page_date").innerHTML = dateString;
}

var htmlHeaderMenus = new Array('about_menu', 'services_menu', 'work_menu');

function toggleMenu(name) {

    if (isMobileDevice) {
        if (name == "about_menu") {
            document.location.replace("/about-csn.aspx");
        } else if (name == "services_menu") {
            document.location.replace("/what-we-do.aspx");
        } else if (name == "work_menu") {
            document.location.replace("/our-work.aspx");
        }

        return;
    }

    for (var i = 0; i < htmlHeaderMenus.length; i++) {
        if (htmlHeaderMenus[i] != name && jQuery("#" + htmlHeaderMenus[i]).is(":visible"))
            jQuery("#" + htmlHeaderMenus[i]).slideUp('fast');

        if (htmlHeaderMenus[i] == name)
            lastActiveMenu = i;
    }

    if (jQuery("#" + name).is(":hidden"))
        jQuery("#" + name).slideDown('fast');
    else
        jQuery("#" + name).slideUp('fast');
}
