﻿$(window).load(function(){
    initRollovers();
    initPrint();
    randomImage();
    initExpand();

}); 
/*
* Added following one line to prevent embedding SWF object into page with AddThis widget
*/
var addthis_disable_flash = true;   



var browser = navigator.appName;
var IE = "Microsoft Internet Explorer";
var vendor = navigator.vendor;
var safari = "Apple Computer, Inc.";
var imagePath = "/_layouts/images/cctb/";
var classAttribute = classAttr();   //Get the appropriate class attribute to set. IE and Firefox use different attributes for class in the DOM.

/**** Begin image rollover funtion ****/
/* Function to initalize rollover */
function initRollovers(){	
	var rollovers = getElementsByClass("rollover",null,null);	//Get elements with a class of "rollover"
	
	if (rollovers.length > 0){		//If there is at least one element with a class "rollover"
		for(var i=0;i<rollovers.length;i++){	//Loop through all elements with class "rollover"
			addEvent(rollovers[i],"mouseover",rollover);	//Attach mouseover event
			addEvent(rollovers[i],"mouseout",rollover);	//Attach mouseout event
		}		
	}
}

// This can be used for rollovers that are NOT transparent PNGs. In IE, transparent PNGs are replaced in the DOM with clearpixel.gif, so grabbing the src attribute
// in IE will only return clearpixel.gif, not the actual image src that we want to swap with its on/off state.
// This function grabs the src attribute and replaces "off" with "on" (for mouseover) or "on" with "off (for mouseout) in the attribute string. KM
function rollover(event) {
	var etype = event.type;
	var imgSrc = getImgSrc(this);
	var newImgSrc;
	
	if (etype == "mouseover"){
	    newImgSrc = imgSrc.replace("off.","on.","gi");
		this.setAttribute("src",newImgSrc);
	}
	
	else if (etype == "mouseout") {
	    newImgSrc = imgSrc.replace("on.","off.","gi");
		this.setAttribute("src",newImgSrc);
	}
}

function rolloverInline(imgId,type) {
	var imgObj = _gel(imgId);
	var imgSrc = getImgSrc(imgObj);
	var newImgSrc;	

	if (type == 'over'){
	    newImgSrc = imgSrc.replace('off.','on.','gi');
		imgObj.setAttribute('src',newImgSrc);
	}

	

	else if (type == 'out') {
	    newImgSrc = imgSrc.replace('on.','off.','gi');
		imgObj.setAttribute('src',newImgSrc);
	}
}
/***** End image rollover funtion *****/

/***** Begin tab change functions *****/
function initTabbing(){	
	var tabs = getElementsByClass("tab",null,null);	//Get elements with a class of "tab"
    var tabSections = getElementsByClass("tab-section",null,null);   //Get tab body sections
	
	if (tabs.length > 0){		//If there is at least one element with a class "tab"
		for(var i=0;i<tabs.length;i++){	//Loop through all elements with class "tab"
			addEvent(tabs[i],"click",tabClick);	//Attach click event
			addEvent(tabs[i],"mouseover",tabHover);	//Attach over event
			addEvent(tabs[i],"mouseout",tabHover);	//Attach out event
		}		
	}
	
	if (tabSections.length > 0){		//If there is at least one element with a class "tab-section"
		
		for(var i=0;i<tabSections.length;i++){	//Loop through all elements with class "tab-section"
			if(tabSections[i].getAttribute(classAttribute).indexOf("selected") == -1){
			    tabSections[i].style.visibility = "hidden";
//			    if (browser != IE){
//			        tabSections[i].style.visibility = "hidden";
//			    }
//			    else {
//			        tabSections[i].style.display = "none";
//			    }
			}
			if(tabSections[i].getAttribute(classAttribute).indexOf("selected") > -1){
			    if (browser != IE){
			        tabSections[i].style.height = "auto";
			        tabSections[i].style.width = "auto";
			    }
			    else {
				    tabSections[i].style.height = "100%";
				    tabSections[i].style.width = "100%";
                }
			    tabSections[i].style.overflow = "visible";
			}
		}				
	}
}

function tabClick(event){    
    var tabs = getElementsByClass("tab",null,null);	//Get tabs
    var tabSections = getElementsByClass("tab-section",null,null);   //Get tab body sections
    	
	for(var t=0;t<tabs.length;t++){ //Loop through all tabs
	    var tabObj = tabs[t];
	    var tabSectionObj = tabSections[t];
	    	    
	    if(tabObj == this){ //Change clicked tab on
            tabObj.setAttribute(classAttribute, "tab selected");
			tabSectionObj.style.visibility = "visible";
			if (browser != IE){
				tabSectionObj.style.height = "auto";
				tabSectionObj.style.width = "auto";
            }
            else {
				tabSectionObj.style.height = "100%";
				tabSectionObj.style.width = "100%";
            }
			tabSectionObj.style.overflow = "visible";
	    }
	    else {	//Turn other tabs off	        
            tabObj.setAttribute(classAttribute, "tab");
			tabSectionObj.style.visibility = "hidden";
			tabSectionObj.style.height = "0px";
			tabSectionObj.style.width = "0px";
			tabSectionObj.style.overflow = "hidden";
	    }
	    // Browser detection is a temporary fix for making FreeTextBox work in Firefox when it is placed in a div that is not shown.
		// Firefox needs to start by using visibility hidden, otherwise FreeTextBox will not register properly.
		// A better solution needs to be found. KM
	}
}

function tabHover(event){ 
    var etype = event.type;
	
	if (this.getAttribute(classAttribute) != "tab selected"){
	    if (etype == "mouseover"){
		    this.setAttribute(classAttribute,"tab hover");
	    }
    	
	    else if (etype == "mouseout") {
		    this.setAttribute(classAttribute,"tab");
	    }
	}
}
function tabHoverInline(id,state){ 
    var tab = _gel(id);
	
	if (tab.getAttribute(classAttribute) != "tab selected"){
	    if (state == "over"){
		    tab.setAttribute(classAttribute,"tab hover");
	    }
    	
	    else if (state == "out") {
		    tab.setAttribute(classAttribute,"tab");
	    }
	}
}
/***** End tab change functions *****/

/***** Begin showInputWidget function *****/
function showInputWidget(id){
    var inputBar = _gel(id);
    
    if(inputBar.style.display == "block"){
        inputBar.style.display="none";
    }
    else {
        inputBar.style.display="block";
    }
}
/***** End showInputWidget function *****/

/***** Begin pop up functions *****/
function popWindow(href,title,sb,width,height) {
	return window.open(href,title,"toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars="+ sb +",resizable=0,width="+ width +",height="+ height +",top=150,left=100");
}
/***** End pop up functions *****/

/***** Begin print functions *****/
function initPrint(){	
	var printBtns = getElementsByClass("print",null,null);	//Get elements with a class of "print"
	
	if (printBtns.length > 0){		//If there is at least one element with a class "print"
		for(var i=0;i<printBtns.length;i++){	//Loop through all elements with class "print"
			addEvent(printBtns[i],"click",printPage);	//Attach click event
		}		
	}
}

function printPage() {
	window.print();
}
/***** End print functions *****/

/***** Begin member details photo module *****/
function initMemberPhotos(){	
	var thumbImages = getElementsByClass("thumbnail",null,null);	//Get elements with a class of "thumbnail"
	
	if (thumbImages.length > 0){		//If there is at least one element with a class "thumbnail"
		for(var i=0;i<thumbImages.length;i++){	//Loop through all elements with class "thumbnail"
			addEvent(thumbImages[i],"click",swapMemberPhotos);	//Attach click event
		}		
	}
}

function swapMemberPhotos() {
    var mainImageObj = getElementsByClass("main",null,null)[0];
    var clickedImage = getImgSrc(this).split(memberThumbPath)[1];
    var mainImage = getImgSrc(mainImageObj).split(memberImagePath)[1];
    
    for(var i=0;i<memberThumbnails.length;i++){        
        if(clickedImage == memberThumbnails[i]){
            mainImageObj.setAttribute('src',memberImagePath + memberImages[i]);              
        }
        if(mainImage == memberImages[i]){
            this.setAttribute('src',memberThumbPath + memberThumbnails[i]);
        }
    }	
}
/***** End member details photo module *****/

/***** Begin info bubbles *****/
function infoBubble(id){

    var parentEl = _gel(id).parentNode;
    var info = getElementsByClass("info-bubble",parentEl,null)[0];
    
    var selectFilter = _gel('gridview-filters');
    
    if(info.style.display == "block"){
        info.style.display="none";
        if ((browser == IE) && (id == "RegionImage0")){//Show select filters on member list page when IE and only the first area icon
            selectFilter.style.visibility = "visible";
        }
        if ((browser == IE) && (parentEl.getAttribute("id") == "read-about-it")){//Show select filters on member list page when IE and only the first area icon
            _gel("content-site").style.zIndex = "0";
        }
    }
    else {
        info.style.display="block";
        if ((browser == IE) && (id == "RegionImage0")){//Hide select filters on member list page when IE and only the first area icon
            selectFilter.style.visibility = "hidden";
        }
        if ((browser == IE) && (parentEl.getAttribute("id") == "read-about-it")){//Show select filters on member list page when IE and only the first area icon
            _gel("content-site").style.zIndex = "2000";
        }
    }
}
/***** End info bubbles *****/

/***** Begin google tracking outgoing links *****/
function initGoogleOutgoing(){	
	var outgoingLinks = getElementsByClass("google-outgoing",null,null);	//Get elements with a class of "print"
	
	if (outgoingLinks.length > 0){		//If there is at least one element with a class "google-outgoing"
		for(var i=0;i<outgoingLinks.length;i++){	//Loop through all elements with class "google-outgoing"
			addEvent(outgoingLinks[i],"click",googleOutgoing);	//Attach click event
		}		
	}
}

function googleOutgoing(){
    var linkObj = _gel(this);
    var linkHREF = linkObj.getAttribute("href");
    var googleLink = "/outgoing/" + linkHREF.split("http://")[1];
    
    urchinTracker(googleLink);
}
/***** End google tracking outgoing links *****/

/***** Begin random home page image *****/
var img = new Array("btn_wdgt_access_off.gif", "btn_wdgt_travel_kit_off.gif");
var p = img.length;

var whichImage = Math.round(Math.random()*(p-1));
function randomImage(){
    var imgObj = _gel("access-widget");
    if(imgObj){
        imgObj.setAttribute('src',imagePath + img[whichImage]);
    }
}
/***** End random home page image *****/

/***** Begin calendar *****/
var calendarData = "#calendar-data";
var d = new Date();
var dd = d.getDay();
var mm = d.getMonth();
var date = d.getDate();
var year = d.getFullYear();
var month = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var day = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
var hours = ["1","2","3","4","5","6","7","8","9","10","11","12","1","2","3","4","5","6","7","8","9","10","11","12"];
var currentDate;
var jsonURL = "http://sitebuilder.choosechicago.com/calendarjson/default.aspx?date=";

function initCalendar(){
    currentDate = (mm + 1) + "/" + date + "/" + year;
    
	getData(currentDate);
	buildDateHeader();
}

function getData(curDate){	
if( typeof $ == 'undefined' ) return;
    //First remove all previous events and tabs
    $(calendarData).find("ul").remove();
    $(calendarData).find(".day-tabs").remove();
    
    //Build tabs
	buildDayTabs(curDate);
    
    //Load data  
	var obj=new JSONscriptRequest(jsonURL + curDate);
	obj.buildScriptTag(); // Build the script tag     
	obj.addScriptTag(); // Execute (add) the script tag
}
 
function loadCalendar(data){   
if( typeof $ == 'undefined' ) return; 
    var list = document.createElement("ul");
    var item;
    var h4head;
    var link;
    var address;
    
    if(data==null){
        var text = "<h4>No calendar data</h4>";
        item = document.createElement("li");
        $(item).html(text);
        $(list).append(item);
    }
    else {
        for(var i=0;i<data.calevent.length;i++){
            item = document.createElement("li");
            
            link = document.createElement("a");
            $(link).attr("href","http://" + data.calevent[i].www).attr("target","_blank").html(data.calevent[i].name);
            
            h4head = document.createElement("h4");
            $(h4head).append(link);
            
            address = document.createElement("address");
            $(address).html(data.calevent[i].location);
            
            $(item).append(h4head).append(address);
            $(list).append(item);
        }
    }    
    $(calendarData).append(list);
}

function buildDayTabs(curDate){
if( typeof $ == 'undefined' ) return;
    var day1 = day.slice(dd,day.length);
    var day2 = day.slice(0,(dd));
    var newDay = day1.concat(day2);
    
    var tabRow = document.createElement("div");
    $(tabRow).attr("class","day-tabs clearfix");
    
    var tab;
    var dayLink;
    var dayTab;
    var monthNum = mm + 1;
    var newD;
    var newMonth;
    var newDate;
    var newYear;
    var dateClass;
    var tabClass;
        
    for(var j=0;j<day.length;j++){
        newD = new Date(year, mm, (date + j));
        newMonth = newD.getMonth() + 1;
        newDate = newD.getDate();
        newYear = newD.getFullYear();
        
        dateClass = newMonth + "/" + newDate + "/" + newYear;
        dayTab = newDay[j];
        dayLink = document.createElement("a");
        tabClass = "day";
        
        if(curDate==dateClass){
            dayTab = newDate; 
            tabClass = "day active";
            
            //Reset current date
            currentDate = dateClass;
        }
        
        $(dayLink).attr("href","javascript://").addClass(dateClass).html(dayTab).click(function(){
            getData($(this).attr("class"));
        });
        
        tab = document.createElement("span");
        $(tab).attr("class",tabClass).append(dayLink);
        
        $(tabRow).append(tab);
    }
    
    $(calendarData).append(tabRow);
}

function buildDateHeader(){    
if( typeof $ == 'undefined' ) return;
    newD = new Date(year, mm, (date + 6));
    newDate = newD.getDate();
    
    var curMonth = month[mm];
    var nextMonth = mm + 1;
    
    if (nextMonth <= 11){
        nextMonth = month[nextMonth];
    }
    else {
        nextMonth = month[0];
    }
    
    var h3head = document.createElement("h3");
    $(h3head).addClass("month");
    
    if(date < newDate){
        $(h3head).html(curMonth + " <span>" + date + "-" + newDate + "</span>");
    }
    else {
        $(h3head).html(curMonth + " <span>" + date + "-" + "</span> " + nextMonth + " <span>" + newDate + "</span>");
    }
    
    $(calendarData).append(h3head);
}
/***** End calendar *****/

/***** Begin twitter feed *****/
function initTwitter(){    
	getTwitterData();
}

function getTwitterData(){
    //Load data  
	var obj=new JSONscriptRequest('http://twitter.com/statuses/user_timeline/choosechicago.json?count=' + twitCount + '&callback=loadTwitter');
	obj.buildScriptTag(); // Build the script tag     
	obj.addScriptTag(); // Execute (add) the script tag
}
 
function loadTwitter(data){ 
if( typeof $ == 'undefined' ) return;
    var twitList;
    var twitItem;
    var twitDateHead;
    var twitStatus;
    var cleanDate;
    var cleanDate1;
    var cleanDate2;
    var cleanDate3;
    var tDate;
    var twitMonth;
    var twitDate;
    var twitYear;
    var newTwitDate;
    var twitText;
    var linkStart;
    var linkEnd;
    var linkURL;
    var newTwitText;
    
    twitList = document.createElement("ul");
    
    if(data==null){
        var text = "<h4>No twitter data</h4>";
        twitItem = document.createElement("li");
        $(twitItem).html(text);
        $(twitList).append(twitItem);
    }
    else {        
        for(var i=0;i<data.length;i++){ 
            cleanDate = data[i].created_at;
            cleanDate1 = cleanDate.substring(0,10);
            cleanDate2 = cleanDate.substring(11,25);
            cleanDate3 = cleanDate.substring(26,30);
            tDate = new Date(cleanDate1 + " " + cleanDate3 + " " + cleanDate2);
            twitMonth = month[tDate.getMonth()];
            twitDate = tDate.getDate();
            twitYear = tDate.getFullYear();
            twitTime = tDate.toLocaleTimeString();
            newTwitDate = twitDate + " " + twitMonth + " " + twitYear;
            
            twitText = data[i].text;
            newTwitText = twitText;
            
            linkStart = twitText.indexOf("http://");            
            if(linkStart == -1){
                linkStart = twitText.indexOf("https://");
            }
            
            if(linkStart > -1){
                linkEnd = twitText.indexOf(" ", linkStart);            
                if(linkEnd == -1){
                    linkEnd = twitText.length;
                }
                
                linkURL = twitText.substring(linkStart,linkEnd); 
                linkText = linkURL;
                
                if (linkURL.length > 40){
                    linkText = linkText.substring(0,40) + "...";
                }           
                newTwitText = twitText.replace(linkURL,'<a href="' + linkURL + '" target="_blank" class="tweet-link">' + linkText + '</a>'); 
            }
            
            twitDateHead = document.createElement("h4");
            $(twitDateHead).html(newTwitDate);
            
            twitStatus = document.createElement("p");
            $(twitStatus).html(newTwitText);
             
            twitItem = document.createElement("li"); 
            $(twitItem).append(twitDateHead);
            $(twitItem).append(twitStatus);
            $(twitList).append(twitItem);            
        }
    }
    $("#twitter-data").append(twitList);    
}
/***** End twitter feed *****/

/***** Begin clear value functions *****/
function initClearValue(){	
	var input = getElementsByClass("clear-value",null,null);
	
	if (input.length > 0){
		for(var i=0;i<input.length;i++){
			addEvent(input[i],"focus",clearValue);
		}		
	}
}

function clearValue(){    
    this.value = "";
	removeEvent(this,"focus",clearValue);
	
	//Remove the class that also sets the style for the input before the value is cleared.
    var classValue = this.getAttribute(classAttribute);
    var newClassValue = classValue.replace('clear-value','','gi');
    this.setAttribute(classAttribute, newClassValue);
}
/***** End clear value functions *****/

/***** Begin slideshow functions *****/
var ssTimer;
var speed;
var curSlide = -1;
var play = false; //Play button not clicked
var back = false; //Back button not clicked
var forward = false; //Forward button not clicked
var loops = 2;
var count = 0
var curLoop = 0;
var ssHeaderID = "chicago-by-numbers-header";
var ssID = "chicago-by-numbers";
var ssHeader;
var ss;
var ssSlides;
var slideCount;
var lastSlide;

function initSlideShow(){
    ssHeader = _gel(ssHeaderID);
    ss = _gel(ssID);
    ssSlides = ss.getElementsByTagName("li");
    slideCount = ssSlides.length;
    lastSlide = slideCount - 1; //Get the last index
    
    if ((slideCount > 0)){//If there is more than one slide, and their are still loops left    
        if(curSlide == -1){//If the intro slide
            speed = 5000;
            createLogEntry("SPLASH SCREEN " + curSlide);
            curSlide++;
        }
        else { 
            if((curSlide == 0) && (curLoop == 0)) {    
                ss.style.display = "block";
                _gel("back-slideshow").style.visibility = "visible"; 
                initFade(ssHeaderID,"out");
			    prevSlide = lastSlide;
			    nextSlide = curSlide + 1;
		    }
		    
		    else if(curSlide == 0) {
			    prevSlide = lastSlide;
			    nextSlide = curSlide + 1;
		    }
		    
		    else if (curSlide == lastSlide){
			    prevSlide = lastSlide - 1;
			    nextSlide = 0;
		    }
            
		    else {
			    prevSlide = curSlide - 1;
			    nextSlide = curSlide + 1;
		    }
						
            if(back == true)
            {   
                if((curSlide == 1)){
			        curSlide = lastSlide;
			    }
			    else {      
			        curSlide = prevSlide - 1;
			    }       			
			    for(var i=0;i<slideCount;i++){
				    if(i == curSlide){
					    setOpacity(ssSlides[i], 100);
	                }
	                else{
					    setOpacity(ssSlides[i], 0);	
				    }
			    } 
			    curSlide = prevSlide;             
            }
            else if(forward == true)
            {			                  
			    if(curSlide == lastSlide){
			        curSlide = lastSlide;
			    }
			    else {
			        curSlide = nextSlide - 1; 
			    }   
			    for(var i=0;i<slideCount;i++){
				    if(i == curSlide){
					    setOpacity(ssSlides[i], 100);
	                }
	                else{
					    setOpacity(ssSlides[i], 0);	
				    }
			    }
			    curSlide = nextSlide;                 
            }
                                    
		    else {
			    for(var i = 0; i < slideCount; i++){
		            if(curSlide == i){		                
                        var slideID = ssSlides[i].getAttribute("id");  
                        initFade(slideID,"in");
                        if(i != 0){                            
                            var slideID2 = ssSlides[prevSlide].getAttribute("id");
                            initFade(slideID2,"out");
                        }
                    }
                    else {
                       setOpacity(ssSlides[i], 0);                 
                    }
                }  
                curSlide = nextSlide;                   
            } 
                     
            speed = 15000;
        }     
        
        if (curSlide == lastSlide){
            curLoop++;
        }
        
        back = false; 
        forward = false;
        ssTimer = window.setTimeout(initSlideShow, speed);
	}
	else {
	}
}

function pauseSlideShow(){
    window.clearTimeout(ssTimer);
    play = true;
}

function stopSlideShow(){
    curSlide = 0;
	curLoop = 0; 
    setOpacity(ssHeader, 100);   
    ss.style.display = "none"; 
        
    play = false;
    back = false;
    forward = false;
    window.clearTimeout(ssTimer);
    
    clean("logger");
}

function playSlideShow(){
    if(play == true){
        initSlideShow();
        play = false; 
    }
}

function forwardSlideShow(){
    if(forward == false){
        pauseSlideShow();
        forward = true;
        playSlideShow();
    }
}

function backSlideShow(){
    if((back == false)){
        pauseSlideShow();
        back = true;
        playSlideShow();
    }
}

/* Begin fade functions */
function initFade(id,fade) {    
    elementId = id;
    element = _gel(elementId);
    
    if(fade == "in"){
	    fadeIn(elementId,0);
	}
	else {
	    fadeOut(elementId,100);
	}
}
function fadeIn(elementId,opacity) {
	if (document.getElementById) {
		obj = document.getElementById(elementId);
		if (opacity <= 100) {
			setOpacity(obj, opacity);
			opacity += 10;
			oTimer = window.setTimeout("fadeIn('"+elementId+"',"+opacity+")", 100);
		}
	}
}

function fadeOut(elementId,opacity) {
	if (document.getElementById) {
		obj = document.getElementById(elementId);
		if (opacity >= 0) {
			setOpacity(obj, opacity);
			opacity -= 10;
			oTimer = window.setTimeout("fadeOut('"+elementId+"',"+opacity+")", 100);
		}
	}
}
function setOpacity(obj, opacity) {
	opacity = (opacity == 100)?99.999:opacity;
	// IE/Win
	obj.style.filter = "alpha(opacity:"+opacity+")";
	// Safari<1.2, Konqueror
	obj.style.KHTMLOpacity = opacity/100;
	// Older Mozilla and Firefox
	obj.style.MozOpacity = opacity/100;
	// Safari 1.2, newer Firefox and Mozilla, CSS3
	obj.style.opacity = opacity/100;
}
/* End transition functions */
/***** End slideshow functions *****/

/* expand item functions :
-------------------------------------------------------------------------*/
function initExpand(){
	if( typeof $ == 'undefined' ) return;
    var tObj = $(".expand-header");
    if (typeof(tObj)!= 'undefined' && tObj!=null) 
	{
		tObj.each(function(){         
			$(this).click(function(){
				expand(this);
			});
		});
	}
}

function expand(obj){
    var parent = $(obj).parent();
    var pane = $(parent).find(".expand-item");  
    
    if($(parent).hasClass("open")){
        $(parent).removeClass("open");
    }
    else {
        $(parent).addClass("open");    
    }
    
    toggle(pane);
}

function toggle(pane){
    if($(pane).css("display") == "block"){
		$(pane).css("display", "none");
	}
	else {
		$(pane).css("display", "block");
	}
}
/* expand item functions ^
-------------------------------------------------------------------------*/
/** 
* Used to show right rail widgets based on page URL
* If current page URL indicates home page, hide the widgets
* else show them
*/
function showHideRightRail()
{
	if( location.href.toLowerCase().indexOf("/meetingplanners_06102009test/pages/default.aspx") >= 0 ||
		location.href.toLowerCase().indexOf("/meetingplanners/pages/default.aspx") >= 0 ||
		location.href.toLowerCase().indexOf("/pages/memberprofile") >= 0 )
	{
		jQuery('div#content-right').addClass('ms-hidden');
	}
	else
	{
		jQuery('div#content-right').removeClass('ms-hidden');
	}
}