
if(!console) {

    function Console() {

        this.debug = function(data) {
            // ignore
        };
    }

    var console = new Console();        
}


function Resolution(width, height, mHeight) {
	this.width = width;
	this.height = height;
	this.mHeight = mHeight;
	this.widthOffset = 350;
	this.heightOffset = 313;

    this.middle = function () { return this.width / 2; };
    this.middleHeight = function () {
        return this.getScrollTop() + (this.mHeight / 2);
    };



    this.getScrollTop = function() {
        var pageYOffset;
        if(window.innerHeight) {
            pageYOffset = window.pageYOffset;
        } else {
            pageYOffset = document.documentElement.scrollTop;
        }
        return pageYOffset;
    };
	
}


var r1024x768 = new Resolution(1024,768,400);
var r1280x1024 = new Resolution(1280,1024,656);
var r800x600 = new Resolution(800,600,350);
var r1280x800 = new Resolution(1280,800,null);
var r1152x864 = new Resolution(1152,864,null);
var r1440x900 = new Resolution(1440,900,null);
var r1680x1050 = new Resolution(1680,1050,null);
var r1280x768 = new Resolution(1280,768,null);
var r1400x1050 = new Resolution(1400,1050,null);
var r1600x1200 = new Resolution(1600,1200,null);
var r1920x1200 = new Resolution(1920,1200,null);

var resArray = [ r1024x768, r1280x1024, r800x600, r1280x800, r1152x864, r1440x900, r1680x1050, r1280x768, r1400x1050, r1600x1200, r1920x1200 ];

function getResolution() {
	try {
			for(var i=0;i<resArray.length;i++) {
				if(resArray[i].width == screen.width && resArray[i].height == screen.height) {
					return resArray[i];
                }
            }
			for(var i1=0;i<resArray.length;i1++) {
				if(resArray[i1].width == screen.width) {
					return resArray[i1];
                }
            }
	} catch(e) {
		alert("error trying to figure out screen resolution");
		// do some error handling
	}
	return r1024x768;
}

var res = getResolution();

var spinnerImage = "<img src='/images/spinner.gif' />";

function selectAll() {


    try {
        var frms = document.forms;
        for (var x = 0; x < frms.length; x++) {
            var frm = frms[x];
            for (var i = 0; i < frm.elements.length; i++) {
                var elem = frm.elements[i];
                if (elem.type == 'checkbox') {
                    elem.checked = elem.checked == false;
                }

            }
        }
    } catch(ex) {
        alert("EX: " + ex.message);
    }
    return false;
}

function countSelected(frm) {

	try {

		var selectCount = 0;

		for(var i=0;i<frm.elements.length;i++) {
			var elem = frm.elements[i];
            if(elem.name == 'force') continue;
            if(elem.type == 'checkbox' && elem.checked)	{
				selectCount++;
            }

        }

	      return selectCount;

	} catch(e) {
		return true;
	}

}

function checkForSelection(frm) {

	var selectCount = countSelected(frm);
	if(selectCount !== 0) { return true; }
	
	alert('Selection required');
	
	return false;

}

function checkSingleSelect(frm) {


	try {

		var selectCount = countSelected(frm);

		if(selectCount == 1) { return true; }

		if(selectCount === 0) {
			alert('Select 1 item');
		} else if(selectCount > 1) {
			alert('Only 1 selection is permitted');				
		}		
		return false;


	} catch(e) {
		return true;
	}
}

function selectConfirmShows(frm) {

	if(!checkForSelection(frm)) {
		return;
    }


    frm.action = "show_confirm_multiple.jsp";
	frm.submit();

}

function selectConfirmSpeakers(frm) {

	if(!checkForSelection(frm)) {
		return;
    }

    frm.action = "show_speaker_confirm_multiple.jsp";
	frm.method = "GET";
	frm.submit();
}


function OpenWin(Loc,Width,Height) { 
	var WinInfo = "toolbar=no,scrollbars=yes,directories=no,resizable=yes,menubar=no,top=50,left=50,width=" + Width + ",height=" + Height;
	wPageWindow=window.open(Loc,"wImageWindow",WinInfo); 
} 

function getSelected(frm,name) {

	var r = [];
	try {

		var selectCount = 0;

		for(var i=0;i<frm.elements.length;i++) {
			var elem = frm.elements[i];
			if(elem.name == name && elem.type == 'checkbox' && elem.checked) {
                r[r.length] = elem.value;
            }

		}

	      return r;

	} catch(e) {
		alert("GET SELECTED ERROR: " + e);
	}
	return r;

}

function clearChildNodes(parent) {
    while(parent.hasChildNodes()) {
        parent.removeChild(parent.firstChild);
    }

}


function createGMap() {
             
	try {
	
		var gm = document.getElementById("gmap");
		if(gm === null) { return; }
	
	
		var icon = new GIcon();
		icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
		icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		icon.iconSize = new GSize(12, 20);
		icon.shadowSize = new GSize(22, 20);
		icon.iconAnchor = new GPoint(6, 20);
		icon.infoWindowAnchor = new GPoint(5, 1);

		var gmap = new GMap(gm);
		gmap.addControl(new GSmallMapControl());
		gmap.centerAndZoom(new GPoint(-99.700749, 40.815901), 14);

		var createMarker = function(point, msg) {
		  var marker = new GMarker(point,icon);
		  GEvent.addListener(marker, 'click', function() {
			 marker.openInfoWindowHtml(msg, new GSize(50,20));      
		  });
		  return marker;
		};

		var createInfoWindow = function(text) {
			return "<div id='gmapInfoWindow'>" + text + "</div>";

		};

		for(var i=0;i<shows.length;i++) {
			var show = shows[i];
			var marker = createMarker(new GPoint(show[0],show[1]), createInfoWindow(show[2]));
			gmap.addOverlay(marker);
		}
	} catch(e) {
		alert(e.message);
    }    
}


function search(frm) {
	if (frm.query === '') {
		alert('Enter a keyword');
		return false;
	}
}

function initSearch() {

	if(document.search === null) {
		return;
	}

	var styleclass_query = document.search.query.className;
	document.search.query.onblur = function() {
		var field = document.search.query;
		field.className = styleclass_query;
		if (field.value === '') {
			field.value = 'search this site';
        }
    };

	document.search.query.onfocus = function() {
		var field = document.search.query;
		field.className = 'searchFocus';

		if (field.value == 'search this site') {
			field.value = '';
        }
    };

	if (document.search.query.value === '') {
		document.search.query.value = 'search this site';
    }

}


function deleteBlogPosts(frm) {
	if(! checkForSelection(frm)) {
	   return false;
    }
    frm.action = "blog_posts_delete.jsp";
	frm.submit();
}

function hideBlogPosts(frm) {
	if(! checkForSelection(frm)) {
	   return false;
    }
    frm.action = "/m/speaker/blog_posts_hide.jsp";
	frm.submit();	
}

function showBlogPosts(frm) {
	if(! checkForSelection(frm)) {
	   return false;
    }
    frm.action = "/m/speaker/blog_posts_show.jsp";
	frm.submit();	
}

function updateBlogPosts(frm) {
	if(! checkForSelection(frm)) {
	   return false;
    }
    frm.action = "/m/speaker/BlogItemUpdate.action";
	frm.submit();
}


function featureShowSpeakers(frm) {
		if(! checkForSelection(frm)) {
		   return false;
        }
        frm.action = "/m/suadmin/ShowSetFeature.action";
		frm.featured.value = true;
		frm.submit();	
}


function removeShowFeatureSpeakers(frm) {
		if(! checkForSelection(frm)) {
		   return false;
        }
        frm.action = "/m/suadmin/ShowSetFeature.action";
		frm.featured.value = false;
		frm.submit();	
}





function removeShowSession(frm) {
		if(! checkForSelection(frm)) {
		   return false;
        }
        //frm.action = "/m/suadmin/ShowFeatureAdd.action";
		frm.method = "GET";
		frm.submit();	
}


function featureSpeakers(frm) {
	if(! checkForSelection(frm)) {
		return false;
    }

    frm.action = "/m/suadmin/SpeakerSetCurrentFeatureList.action";
    frm.currentFeature.value = true;
    frm.method = "POST";
    frm.submit();

}

function removeFeatureSpeakers(frm) {
	if(! checkForSelection(frm)) {
		return false;
    }

        frm.action = "/m/suadmin/SpeakerSetCurrentFeatureList.action";
		frm.method = "POST";
		frm.currentFeature.value = false;
		frm.submit();

}

function removeSpeakerFromShow(frm) {
	frm.method = "GET";
    return;
}

function showRemoveUser(frm) {
	if(! checkForSelection(frm)) {
		return false;
    }
    frm.action = "/m/suadmin/show_user_remove.jsp";
    frm.method = "GET";
    frm.submit();
    return;
}


function alumniShowConfirm(frm) {
	if(! checkForSelection(frm)) {
		return false;
    }
    frm.action = "/m/suadmin/AlumniShowConfirm.action";
    frm.method="POST";
    frm.confirmed.value = true;
    frm.submit();
}

function alumniShowRemoveConfirm(frm) {
	if(! checkForSelection(frm)) {
		return false;
    }
    frm.action = "/m/suadmin/AlumniShowConfirm.action";
    frm.method="POST";
    frm.confirmed.value = false;
    frm.submit();
}

function trim(str) {
	if(str === null) { return false; }

	while(str.charAt(0)==' ' || str.charAt(0)=='\n') {
		str=str.substring(1,str.length);
    }
    while(str.charAt(str.length-1)==' ' || str.charAt(str.length-1)=='\n') {
	    str=str.substring(0,str.length-1);
    }
    return str;
}

var selectedImg;


var errorFunc = function(response) {
	alert("error: " + response.responseText);
    return;
};

var handleFunc = function(response) {
	var resp = response.responseText;
	if(resp.indexOf('SUCCESS') != -1) {
		selectedImg.innerHTML = "<img src='/images/checkmark.gif'/>";
	} else {
		alert('ERROR: ' + resp + '\n\nIf this is incorrect, please send us a note in the suggestion box. \nWe appologize for the trouble.');
	}
    return;
};


function sendSurvey(presId) {
	
	var selectedTD = $("td" + presId);

    var sibs = Element.siblings(selectedTD);

    sibs.each(function(sib) {

        var sibI = Element.select(sib,".selectImage")[0];

       if(sibI) {
            sibI.innerHTML = "<img src='/images/select_button.gif'/>";
            sib.className = "presentation normal";
       }

    });
    
	selectedTD.className = "presentation selected";

    selectedImg = Element.select(selectedTD,".selectImage")[0];
    selectedImg.innerHTML = "<img src='/images/spinner.gif'/>";
	
	var servlet = "/servlet/ajax";
	var param = "type=surveySubmit&presentationId=" + presId;

	try {
		var r = new Ajax.Request( servlet , { xmethod: "post", postBody: param, onSuccess: handleFunc, onFailure: errorFunc });
	} catch(e) {
		alert("ERROR: " + e);
	}
	     
}

function selectForEval(sid) {
    var link = $(sid);
    if(link) {
        document.location = link.href;
    } else {
        alert("could not find: " + sid);
    }
}


function confirmDelete(frm) {
	if(! checkForSelection(frm)) {
		return false;
    }

    if(! confirm("Are you sure you want to delete this?")) {
		return false;
    }
}

function showAndHideOpts(opt) {
	
	for(var i=0;i<opt.length;i++) {
		var elem = document.getElementById(opt[i]);
		if(i === 0) {
			elem.style.display = 'block';
		} else {
			elem.style.display = 'none';
        }
    }

}

function copyTimeSlots(frm) {
	if(!checkSingleSelect(frm)) {
		return false;
    }

    if(!confirm("Are you sure you want to copy time slots from selected show?")) {
		return false;
    }

    return true;
}

function deleteSurvey(frm) {

	if(!checkForSelection(frm)) { return; }

	if(!confirm("Are you sure you want to delete selected survey's?")) { return; }
	
	frm.action = "SurveyDelete.action";
	frm.method = "POST";
	frm.submit();
}

function editSurveyQuestion(show) {

	var d = document.getElementById("questionDisplay").style;
	var d2 = document.getElementById("questionEdit").style;

	if(show === true) {
		d.display = "none";
		d2.display = "block";
	} else {
		d.display = "block";
		d2.display = "none";	
	}
}

function switchSessionPosition(frm) {
		
	var count = countSelected(frm);
	if(count != 2) {
		alert('You must select two presentations on the same day for this function');
		return false;
	}

	frm.action = '/m/suadmin/PresentationSwitchPosition.action';
	frm.method = 'POST';
	frm.submit();

}

function setTrackPosition(frm) {
	if(!checkSingleSelect(frm)) { return false; }
	if(frm.position.value === null) {
		alert('Position 0-5 number is required');
		return false;
	}
	frm.action = "TrackSetPosition.action";
	frm.method="POST";
	frm.submit();
}

function confirmDeleteQuestion(link) {
	if(!confirm("Are you sure you want to delete selected question?")) { return; }
	document.location = link;

}


function confirmDeleteSelected(frm) {

	if(!checkForSelection(frm)) { return false; }
	if(!confirm("Are you sure you want to delete selected item?")) { return false; }
	
	return true;

}

function updateRoomAvailability(roomId,showId,dayNumber) {

	var url = "/m/suadmin/ajax/RoomAvailabilityUpdate.action";
	
	var cid = "r" + roomId + "d" + dayNumber;
	
	var params = {method: 'post',parameters: "roomId=" + roomId + "&day=" + dayNumber, onError:handleAjaxError};
	
	var r = new Ajax.Updater(cid,url,params);
	
	//alert('Update: ' + url);


}

function handleAjaxError(resp) {
	alert("ERROR: " + resp.message);
}

function Sponsor(name,imagePath,link,topMargin) {
	this.name = name;
	this.imagePath = imagePath;
	this.link = link;
	this.topMargin = topMargin;
}

function quickPollView(ev) {

	var url = "/m/ajax/QuickPollView.action";
	
	try {
		$("pollSubmitDiv").style.display = "none";
		$("pollSpinner").style.display = "block";
		
		var f = $("quickPollForm");
		var param = "surveyId=" + f.surveyId.value;
			
		var p = { parameters: param, method: 'get' };
		
		var r = new Ajax.Updater("quickPoll",url,p);
		
	} finally { 
	
		Event.stop(ev);
	}

}

function quickPoll(ev) {

	var url = "/m/ajax/QuickPollVote.action";
	
	try {
		//alert(url);
		
		$("pollSubmitDiv").style.display = "none";
		$("pollSpinner").style.display = "block";

		var f = $("quickPollForm");
		var param = "surveyId=" + f.surveyId.value;
		
		var iCount = f.elements.length;
		for(var i=0;i<iCount;i++) {
			var e = f.elements[i];
			if(e.checked === true) {
				param += "&" + e.name + "=" + e.value; 
	
			}	
		}

		//alert(param);		
		
		var p = { parameters: param, method: 'post' };
		
		var r = new Ajax.Updater("quickPoll",url,p);
		
	} finally { 
	
		Event.stop(ev);
	}

}


function switchPresenationArchiveState(frm,archive) {

	if(!checkForSelection(frm)) { return false; }
	
	if(archive === true) {
		if(!confirm("Are you sure you want to archive selected topics?")) { return false; }
	} else {
		if(!confirm("Are you sure you want to UNARCHIVE selected topics?")) { return false; }
	}

	frm.archive.value = archive;
	frm.action = "TopicArchive.action";
	frm.submit();

}


function switchSpeakerArchiveState(frm,archive) {

    try {
        if (!checkForSelection(frm)) { return false; }
        if (archive === true) {
            if (!confirm("Are you sure you want to archive selected speaker?")) { return false; }
        } else {
            if (!confirm("Are you sure you want to UNARCHIVE selected speaker?")) { return false; }
        }
        frm.archived.value = archive;
        frm.action = "SpeakerArchive.action";
        frm.submit();
    } catch(ex) {
        alert("ERROR: " + ex);
    }
	
	return false;

}

function videoNa() {
	alert('Video is not available');
}

function speakerFind(frm,target) {

	try {	
	
		
		$(target).innerHTML = "<img src=\"/images/spinner.gif\" />";
	
			var url = "/m/ajax/SpeakerFind.action";

			var name = frm.name.value;
			if(name === '') {
				alert('Enter a name');
				return false;
			}

			var params = {method: 'get',parameters: "name=" + name , onError:handleAjaxError};	
			var r = new Ajax.Updater(target,url,params);	
	} catch(e) {
		alert("ERROR: " + e.message);
	} finally {
		return false;
	}

}

var hiddenFeaturedSpeakers;
var featuredSpeakerHolder;
var currentSpeakerIndex = 0;

var hiddenPartnerLogos;
var currentPartnerHolder;
var currentPartnerIndex = 0;

function showNextSpeaker() {


    //var currentFeaturedSpeakers = featuredSpeakerHolder.getElementsByClassName("speakerPreview");
    var currentFeaturedSpeakers = Element.select(featuredSpeakerHolder,".speakerPreview");

    for(var i=0;i<currentFeaturedSpeakers.length;i++) {
        featuredSpeakerHolder.removeChild(currentFeaturedSpeakers[i]);
    }


    if(currentSpeakerIndex >= hiddenFeaturedSpeakers.length) { currentSpeakerIndex = 0; }

    var nextFeaturedSpeaker = hiddenFeaturedSpeakers[currentSpeakerIndex++].cloneNode(true);

    featuredSpeakerHolder.appendChild(nextFeaturedSpeaker);

}

function showNextPartner() {

    //var currentPartnerLogo = currentPartnerHolder.getElementsByClassName("partnerRotateLogo");
    var currentPartnerLogo = Element.select(currentPartnerHolder,".partnerRotateLogo");

    for(var i=0;i<currentPartnerLogo.length;i++) {
        currentPartnerHolder.removeChild(currentPartnerLogo[i]);
    }
    
    if(currentPartnerIndex >= hiddenPartnerLogos.length) { currentPartnerIndex = 0; }

    var nextP = hiddenPartnerLogos[currentPartnerIndex++].cloneNode(true);
    nextP.style.display = "block";
    nextP.show();

    currentPartnerHolder.appendChild(nextP);

}

var rotateSpeakersAndPartnersExecutor;

function showNextPartnerAndSpeaker() {
    try {
         if(currentPartnerHolder) { showNextPartner(); }
	     if(featuredSpeakerHolder) { showNextSpeaker(); }
    } catch(e) {
        //alert("SHOW NEXT STUFF: " + e);
        rotateSpeakersAndPartnersExecutor.stop();
    }
}


function rotateSpeakersAndPartners() {

    currentPartnerHolder = $("currentPartnerHolder");
    var hprp = $("hiddenPartnerLogos");
    if(hprp) {
        //hiddenPartnerLogos = hprp.getElementsByClassName("partnerRotateLogo");
        hiddenPartnerLogos = Element.select(hprp,".partnerRotateLogo");
        shuffle(hiddenPartnerLogos);
    }

    featuredSpeakerHolder = $("featuredSpeakerHolder");
    //alert("CFS: " + cfs);
    var hfsp = $("hiddenFeaturedSpeakers");
    if(hfsp) {
        hiddenFeaturedSpeakers = Element.select(hfsp,".speakerPreview");
    }


    showNextPartnerAndSpeaker();
	rotateSpeakersAndPartnersExecutor = new PeriodicalExecuter(showNextPartnerAndSpeaker, 15);

}

var shuffle = function(o){ //v1.0
	for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
	return o;
};


function ajaxError(t) {

	var spinner = $("spinner");
	if(spinner) { spinner.innerHTML = ""; }
	alert('Error ' + t.status + ' -- ' + t.statusText);

}

function popup(url) {

    //var pv = window.open(url ,"emailWin", "status=1,resizeable=1,location=1,scrollbars=1,toolbar=1,height=600,width=800");
    var pv = window.open(url ,"emailWin", "status=1,location=1,scrollbars=1,toolbar=1,height=600,width=800,resizeable=yes");

    if(pv == null) {        
        alert("Could not open pop-up make sure they are not disabled");
        return;
    }
    pv.focus();

}

var pex;
var pexC = 0;

function setUpRotateList(id,visibleCount) {

    try {
        var ul = $(id);
        var liL = Element.descendants(ul);
        var current = 0;
        liL.each(function(aLI) {
            aLI.style.display = "none";
        });

        current = rotateListElements(liL,current,visibleCount);

        pex = new PeriodicalExecuter(function() {
            pexC++;
            current = rotateListElements(liL,current,visibleCount);
            //if(pexC > 3) pex.stop();
        }, 5);

    } catch(ex) {
        alert("SET UP ROTATE ERROR" + ex);
    }

}

function rotateListElements(elementL,current,visibleCount) {

    elementL.each(function(aLI) {
            aLI.style.display = "none";
        });

    try {

        var totalC = elementL.lenght;

        if(current >= totalC ) {
            current = 0;
        }

        var start = current;
        var end = current + visibleCount;

        for(var x=start;x<end&& x < totalC; x++) {
            var item = elementL[x];
           //item.show();

            try {
                //alert(item.style.display);
                item.style.display = "block";
                //new Effect.Appear(item);
            } catch(e1) {
                alert("appear error: " + e1);
            }
          //  new Effect.Appear(elementL[x]);
        }

        if(start > totalC - visibleCount) {
            start = 0;
            end = totalC - start;

            for(var x1=start;x1<end&& x1 < totalC; x1++) {
                var item2 = elementL[x1];
               //item.show();

                try {
                    //alert(item.style.display);
                    item2.style.display = "block";
                    //new Effect.Appear(item);
                } catch(e2) {
                    alert("appear error: " + e2);
                }
              //  new Effect.Appear(elementL[x]);
            }

        }


        return start + 1;

    } catch(ex) {
        alert("ROTATE LIST ERROR: " + ex);
        return null;
    }

}

function jumpToSpeaker(frm) {

    var sid = frm.speakerId.value;
    if(sid) {
        var loc = document.location.href;
        var x = loc.indexOf('#'); 
        if(x != -1) {
            loc = loc.substring(0,x);
        }
        document.location = loc + "#speaker" + sid;
    }

}

function closeTopic() {
    if(dg) {
       dg.style.zIndex = 0;
       var x1 = new Effect.DropOut(dg);
    }
}


var dg;

function observePopups() {

    dg = $("popupDialog");
    dg.hide();
    dg = null;

    var prA = $$(".popupSource");

    prA.each(function(pr) {

        if(pr.id) {

            pr.observe("click",function(ev) {
               showPopup(ev,pr.id);
            });
        }

        if(pr.getAttribute("popId")) {
            pr.observe("click",function(ev) {
               showPopup(ev,pr.getAttribute("popId"));
            });
        }
                
    });


    prA = $$(".popupSource2");
    prA.each(function(pr) {
        if(pr.id) {
            pr.observe("click",function(ev) {
               showPopup(ev,pr.id.substr(3));
            });
        }
    });

}


function showPopup(ev,pid) {

    Event.stop(ev);
    if(dg) {

       var dgc = dg.childNodes;
       for(var i=0;i<dgc.length;i++) {
           dg.removeChild(dgc[i]);
       }


    }

    dg = $("popupDialog");
    var dgi = $("pop" + pid);
    if(dgi) {

        dg.appendChild(dgi.cloneNode(true));

        var offsetY = -250;
        if(ev.screenY < 500) {
            offsetY = 0;
        }

        var lf = Event.pointerX(ev) - 460;
        var tp = Event.pointerY(ev) + offsetY;

        dg.style.position = "absolute";
        dg.style.left = (res.width / 2 - 250) + "px";

        var pageYOffset;
        if(window.innerHeight) {
            pageYOffset = window.pageYOffset;
        } else {
            pageYOffset = document.documentElement.scrollTop;
        }

        dg.style.top = (pageYOffset + 70) + "px";
        dg.style.zIndex = 101;
        var x1 = new Effect.Appear(dg);

        var x2 = new Draggable(dg);

        observeEscapeKey(dg);

    }
    return false;
}

function decoratePopups(idsStr,templateId) {

    var template = $(templateId);

    var ids = idsStr.split(',');

    ids.each(function(id){

        decoratePopup(id);

    });

}

function decoratePopup(id) {


//    alert(id);

    var item = $(id);

    var h3 = item.select('h3')[0];
    var p = item.select('p')[0];

    item.removeChild(h3);
    item.removeChild(p);

    var dbw = item.appendChild(document.createElement('div'));
    dbw.className = 'dialogBodyWrapper';

    // head
    var head = dbw.appendChild(document.createElement('div'));
    head.className = 'head';
    head.appendChild(h3);

    var ac = head.appendChild(document.createElement('a'));
    ac.setAttribute('href',"javascript:closeTopic();");
    var ic = ac.appendChild(document.createElement('img'));
    ic.setAttribute('src','/images/close2.gif');

    head.appendChild(document.createElement('div')).className = 'clear';

    // body

    var db = dbw.appendChild(document.createElement('div'));
    db.className = 'dialogBody';

    var abs = db.appendChild(document.createElement('div'));
    abs.appendChild(p);

    db.appendChild(document.createElement('br')).className = 'clear';

    var bac = db.appendChild(document.createElement('a'));
    bac.className = 'closeB';
    bac.setAttribute('href',"javascript:closeTopic();");

    var baci = bac.appendChild(document.createElement('img'));
    baci.setAttribute('src',"/img/bg/close_button.gif");


    var dclear = db.appendChild(document.createElement('div'));
    dclear.className = 'clear';

}

/*
function decoratePopup(template,id) {

    try {

        //var id = item.getAttribute('id');



        var item = $(id);

        alert(item);

        var h3 = item.select('h3')[0];
        var p = item.select('p')[0];

       // alert(h3.innerHtml);

        var newD = template.cloneNode(true);

        var newHead = template.select('.head')[0];

        newHead.insertBefore(h3.cloneNode(true),newHead.firstChild);

        var newP = template.select('.abstract')[0];
        newP.appendChild(p.cloneNode(true));

        var parent = item.parentNode;

        parent.removeChild(item);

        newD.setAttribute('id',id);
        parent.appendChild(newD);
        

        alert("ITEM: " + id + "\n--------------" + newD.innerHTML);

    } catch(e) {
        alert(e);
    }


}
*/

function isIE() {
    // i hate this .. just for one hack
    return  navigator.userAgent.indexOf("MSIE") != -1;
}

var modalDiv;

function showModalDiv() {
    try {

        if(modalDiv) { return; }

        modalDiv = document.createElement("div");
        modalDiv.id = (isIE() === true ? "modalDivIE" : "modalDivFF");
        modalDiv.style.height = "2000px";

        document.body.appendChild(modalDiv);
    } catch(e) {
        alert("SHOW MODAL DIV ERROR: " + e.message);
    }
}

function hideModalDiv() {
    if(modalDiv) {
        document.body.removeChild(modalDiv);
    }
    modalDiv = null;
}

function observeKeynotes() {

    var kd = $("keynotesDialog");

    var thumbs = $$('#keynotesDialog div.thumb');

    thumbs.each(function(thumb) {

        var kdpreview = $("kd" + thumb.id.substring(2));
        kdpreview.style.display = "block";
        kdpreview.hide();

        thumb.observe("click",function(ev){
            Event.stop(ev);
            showKeynotePreview(thumb);
        });

    });

    showKeynotePreview(thumbs[0]);


}

var keynoteThumb;
var keynotePreview;

function showKeynotePreview(thumb) {

    var id = thumb.id.substring(2);

    if(keynotePreview) {
       keynotePreview.hide();
    }

    if(keynoteThumb) {
        keynoteThumb.className = "thumb";
    }


    keynoteThumb = $("kt" + id);
    keynoteThumb.className = "thumb current";

    keynotePreview = $("kd" + id);
    keynotePreview.show();

   // alert(kd.innerHTML);


}

var news;
var newsNuggets;
var rotateNewsI = 0;

var displayCount = 2;

var pe;

function observeRotateNews() {

    news = $("news");

//    newsNuggets = $("newsNuggets").getElementsByClassName("rotatable");
    newsNuggets = $$("#newsNuggets .rotatable");

    if(newsNuggets.length < 3) {
        displayCount = 1;
        $("newsWrapper").style.height = "90px";
    }


    for(var i=0;i<displayCount;i++) {
        rotateNews();
    }

    pe = new PeriodicalExecuter(rotateNews, 10);
}

function rotateNews() {

    try {
        //var newsV = news.getElementsByClassName("rotatable");
        var newsV = Element.select(news, ".rotatable");

        var newN = newsNuggets[rotateNewsI++].cloneNode(true);
        if (rotateNewsI >= newsNuggets.length) {
            rotateNewsI = 0;
        }
        newN.style.display = "none";
        if (newsV.length > 0) {
            news.insertBefore( newN, newsV[0]);
        } else {
            news.appendChild(newN);
        }
        //new Effect.Appear(newN);
        newN.show();

        if (newsV.length >= displayCount) {
            news.removeChild(news.lastChild);
        }


    } catch(ex) {
       // alert("ERROR: " + ex);
        pe.stop();
    }

}

function markActiveLink(parentE) {

    try {
        var p = $(parentE);
        //var links = p.getElementsByTagName("a");
        var lis = p.select('li');

        var current = document.location.href;
        for(var i=0;i<lis.length;i++) {
           var li = lis[i];
           var links = li.select('a');
           if(links.length == 0) continue;
           var link = links[0];

           //console.debug(link.href + ' ' + current);

          // if(current.indexOf(link.href) != -1) {
           if(current == link.href) {
               li.addClassName('current');
               link.className = "current";
               return;
           }
        }

    } catch(ex) {
        alert("ERROR: " + ex);
    }

}



function Rotator(currentHolder,hiddenItems, interval) {

    if(!interval) { interval = 15 }

    this.currentHolder = currentHolder;
    this.hiddenItems = hiddenItems;
    var currentHiddenIndex = 0;
    this.interval = interval;
    this.rotateExecutor = null;

    this.showNextItem = function() {

         if(currentHiddenIndex >= hiddenItems.length) {
               currentHiddenIndex = 0;
         }

         try {

            //var currentItem = currentHolder.getElementsByClassName("hiddenItem");
            var currentItem = Element.select(currentHolder,".hiddenItem");

             /*
            for(var i=0;i<currentItem.length;i++) {
                currentHolder.removeChild(currentItem[i]);
            }
            */

             clearChildNodes(currentHolder);

             //$('scounter').innerHTML = currentHiddenIndex;

             var nextP = hiddenItems[currentHiddenIndex].cloneNode(true);
             currentHiddenIndex = currentHiddenIndex + 1;

            nextP.style.display = "block";
            nextP.show();

            currentHolder.appendChild(nextP);

        } catch(e) {
            //alert("SHOW NEXT STUFF: " + e);
            if(rotateExecutor) { rotateExecutor.stop(); }
        }

    };
    

    this.showPreviousItem = function() {

        if(currentHiddenIndex < 0) {
              currentHiddenIndex = hiddenItems.length - 1;
        }

        try {

           //alert("SHOW NEXT ITEM: " + currentHiddenIndex);

           //var currentItem = currentHolder.getElementsByClassName("hiddenItem");
           var currentItem = Element.select(currentHolder, ".hiddenItem");

           for(var i=0;i<currentItem.length;i++) {
               currentHolder.removeChild(currentItem[i]);
           }

            //$('scounter').innerHTML = currentHiddenIndex;

            var nextP = hiddenItems[currentHiddenIndex].cloneNode(true);

           currentHiddenIndex = currentHiddenIndex - 1;

           nextP.style.display = "block";
           nextP.show();

           currentHolder.appendChild(nextP);

       } catch(e) {
           //alert("SHOW NEXT STUFF: " + e);
           if(rotateExecutor) { rotateExecutor.stop(); }
       }


    };

    this.start = function() {

        //this.showNextItem();
	     rotateExecutor = new PeriodicalExecuter(this.showNextItem, interval);
         this.showNextItem();

    };

    this.stop = function() {
        if(rotateExecutor) { rotateExecutor.stop(); }
    }


}


function rotateItems(currentHolderId, hiddenItemsId, interval, doShuffle ) {


    if(!interval) { interval = 15 }
    //if(!doShuffle) { doShuffle = true; }

    var currentHolder = $(currentHolderId);
    var hprp = $(hiddenItemsId);

    if(!hprp) { return null; }


    //var hiddenItems = hprp.getElementsByClassName('hiddenItem');
    var hiddenItems = Element.select(hprp,'.hiddenItem');
    if(doShuffle == true) { shuffle(hiddenItems); }
    
    var r = new Rotator(currentHolder,hiddenItems, interval);
    r.start();

    return r;

}

function Scroller(currentHolder,hiddenItems, scrollCount, interval) {

    if(!interval) { interval = 15 }

    this.currentHolder = currentHolder;
    this.hiddenItems = hiddenItems;
    var currentHiddenIndex = 0;
    this.interval = interval;
    this.rotateExecutor = null;

    this.showNextItem = function() {

         try {

            var currentItem = Element.select(currentHolder,".hiddenItem");

             for(var i=0;i<currentItem.length && i < scrollCount;i++) {
                 currentHolder.removeChild(currentItem[i]);
             }

             currentItem = Element.select(currentHolder,".hiddenItem");

             for(var x=currentItem.length;x<scrollCount && x < hiddenItems.length ;x++) {

                 if(currentHiddenIndex >= hiddenItems.length) {
                       currentHiddenIndex = 0;
                 }
                 
                 var nextP = hiddenItems[currentHiddenIndex].cloneNode(true);
                 currentHiddenIndex = currentHiddenIndex + 1;

                 nextP.style.display = "block";
                 nextP.show();

                 currentHolder.appendChild(nextP);

             }


        } catch(e) {
            alert("SHOW NEXT STUFF: " + e);
            if(rotateExecutor) { rotateExecutor.stop(); }
        }

    };


    this.start = function() {

	     rotateExecutor = new PeriodicalExecuter(this.showNextItem, interval);
         this.showNextItem();

    };

    this.stop = function() {
        if(rotateExecutor) { rotateExecutor.stop(); }
    }


}



function scrollItems(currentHolderId, hiddenItemsId, scrollCount, interval, doShuffle ) {


    if(!interval) { interval = 15 }
    //if(!doShuffle) { doShuffle = true; }

    var currentHolder = $(currentHolderId);
    var hprp = $(hiddenItemsId);

    if(!hprp) { return null; }

    var hiddenItems = Element.select(hprp,'.hiddenItem');
    if(doShuffle == true) { shuffle(hiddenItems); }

    var r = new Scroller(currentHolder,hiddenItems, scrollCount, interval);
    r.start();

    return r;

}


function showDialogInParentDoc(dialog, widthOffset) {

    var parent = dialog.parentNode;

    if(parent != document.body) {
        parent.removeChild(dialog);
        document.body.appendChild(dialog);
    }

    showDialog(dialog,widthOffset);



}

function showDialog(dialog, widthOffset) {

    dialog.style.left = (screen.width / 2 - widthOffset) + "px";
    dialog.style.position = "absolute";

    var pageYOffset;
    if(window.innerHeight) {
        pageYOffset = window.pageYOffset + 100;
    } else {
        pageYOffset = document.documentElement.scrollTop + 100;
    }

    dialog.style.top = pageYOffset + "px";
	dialog.style.zIndex = 100;
	dialog.show();

}

function observeCloseButton(parent,selector) {

    if(!selector) selector = 'a.close';

    var closeButtonA = parent.select(selector);

    closeButtonA.each(function(button) {
        button.observe('click',function(e) {
            e.stop();
            parent.hide();
        });
    });
}

function observeEscapeKey(parent) {

    var escapeHandler = function(ev){
       if(ev.keyCode == 27) {
          parent.hide();
          Event.stopObserving(window,"keypress",this);
       }
    };

    Event.observe(window,"keypress",escapeHandler);
}


function initializeDialog(div) {

    try {

        var closeL = Element.select(document, 'div.head a.close')[0];

        if(closeL) {
            closeL.observe('click', function(e) {
                Event.stop(e);
                div.hide();
            });
        }


        div.hide();
        div.removeClassName('hidden');
        new Draggable(div);

    } catch(ex) {
        alert("error: " + ex.message);
    }

}

var findUserDiv;
var findUserText;

function observerFindUserDialog() {

    findUserDiv = document.getElementById('findUser');
    findUserText = document.getElementById('findUserText');

    var lnk = document.getElementById('findUserLink');

    Event.observe(lnk,"click",function(e) {
        Event.stop(e);
        findUserShow(e);
    });


    Event.observe(window,"keypress",function(ev){
       if(ev.keyCode == 27) {
           hideFindUserDiv();
       }
    });
}



function findUserShow(e) {

    findUserDiv.style.display = 'block';
    findUserDiv.style.position = 'absolute';
    findUserDiv.style.top = e.clientY + 'px';
    findUserDiv.style.left = (e.clientX - 200) + 'px';
    findUserDiv.style.zIndex = 100;

    findUserText.focus();

}

function hideFindUserDiv() {

    if(findUserDiv) {
        findUserDiv.style.display = 'none';
        findUserDiv.style.zIndex = 0;
    }

}


function observeHomePageTabs(tabBarId,tabParentId) {

    var tabBar = $(tabBarId);
    var tabLinks = tabBar.select('a');
    var tabs = $(tabParentId).select('div.tab');

    tabLinks.each(function(tabLink) {

        tabLink.observe('mouseover',function(e) {
            Event.stop(e);
            focusOnHomePageTab(tabs,tabLinks,tabLink);
        });       
    });

}

function focusOnHomePageTab(tabs,tabLinks, tabLink) {

    var tabId = tabLink.getAttribute('tab');

    tabs.each(function(tl) { tl.removeClassName('current'); } );
    tabLinks.each(function(tl) { tl.removeClassName('current'); } );

    var tab = $(tabId);
    tab.addClassName('current');
    tabLink.addClassName('current');

}

function video_tab_showDetail() {

    $('videoAbstract').addClassName('scrollable');
    $('moreVideo').addClassName('hidden');
    $('videoSummary').addClassName('hidden');
    $('videoDetail').removeClassName('hidden');

}

function video_tab_showSummary() {

    $('videoDetail').addClassName('hidden');
    $('videoAbstract').removeClassName('scrollable');
    $('moreVideo').removeClassName('hidden');
    $('videoSummary').removeClassName('hidden');

}



function playVideo(id) {

    var video = $('video');
    var video = $('blog');
    video.removeClassName('current');
    video.addClassName('current');


/*
    var videoWrapper = $('videoWrapper');


    var url = '/m/ajax/tab_video_player.jsp'
    var params = 'id=' + id;

    var r = new Ajax.Updater(videoWrapper,url,params);
*/



}


var brightcoveLoaded = false;

var selectedRefId = null;

function onTemplateLoaded() {

    brightcoveLoaded = true;

}


function homePageVideo(refId) {

    //alert('play : ' + refId);

    selectedRefId = refId;

    if(brightcoveLoaded == false) {
        alert('video player is still loading');
        return;
    }

    try {
        callFlash("stopVideo");

    } catch(e) {
        alert(e.message);
    }

}

function observeTourList(tourId, tourIdHidden) {

    var tourList = $(tourId).select('li');

    tourList.each(function(li) {

        if(li.hasClassName('showDate')) {
            li.observe('mouseover',function() {
               showTourEventSummary(li);
            });
        }
    });

    showTourEventSummary(tourList[0]);


    observeTourViewChanger();


}

function observeTourViewChanger() {

    var tourListView = $("tourListView");
    var tourMapView = $("tourMapView");

    tourListView.show();
    tourMapView.hide();

    var mapC = $("tourTab").select('div.viewChanger a.map');

    mapC.each(function(mc) {
           mc.observe('click',function(e) {
           Event.stop(e);
           tourListView.hide();
           tourMapView.show();
        });
    });

    var listC = $("tourTab").select('div.viewChanger a.list');
    listC.each(function(lc) {
        lc.observe('click',function(e) {
           Event.stop(e);
           tourListView.show();
           tourMapView.hide();
        });
    });
}


var currentShowLi;

function showTourEventSummary(li) {

    if(currentShowLi) {
        currentShowLi.removeClassName('current');
    }

    var showId = li.getAttribute('showId');

    var summaryHidden = $('showPreview' + showId );

    var showSummary = $('showPreview');

    clearChildNodes(showSummary);

    showSummary.appendChild(summaryHidden.cloneNode(true));

    currentShowLi = li;
    currentShowLi.addClassName('current');


}

/** one home page */

function tab_training_observeTopicList() {

    var topicList = $('topicList').select('li');

    var topicDescription = $('topicDescription');
    topicDescription.hide();

    Event.observe(window,"keypress",function(ev){
       if(ev.keyCode == 27) {
          tab_training_closeSummary();
       }
    });
    
    topicList.each(function(li) {
       li.observe('click',function(e) {

           try {

               tab_training_closeSummary();

               var tid = li.getAttribute("topicId");
               var summary = $("topicSummary" + tid).cloneNode(true);
               topicDescription.appendChild(summary);
               topicDescription.show();

               var closeB = summary.select('a.close')[0];
               closeB.observe('click',function(e) {
                   Event.stop(e);
                   tab_training_closeSummary();
               });


           } catch(e) {
               //alert(e.message);
           }

       });
    });

}

function tab_training_closeSummary() {

    var topicDescription = $('topicDescription');
    topicDescription.hide();

    clearChildNodes(topicDescription);

}

function displayCaptcha(frm,imgSrc,ev) {


    var div = $('captcha');

    ev.stop();

    var pageYOffset;
    var pageXOffset;
    if(window.innerHeight) {
        pageYOffset = window.pageYOffset;
        pageXOffset = window.innerWidth;
    } else {
        pageYOffset = document.documentElement.scrollTop;
        pageXOffset = document.documentElement.clientWidth;
    }


    div.style.top = (pageYOffset + (res.height / 2) - 200) + "px";
    div.style.left = (pageXOffset / 2 - 100) + "px";

    div.style.display = 'block';
    div.style.position = 'absolute';

    var cw = $('captchaImageWrapper');
    cw.innerHTML = "";
    cw.innerHTML = "<img src='" + imgSrc + "' alt='Verify Text' class='absmiddle'/>";

    return false;


}

function hideCaptcha() {
    var div = $('captcha');
    div.hide();
}

/* tour map section */

var tourMapLabel;

function tour_map_Init() {

    var tourMap = $('tourMap');
    var metroAreas = tourMap.select('.metro');

    tourMapLabel = $('tourMapLabel');
    Event.observe(window,"keypress",function(ev){
       if(ev.keyCode == 27) {
          tourMapLabel.style.display = "none";
       }
    });

    for(var i=0;i<metroAreas.length;i++) {
        tour_map_observeItem(metroAreas[i]);
    }
}

function tour_map_observeItem(metro, n) {

    if(metro.hasClassName('old')) return;

    var pixelX = metro.getAttribute("pixelx");
    var pixelY = metro.getAttribute("pixely");

    if(pixelX == 0) return;

    var ms = metro.style;
    ms.position = "relative";
    ms.top = pixelY + "px";
    ms.left = pixelX + "px";

    metro.observe('mouseover',function(e) {

        clearChildNodes(tourMapLabel);

        var metroId = metro.getAttribute("metroId");
        var label = $('metroL' + metroId).cloneNode(true);

        tourMapLabel.appendChild(label);
        var tourMapLabelStyle = tourMapLabel.style;
        tourMapLabelStyle.position = "absolute";
        tourMapLabelStyle.left = e.pageX + "px";
        tourMapLabelStyle.top = e.pageY + "px";
        tourMapLabelStyle.display = "block";

        var closeL = label.select('div.head a.close')[0];

        closeL.observe('click',function(ex) {
           Event.stop(ex);
           tourMapLabelStyle.display = "none";
        });

    });


}

function focusTabContainer(containerId) {

    dojo.addOnLoad(function(){

        try {
            var tabContainer = dijit.byId(containerId);

            var view = getRequestParameter("view");
            if(view == null) return false;

            var tab = dijit.byId(view);
            if(tab != null) {
                tabContainer.selectChild(tab);
            }
        } catch(e) {
            console.debug("ERROR: " + e);
        }
    });
    
}

function getRequestParameter (parameterName ) {

    var queryString = window.top.location.search.substring(1);

    var parameterName = parameterName + "=";
    if ( queryString.length > 0 ) {
        begin = queryString.indexOf ( parameterName );
        if ( begin != -1 ) {
            begin += parameterName.length;
            end = queryString.indexOf ( "&" , begin );
            if ( end == -1 ) {
                end = queryString.length
        }

        return unescape( queryString.substring ( begin, end ) );
    }

    return null;
    }
}



function observeSessionSurveyPoll(frm) {

    var updateDiv;

    var responseReceived = function() {

        updateDiv.update("<img src='/images/checkmark.gif'/> response received");
    };


    var inputs = Element.select(frm,'input');

    inputs.each(function(input) {
        if(input.type != 'radio') return;

        input.observe('click',function(e) {e.stop

            var questionId = input.getAttribute('questionId');

            var answer = input.value;

            updateDiv = Element.select(frm,'.response' + questionId)[0];

            updateDiv.update(spinnerImage);

            var url = '/m/alumni/ajax/SessionPollResponse.action';

            //var values = 'questionId=' + questionId + '&' + input.name + '=' + answer;

            var values = Form.serialize(frm);

            var params = { method: 'post',postBody: values, onSuccess: responseReceived };

            new Ajax.Request(url,params);
            
        });

    });

    
}


/* twitter stuff */

var twitter_showId;

function twitter_markCurrent(link) {

   var links = Element.select(document,'div.twitter div.legend a');
   links.each(function(it) {
      it.removeClassName('current');
   });

   link.addClassName('current');


}


function twitter_observeLink(box,item) {

    var link = item.select('a')[0];

    link.observe('click',function(e) {

       try {
           e.stop();

           var type = link.getAttribute('type');

           twitter_markCurrent(link);

           var status = box.select('div.status')[0];
           status.update(spinnerImage);
           var statusOff = function() {
               status.update(''); 
           }


           var wrapper = box.select('div.wrapper')[0];

           var url = '/m/ajax/twitter.jsp?type=' + type;

           if(twitter_showId) url += '&showId=' + twitter_showId;

           new Ajax.Updater(wrapper,url,{method:'get',onComplete: statusOff });
       } catch(e) {
           console.debug(e);
       }

    });

}


function twitter_observe(defaultButton, showId) {

    if(!defaultButton) defaultButton = 0;

    if(showId) twitter_showId = showId;

    var box = Element.select(document,'div.twitter')[0];

    var legend = box.select('div.legend ul')[0];

    if(!legend) return;

    var items = legend.select('li');

    items.each(function(item) {
        twitter_observeLink(box,item);
    });

    var link = legend.select('a')[defaultButton];
    twitter_markCurrent(link);

}

/* contact form verification */

function contact_foo() {

    try {
        var div = Element.select(document,'div.verifyForm')[0];
        var frm = div.select('form')[0];

        frm.insert("<input type='hidden' name='scriptEnabled' value='true'/>" );


    } catch(e) {}

}

function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function observeScreencastPromoPage() {

    var requestDiv = $$('div.requestForm')[0];
    requestDiv.hide();
    requestDiv.removeClassName('hidden');

    var viewH3 = $$('h3.viewLink')[0];
    var viewLink = viewH3.select('a')[0];
    
    viewH3.observe('click',function(e) {
       e.stop();
       viewH3.hide();
        
       Effect.Appear(requestDiv, {duration: 2.0 });

    });

    //alert(link);


    
}

