﻿Cramer = {};
Cramer.Behavior = (function(){
function init() {
	
    if (arguments.callee.done) return;
    arguments.callee.done = true;
    if (_timer) clearInterval(_timer);
	//CTAM

		if ($("banners")){
			var bannerId=1;
			updateBanner(bannerId);
		}
		if ($("member-directory")){
			var memberId=1;
			updateMember(memberId);
		}
		if ($("banner-menu")){
			var bannerMenuItems = ($("banner-menu")).getElementsByTagName("a");
			
			var bannerMenuTest= bannerMenuItems.length;
			for (var i=0;i<bannerMenuTest;i++) {
				//alert(bannerMenuItems[i].href.indexOf('Sub'));
				if (bannerMenuItems[i].href.indexOf('Sub') >= 0) {
					//alert('adding class');
					addClass(bannerMenuItems[i].parentElement, 'secure');
				}
				bannerMenuItems[i].onclick = function() {
					var bannerMenuId = getText(this);
					var bannerId= parseInt(bannerMenuId);
					// clear timeout
					clearTimeout(FadeTimeout);
					updateBanner(bannerId);
					return false;
				}
			}
		};
		getLastChild($("main-navigation")).style.padding= "10px 12px 10px 12px";
		var lis = $("main-navigation").childNodes;
		var test= lis.length;
		for (var i=0; i<test; i++){
			if (lis[i].nodeName.toLowerCase() == "li") {
				addEvent(lis[i],"mouseover",navOver);
				addEvent(lis[i],"mouseout",navOut);
				lis[i].innerHTML+="<div><ul></ul><ul class='secondaryList'></ul></div>";
				var tempUL = lis[i].removeChild(lis[i].getElementsByTagName("ul")[0]);
				var listOne = lis[i].getElementsByTagName("ul")[0];
				var listTwo = lis[i].getElementsByTagName("ul")[1];
				var tempLis = tempUL.getElementsByTagName("li");
				var liTest= tempLis.length;
				for (var j = 0; j < liTest; j++){
				  var tempLI = tempLis[j].cloneNode(true);
				  if (j%2 != 1){
					  listOne.appendChild(tempLI);
				  } else {
					  listTwo.appendChild(tempLI);
				  };
				};
				tempUl = "";
			};
		};
		
		if (window.ctam_member == undefined) {
			var bannerMenuItems = document.getElementsByTagName("a");
			for (var i=0;i<bannerMenuItems.length;i++) {
				var url = bannerMenuItems[i].href.toLowerCase();
				if (url.indexOf('memlinks') >= 0
					|| url.indexOf('redirecturl=') >= 0
					|| url.indexOf('login.aspx#') >= 0) {
					//alert('adding class');
					addClass(bannerMenuItems[i], 'secure');
				}
			}
		}
		
		var callback = function() {
		  var divs = $("main-navigation").getElementsByTagName("div");
		  var divTest = divs.length;
		  for (var i=0; i<divTest; i++) { 
			  var newWidth = divs[i].getElementsByTagName("ul")[0].offsetWidth + divs[i].getElementsByTagName("ul")[1].offsetWidth + 60; 
			  divs[i].style.width= newWidth + "px";
			  var rightBoundary = findPos($("main-navigation"))[0] + $("main-navigation").offsetWidth;
			  var rightPosition = findPos(divs[i])[0] + divs[i].offsetWidth;
			  if (rightPosition > rightBoundary){
				  var negOffset = rightBoundary - rightPosition;
				  divs[i].style.left= negOffset +"px";
				  divs[i].style.zIndex = '10000';
			  }
		  }
		}
		setTimeout(callback,500);
//bug fix for background image flickers in Internet Explorer
/*@cc_on @*/
/*@if (@_win32)
	document.execCommand("BackgroundImageCache", false, true);  
/*@end @*/
};
if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", init, false);
};
/*@cc_on @*/
/*@if (@_win32)
    document.write("<script id=__ie_onload defer src=#><\/script>");
    var script = $("__ie_onload");
    script.onreadystatechange = function() {
        if (this.readyState == "complete") {
            init(); // call the onload handler
        }
    };
/*@end @*/
if (/WebKit/i.test(navigator.userAgent)) { // sniff
    var _timer = setInterval(function() {
        if (/loaded|complete/.test(document.readyState)) {
            init(); // call the onload handler
        }
    }, 10);
};
window.onload = init;
window.onunload = function () {};
function $() {
	var elements = [];
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
};
function insertAfter(parent, node, referenceNode) {
      parent.insertBefore(node, referenceNode.nextSibling);
};
function preloadImages(){
	var pics = [];
	for(var i=0;i<arguments.length;i++){
        pics[i]=new Image();
        pics[i].src=arguments[i];
		}
};
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
};
function getElementsByClass(theclass,node) {
    var classElements = [];
	var i;
	if ( node == null ) {
        node = document
	}
    if (node.getElementsByClassName) {
		var tempCollection = node.getElementsByClassName(theclass);
		for (i = 0; i < tempCollection.length ; i++) {
			classElements.push(tempCollection[i])
		}
	}
	else {
		var els = node.getElementsByTagName("*");
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\s)"+theclass+"(\\s|$)");
		for (i = 0; i < elsLen; i++) {
			if ( pattern.test(els[i].className) ) {
				classElements.push(els[i]);
			}
		}
	}
	return classElements;
};
function ajax( options ) {
    options = {
        type: options.type || "POST",
        url: options.url || "",
        timeout: options.timeout || 5000,
        onComplete: options.onComplete || function(){},
        onError: options.onError || function(){},
        onSuccess: options.onSuccess || function(){},
        data: options.data || ""
    };
	if ( typeof XMLHttpRequest == "undefined" )
    	XMLHttpRequest = function(){
        	return new ActiveXObject(
            	navigator.userAgent.indexOf("MSIE 5") >= 0 ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"
        );
    };
	var xml = new XMLHttpRequest();
    xml.open(options.type, options.url, true);
    var requestDone = false;
    setTimeout(function(){
         requestDone = true;
    }, options.timeout);
    xml.onreadystatechange = function(){
        if ( xml.readyState == 4 && !requestDone ) {
            if ( httpSuccess( xml ) ) {
                options.onSuccess( httpData( xml, options.data ) );
            } else {
                options.onError();
            }
            options.onComplete();
            xml = null;
        }
    };
    xml.send(null);
    function httpSuccess(r) {
        try {
            return !r.status && location.protocol == "file:" ||
                ( r.status >= 200 && r.status < 300 ) ||
                r.status == 304 ||
                navigator.userAgent.indexOf("Safari") >= 0 && typeof r.status == "undefined";
        } catch(e){}
        return false;
    }
    function httpData(r,type) {
    	switch (type) {
			case  "xml" :
				data=r.responseXML;
				break;
			case "script" :
				data=eval(r.responseText);
				break;
			case "text" :
				data=r.responseText;
				break;				
			default:
				data=r.responseText;
				break;				
			}
       return data;
    }
};
function getFirstChild(element) {
    element = element.firstChild;
    return element && element.nodeType != 1 ? getNextSibling(element) : element;
};
function getPreviousSibling(element) {
    do {
        element = element.previousSibling;
    } while ( element && element.nodeType != 1 );
    return element;
};
function getNextSibling(element) {
    do {
        element = element.nextSibling;
    } while ( element && element.nodeType != 1 );
    return element;
};
function getLastChild(element) {
   element = element.lastChild;
    return element && element.nodeType != 1 ? getPreviousSibling(element) : element;
};

function addEvent(element, type, handler) {
	if (!handler.$$guid) handler.$$guid = addEvent.guid++;
	if (!element.events) element.events = {};
	var handlers = element.events[type];
	if (!handlers) {
		handlers = element.events[type] = {};
		if (element["on" + type]) {
			handlers[0] = element["on" + type];
		}
	}
	handlers[handler.$$guid] = handler;
	element["on" + type] = handleEvent;
};
addEvent.guid = 1;
function removeEvent(element, type, handler) {
	if (element.events && element.events[type]) {
		delete element.events[type][handler.$$guid];
	}
};
function handleEvent(event) {
	var returnValue = true;
	event = event || fixEvent(window.event);
	var handlers = this.events[event.type];
	for (var i in handlers) {
		this.$$handleEvent = handlers[i];
		if (this.$$handleEvent(event) === false) {
			returnValue = false;
		}
	}
	return returnValue;
};
function fixEvent(event) {
	event.preventDefault = fixEvent.preventDefault;
	event.stopPropagation = fixEvent.stopPropagation;
	return event;
};
fixEvent.preventDefault = function() {
	this.returnValue = false;
};
fixEvent.stopPropagation = function() {
	this.cancelBubble = true;
};
function addClass(element, className) {
    if (!hasClass(element, className)) {
      element.className += (element.className ? " " : "") + className;
    }
};
function hasClass(element, className) {
    var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)");
    return regexp.test(element.className);
};
function removeClass(element, className) {
    var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)", "g");
    element.className = element.className.replace(regexp, "$2").trim();
};
function toggleClass(element, className) {
    if (hasClass(element, className)) {
      removeClass(element, className);
    } else {
      addClass(element, className);
    }
};
function getText(e) {
    var t = "";
	e = e.childNodes || e;
	for ( var j = 0; j < e.length; j++ ) {
        t += e[j].nodeType != 1 ?
            e[j].nodeValue : text(e[j].childNodes);
    }
    return t;
};
if(!Array.prototype.push) {
	function array_push() {
		for(var i=0;i<arguments.length;i++){
			this[this.length]=arguments[i]
		};
		return this.length;
	}
	Array.prototype.push = array_push;
};
if(!Array.prototype.inArray) {
	Array.prototype.inArray = function (value) {
		var i;
		for (i=0; i < this.length; i++) {
			if (this[i] === value) {
				return true;
			}
		}
		return false;
	}
};
String.prototype.trim = function() {
  return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};
//CTAM
var image = {
	insert : function(bannerId){
		if ($("banner")) {
			$("banner").innerHTML="";
		};
		var bannerMenuItems = ($("banner-menu")).getElementsByTagName("li");
		var controlId = bannerId-1		
		var activeBanner = bannerMenuItems[controlId];
		var theLink = activeBanner.getElementsByTagName("a")[0];

		/*@cc_on
		/*@if (@_win32)
			var style= "filter:alpha(opacity=0)";         
		@else @*/
		var style="opacity:0";
		/*@end
		@*/
		$("banner").innerHTML="<a href='" + theLink + "'><img src='/design/images/banner-"+ bannerId +".png' style='"+style+"' id='fadeMe'  alt=''/></a>";
		image.fadeUp(0, bannerId);
	},
	fadeUp : function(count, bannerId) {
		var fadeImage = $("fadeMe");
		count = count + 5;
		if (count < 100 ) {
			/*@cc_on
			/*@if (@_win32)
				fadeImage.style.filter ="alpha(opacity="+ count +")";
			@else @*/
				fadeImage.style.opacity= (count/100);
			/*@end
			@*/
			var callback = function() {
				image.fadeUp(count, bannerId);
			}
			setTimeout(callback,50);
		}
		else{
			$("banner-container").style.background="url('/design/images/banner-"+ bannerId +".png')";
		}
	}
};

function updateBanner(bannerId){

	// update banner
	image.insert(bannerId);

	// update controls
	updateControl(bannerId);

	// increase counter
	var updater = function() {
		if (bannerId == 3){
			bannerId = 1;
		}
		else{
			bannerId = bannerId + 1;
		};
		updateBanner(bannerId);
	};
	FadeTimeout = setTimeout(updater ,10000);
};

function updateControl(bannerId){
	var bannerMenuIDs = ($("banner-menu")).getElementsByTagName("li");
	var bannerMenuTest= bannerMenuIDs.length;
	for (var i=0;i<bannerMenuTest;i++) {
		removeClass(bannerMenuIDs[i], "on");
	}
	controlId = bannerId-1;
	addClass(bannerMenuIDs[controlId], "on");
}

//  This version of the function updates the member directory with a different member every time the page is refreshed
function updateMember(memberId){
	var numberOfMemberImages = 40;
	var memberImage = ($("member-directory")).getElementsByTagName("img")[0];
	
	var randomNumber = Math.floor(Math.random()*numberOfMemberImages+1);
	memberImage.setAttribute("src","/design/images/member-"+ randomNumber +".png")
	
} 
//  This version of the function rotates through the members in the member directory
//
//	function updateMember(memberId){
//		var numberOfMemberImages = 38;
//		var memberImage = ($("member-directory")).getElementsByTagName("img")[0];
//		
//		memberImage.setAttribute("src","/design/images/member-"+ memberId +".png")
//	
//		// increase counter
//		var memberUpdater = function() {
//			if (memberId == numberOfMemberImages){
//				memberId = 1;
//			}
//			else{
//				memberId = memberId + 1;
//			};
//			updateMember(memberId);
//		};
//		MemberTimeout = setTimeout(memberUpdater ,4000);
//	}

function navOver(){
	this.style.background = "#c3d7a4";
	this.getElementsByTagName("div")[0].style.visibility="visible";	
};
function navOut(){
	if (hasClass(this,"on")){
		this.style.background = "#fbf6d2";
	}else{
		this.style.background =  "#fcfaeb";
	}
	this.getElementsByTagName("div")[0].style.visibility="hidden";
};
return {};})();

function updateIFrame( height ) {
        document.getElementById( 'eWebFrame' ).style.height = parseInt(height) + "px";  
      }
function getWidthS() 
{
	var w = 0;if (!window.innerWidth) {if (!(document.documentElement.clientWidth == 0)) {w = document.documentElement.clientWidth;}else{w = document.body.clientWidth;}}else{w=window.innerWidth;} return w;
}