/* 

START jQUERY 

*/
$(document).ready(function(){

	/*
	
	CAMPUSES PAGE
	
	- activate the college arrow anchors
	
	*/
       
   $("#campuses .map a").click(function () {   
   
   
		   // turn off all links on map 
		   $("#campuses  a").removeClass("on");
   
		   // turn on link just clicked        
		   $(this).addClass("on");                
		   
		   // close all campus info
		   $(".campus-info").hide();
		   
		   // open relevant campus
		   var theCampus = $(this).attr("href")
		   $(theCampus).show();
		   
		   // don't skip down the page
		   return false;
   
   });	

	/*
	
	CAMPUSES PAGE
	
	- on page load, open pertinent campus info if #campusName is in the URL
	
	*/
	if (document.getElementById("campuses")) {
	
		var theURL = location.href;
		if (theURL.indexOf('?') >= 0) {
			var campusName = theURL.split("?",2)[1];
		}

		if (campusName) {

			// turn off all links on map 
			$("#campuses a").removeClass("on");
	
			// close all campus info
			$(".campus-info").hide();	
			
			//show relevant campus
			document.getElementById(campusName).style.display = "block";
			
			//turn on campus anchor
			var campusAnchor = document.getElementById("a-"+campusName);
			campusAnchor.className += " on";
			
		}
		
	
	}

	/*
	
	WEATHER FEED
	
			 http://pipes.yahoo.com/pipes/pipe.run?_id=750ea861f8cd908eeaad43f91ff5afa6&_render=json			NEW LINK AS OF 11-4-2009
			 
	
	getFeed('http://pipes.yahoo.com/pipes/pipe.run?_id=2c7a9aa5caeb69a65be21df5dac2ac7c','renderWeather','');
	
	*/
	getFeed('http://pipes.yahoo.com/pipes/pipe.run?_id=750ea861f8cd908eeaad43f91ff5afa6','renderWeather','');

	/*
	
	EVENTS FEED
	
			 http://pipes.yahoo.com/pipes/pipe.run?_id=psKpsL4R3hGJHQq_dPQQIA&_render=json 						NEW LINK AS OF 11-4-2009		
			 
	
	getFeed('http://pipes.yahoo.com/pipes/pipe.run?_id=wFVCXkMh3hGtkgVf_w6H4A','renderEvents','')
	*/
	
	/* DISABLED FOR GOOD!!!! USING INHOUSE INSTEAD
	if (document.getElementById("events")) {
		getFeed('http://pipes.yahoo.com/pipes/pipe.run?_id=psKpsL4R3hGJHQq_dPQQIA','renderEvents','')
	}
	
	*/
	/*
	
	INITIALIZE IE NAVMAIN FIX
	
	*/
	
	$("#nav-global li").hover(
		function () {
			$(this).addClass("sfhover");
			//IE7 fix to make sure the nested UL closes
			$(this).removeClass("sfhover-off");
		}, 
		function () {
			$(this).removeClass("sfhover");
			//IE7 fix to make sure the nested UL closes
			$(this).addClass("sfhover-off");
		}
	);
	
	/*
	
	NEW - 03.03.09 !
	
	HOVER FOR OTHER SCHOOL LINKS UNDER LOGO
	
	*/
	
	$("#logo").hover(
		function () {	
		//	$(this).addClass("show-school-links");
		}, 
		function () {
			$(this).removeClass("show-school-links");
		}
	);
	
	$("#logo span").click(
		function () {	
			$(this).parent().addClass("show-school-links");
		}
	);

	/*  
	
	WRITE DATE TO PAGE
	
	*/
	$("#date").html(getDate());

	/*
	
	SHOW-HIDE TOGGLE
	
	 - show-hide is triggered by the "toggler" class
	 
	 - show-hide content defaults to open
	
	 - show-hide collapsed trigger gets "toggler-closed" class
	 	 
	 */	 
	 
	var toggleSpeed = 300;
	
	$(".show-hide h3").click(function(){
			$(this).toggleClass("toggler-closed").next().slideToggle(toggleSpeed);
		})
	.end();
	
	/*
	
	Event toggle is similar show-hide
	
	*/
	$(".event-toggle h2").click(function(){
			$(this).toggleClass("toggler-closed").next().slideToggle(toggleSpeed);
		})
	.end();
		
	/*
	
	COURSE LISTINGS TOGGLE
	
	*/
	$("#course-listings .toggle").click(function () {   
   
   
		   // toggle the anchor's parent's next neighbor
			$(this).toggleClass("toggle-on").parent().siblings(".course-description").slideToggle(toggleSpeed);
		   
		   // don't skip down the page, since the trigger is an anchor
		   return false;
   
   });	
		
	/*
	
	DIRECTORY TOGGLE
	
	*/
	$("#directory .toggle").click(function () {   
   
   
		   // toggle the anchor's parent's next neighbor
			$(this).toggleClass("toggle-on").parents(".copy").next().slideToggle(toggleSpeed);
		   
		   // don't skip down the page, since the trigger is an anchor
		   return false;
   
   });	
	
	/*
	
	INITIALIZE FIELD VALUE RESET (looks for presence of "alt" attribute in the input tag)
	
	*/
	$("input[alt!='']").focus(function(){
		setValue(this,"onfocus"); 
		return false;
	});
	$("input[alt!='']").blur(function(){
		setValue(this,"onblur"); 
		return false;
	});
	
	
	/*
	
	NOSCRIPT OVERRIDES
	
	*/
	
	// All pages but home, collapse the view all campuses nav		
	if ($("body").attr("class") != "home") {
		$("#logo").removeClass("show-school-links-on");		
	}
	
	// collapse any show-hide content
	$(".show-hide-content").hide();
	
	
	/*
	
	IMAGE FADER
	
	*/
	
	 $('#home-image-fade').innerfade({ speed: 450, timeout: 7500, type: 'sequence', containerheight: '300px' }); 
	

 });
 
 /*
 
 BEGIN PIPES
 
 */
 
 /*
 
 getFeed takes three arguments:
 1) pipe: this is the path path the specific Yahoo pipe which pulls the feed and pushes out JSON
 2) customCallback: this is the function we'll use to process the JSON
 3) feed: ...
 

 */
 
function getFeed(pipe,customCallback,feed) {
	var newScript = document.createElement('script');
	newScript.type = 'text/javascript';
	newScript.src = pipe+'&_render=json&_callback='+customCallback+'&feed='+feed;
	document.getElementsByTagName("head")[0].appendChild(newScript);
} 
function renderWeather(feed) {
	var tmp ='';
//	for (var i=0; i<feed.value.items.length; i++) {
		tmp += feed.value.items[0].title;		
		
//	}
	// write weather to the page
	 document.getElementById('temperature').innerHTML=tmp;
}


function renderEvents(feed) {
	
	// set the for loop limit based on the feed's length
	var limit = feed.value.items.length;  /* THIS IS WORKING */
	
	//alert("TEST: "+feed.value.items[5].link);
	
	// declare a temporary string to hold the events as we loop below
	var tmp = "";
	
	// check for home page
	var isHomePage = $("body").hasClass("home");
	
	// hold current month (init to -1) and as we loop we can compare, if a new month, then output the month as a header
	var curMonth = -1;
	
	// only proceed if limit is greater than 0!	
	if (limit > 0) {
	
		// on home page only display 3 events
		if (isHomePage) {
			limit = 3; /* THIS IS WORKING */
		}	
				
		/* error trapped */
		
		/*
				trouble shooting comments
				does not look like its any of the functions
				
				formatEventDate

				renderAudienceIcon
				
				returnEventDescription
		
		*/
		tmp ='<ul class="events">';
			
		for (var i=0; i<limit; i++) {
			
			// if description exists, format it 
			
			try{
			
					if (feed.value.items[i].description) { /* this filters out the rsvp home page */
					
						// deal with the date
						var eventDateTime = formatEventDate(feed.value.items[i].description);
						var theDate = eventDateTime.split('.')[0];
						var theDay = theDate.split(' ')[1];	
				
						// prepare the day of week and the full month name		
						var d = new Date(theDate);
						var aryMonths = ['January','February','March','April','May','June','July','August','September','October','November','December'];
						var aryDays = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
						var j = d.getDay();
						var m = d.getMonth();
					}
					
					// check curMonth now so we can output new month header if need be (don't output on home page)
					if ((curMonth != m ) && (!isHomePage)) {
						curMonth = m;
						tmp += '</ul><h2 class="month">'+aryMonths[m]+'</h2><ul class="events new-month">';
					}
					
					tmp += '<li class="clearfix">';
					tmp += '<h3>'+feed.value.items[i].title+' '+renderAudienceIcon(feed.value.items[i].description)+'</h3>';
					tmp += '<h4>'+eventDateTime+'</h4>';
					//tmp += returnEventDescription(feed.value.items[i].description, isHomePage);			
					if (!isHomePage) {
						tmp += returnEventDescription(feed.value.items[i].description);		
					}
					tmp += '<p><a href="'+feed.value.items[i].link+'" class="attend" target="_blank">Attend this event &raquo;</a></p>';
					tmp +=  '<p class="cal">';
					tmp += 	'<span class="day">'+aryDays[j]+'</span>';
					tmp += 	'<span class="date">'+theDay+'</span>';
					tmp += '</p>';
					tmp += '</li>';
			}
			catch(err){				

				tmp += '<li>'+feed.value.items[i].title +'<br/>';			
				tmp += '<a href="'+  feed.value.items[i].link +'">'+feed.value.items[i].link + '</a><br/>';
				tmp += feed.value.items[i].description + '</li>';
			
			}
	
		}
		
		tmp += '</ul>';
		
		/* error trapped */
		
		
		 
	} else {
		
		// write a message saying there are no events at this time!
		tmp = '<a href="http://macaulay.cuny.edu/rsvp/">View all events</a>.';
		
	}
		
		
		
	// write events to the page
	 document.getElementById('events').innerHTML= tmp;
}


function renderEventsORIGINAL(feed) {
	
	// set the for loop limit based on the feed's length
	var limit = feed.value.items.length;  /* THIS IS WORKING */
	
	//alert("TEST: "+feed.value.items[5].link);
	
	// declare a temporary string to hold the events as we loop below
	var tmp = "";
	
	// check for home page
	var isHomePage = $("body").hasClass("home");
	
	// hold current month (init to -1) and as we loop we can compare, if a new month, then output the month as a header
	var curMonth = -1;
	
	// only proceed if limit is greater than 0!	
	if (limit > 0) {
	
		// on home page only display 3 events
		if (isHomePage) {
			limit = 3; /* THIS IS WORKING */
		}	
				
		/* error trapped */
		
		/*
				trouble shooting comments
				does not look like its any of the functions
				
				formatEventDate

				renderAudienceIcon
				
				returnEventDescription
		
		*/
		tmp ='<ul class="events">';
			
		for (var i=0; i<limit; i++) {
			
			// if description exists, format it
			if (feed.value.items[i].description) {
			
				// deal with the date
				var eventDateTime = formatEventDate(feed.value.items[i].description);
				var theDate = eventDateTime.split('.')[0];
				var theDay = theDate.split(' ')[1];	
		
				// prepare the day of week and the full month name		
				var d = new Date(theDate);
				var aryMonths = ['January','February','March','April','May','June','July','August','September','October','November','December'];
				var aryDays = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
				var j = d.getDay();
				var m = d.getMonth();
			}
			
			// check curMonth now so we can output new month header if need be (don't output on home page)
			if ((curMonth != m ) && (!isHomePage)) {
				curMonth = m;
				tmp += '</ul><h2 class="month">'+aryMonths[m]+'</h2><ul class="events new-month">';
			}
			
			tmp += '<li class="clearfix">';
			tmp += '<h3>'+feed.value.items[i].title+' '+renderAudienceIcon(feed.value.items[i].description)+'</h3>';
			tmp += '<h4>'+eventDateTime+'</h4>';
			//tmp += returnEventDescription(feed.value.items[i].description, isHomePage);			
			if (!isHomePage) {
				tmp += returnEventDescription(feed.value.items[i].description);		
			}
			tmp += '<p><a href="'+feed.value.items[i].link+'" class="attend" target="_blank">Attend this event &raquo;</a></p>';
			tmp +=  '<p class="cal">';
			tmp += 	'<span class="day">'+aryDays[i]+'</span>';
			tmp += 	'<span class="date">'+theDay+'</span>';
			tmp += '</p>';
			tmp += '</li>';
			
			//tmp += '<li>'+feed.value.items[i].description + '</li>';
	
		}
		
		tmp += '</ul>';
		
		/* error trapped */
		
		
		 
	} else {
		
		// write a message saying there are no events at this time!
		tmp = '<a href="http://macaulay.cuny.edu/rsvp/">View all events</a>.';
		
	}
		
	// write events to the page
	 document.getElementById('events').innerHTML=tmp;
}


function formatEventDate(pStr) {
	
	// grab the start date div
	var aryDescription = pStr.split('</div></div>');
	var date = aryDescription[0];
	var endTime = aryDescription[1].split(' - ')[1];
	
	// start and end time/date are help within the LABEL tag
	date = date.substring((date.indexOf("</label>")+8), date.length);
	
	// replace the dash between date and time with a period
	date = date.replace(' - ','. ');
	
	// grab the end time
	date += ' &ndash; '+endTime;
	
	return date;
}

// Description text appears within P tags, so return the paragraphs...
function returnEventDescription(pStr) {
	var descriptionStart = pStr.indexOf("<p>");
	var descriptionEnd = (pStr.lastIndexOf("</p>") + 4);
	var description = pStr.substring(descriptionStart,descriptionEnd);
	//return description;
	
	return pStr;
}


// Sometimes an event will specify the intended audience, return icon image tag if present
function renderAudienceIcon(pStr) {
	var audienceIcon = "";
	if (pStr.indexOf("Audience") > 0) {	
		var alt =  pStr.substring((pStr.lastIndexOf('">')+2),pStr.indexOf('</div></div></div>'));		
		var imageName = alt.substring(0,alt.indexOf(" ")).toLowerCase()
		audienceIcon = '<span class="'+imageName+'">&nbsp;</span>';
	}
	
	return audienceIcon;
}
 /*
 
 END PIPES
 
 */
 
 /* 
 
 BEGIN SETVALUE
 
 setValue clear's a text input's value and resets it to the input's alt attribute if the user doesn't enter a value 
 
 */
 
function setValue(pEl,pSwitch) {	
	if (pSwitch == "onfocus") {
		if (pEl.value == pEl.alt) {
			pEl.value = "";	
		}
	}
	if (pSwitch == "onblur") {
		if (pEl.value == "") {
			pEl.value = pEl.alt;
		}
	}
}

/*

END SETVALUE

*/
 
 
/*
 
BEGIN DATE FUNCTIONS
 
*/
 
function getDate() {
	var today = new Date();
	var Year = takeYear(today);
	var Month = leadingZero(today.getMonth()+1);
	//var DayName = Days[today.getDay()];
	var Day = leadingZero(today.getDate());	
	var Months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");	
	var Month = Months[today.getMonth()];	
	var retVal = ""	
	//retVal = Month + " " + Day + ", " + Year;	
	retVal = Year;
	return retVal;		
}  
function leadingZero(nr) {
	if (nr < 10) nr = "0" + nr;
	return nr;
}
function takeYear(theDate) {
	x = theDate.getYear();
	var y = x % 100;
	y += (y < 38) ? 2000 : 1900;
	return y;
}

/*

END DATE FUNCTIONS
 
*/
 
 
 
 
 /* Copyright (c) 2006 Mathias Bank (http://www.mathias-bank.de)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 * 
 * Thanks to Hinnerk Ruemenapf - http://hinnerk.ruemenapf.de/ for bug reporting and fixing.
 */
jQuery.extend({
/**
* Returns get parameters.
*
* If the desired param does not exist, null will be returned
*
* @example value = $.getURLParam("paramName");
*/ 
 getURLParam: function(strParamName){
	  var strReturn = "";
	  var strHref = window.location.href;
	  var bFound=false;
	  
	  var cmpstring = strParamName + "=";
	  var cmplen = cmpstring.length;

	  if ( strHref.indexOf("?") > -1 ){
	    var strQueryString = strHref.substr(strHref.indexOf("?")+1);
	    var aQueryString = strQueryString.split("&");
	    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
	      if (aQueryString[iParam].substr(0,cmplen)==cmpstring){
	        var aParam = aQueryString[iParam].split("=");
	        strReturn = aParam[1];
	        bFound=true;
	        break;
	      }
	      
	    }
	  }
	  if (bFound==false) return null;
	  return strReturn;
	}
});

/* 

Method based function shell

myFunction = {

	// myFunction scope variable
	myVar: "string",
	
	// myFunction scope array
	myAry: [],
	
	method1: function(){
	
	},
	metho2: function(){
		
		
	}
}

*/


/* 
Begin Random Fact Script
*/

//fact array
	factList = new Array();
	
	factList[0] = "30% of Macaulay's class of 2012 are first generation college students, and over 60% are immigrants or children of immigrants.";
	factList[1] = "Macaulay reflects the diversity of New York City.  Our students come from 25 different countries and speak more than 35 languages.";
	factList[2] = "Ninety-five percent of the Class of 2008 plan to continue their education beyond a bachelor's degree: 35% plan to pursue a master's degree, 25% a doctoral degree, and 35% a professional degree such as medicine or law.";
	factList[3] = "Macaulay students' top ten majors are : Psychology, Biology, Chemistry, Mathematics, Finance/Business, Political Science, Economics, Accountancy, English/Literature/Writing, and History.";
	factList[4] = "After graduation, Macaulay students have been hired by firms and organizations including : American Museum of Natural History, Apple Computer, Memorial Sloan Kettering Cancer Center, New York City Teaching Fellows, Standard & Poor's and The New York Times.";
	factList[5] = "Macaulay graduates have been accepted to top medical schools including : Albert Einstein College of Medicine, Drexel School of Medicine, Jefferson Medical College, Mount Sinai School of Medicine, SUNY Downstate Medical Center and University of Rochester School of Medicine and Dentistry.";
	factList[6] = "Macaulay graduates have been accepted to top law schools including : Cornell, Duke, Harvard, New York University, St. John's, Vanderbilt and Yale.";
	factList[7] = "Macaulay students have been selected for Rhodes, Truman, Fullbright, and Ford Foundation scholarships and fellowships.";
	factList[8] = "The Macaulay building, built in 1904, is a Gothic revival structure, fully renovated for academic use.";
	factList[9] = "Macaulay faculty are drawn from the best of the scholars and teachers of the City University of New York.";
	factList[10] = "The Macaulay class of 2009 performed over 18,000 hours of community service during their four years.";
	factList[11] = "Macaulay students studying abroad traveled enough miles to circle the globe 52 times.";
	factList[12] = "The Macaulay class of 2009 performed over 18,000 hours of community service during their four years.";
	factList[13] = "Macaulay students participate in over 30 different intercollegiate and intramural sports, plus a wide range of student activities both on their campuses and in the Macaulay community.";
	
	//randomization
	var now = new Date();
	var secs = now.getSeconds();
	var raw_random_number = Math.random(secs);
	var random_number = Math.round(raw_random_number * (factList.length));

	if (random_number == factList.length){random_number = 0}
	
	
	//set fact
	var fact = factList[random_number];
	
/* 
End Random Fact Script
*/

/*
Begin Thickbox Script
*/

/*
 * Thickbox 3.1 - One Box To Rule Them All.
 * By Cody Lindley (http://www.codylindley.com)
 * Copyright (c) 2007 cody lindley
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
*/
		  
var tb_pathToImage = "loadingAnimation.gif";

/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/

//on page load call tb_init
$(document).ready(function(){   
	tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
	imgLoader = new Image();// preload image
	imgLoader.src = tb_pathToImage;
});

//add thickbox to href & area elements that have a class of .thickbox
function tb_init(domChunk){
	$(domChunk).click(function(){
	var t = this.title || this.name || null;
	var a = this.href || this.alt;
	var g = this.rel || false;
	tb_show(t,a,g);
	this.blur();
	return false;
	});
}

function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link

	try {
		if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
			$("body","html").css({height: "100%", width: "100%"});
			$("html").css("overflow","hidden");
			if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
				$("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
				$("#TB_overlay").click(tb_remove);
			}
		}else{//all others
			if(document.getElementById("TB_overlay") === null){
				$("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
				$("#TB_overlay").click(tb_remove);
			}
		}
		
		if(tb_detectMacXFF()){
			$("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
		}else{
			$("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
		}
		
		if(caption===null){caption="";}
		$("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
		$('#TB_load').show();//show loader
		
		var baseURL;
	   if(url.indexOf("?")!==-1){ //ff there is a query string involved
			baseURL = url.substr(0, url.indexOf("?"));
	   }else{ 
	   		baseURL = url;
	   }
	   
	   var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
	   var urlType = baseURL.toLowerCase().match(urlString);

		if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images
				
			TB_PrevCaption = "";
			TB_PrevURL = "";
			TB_PrevHTML = "";
			TB_NextCaption = "";
			TB_NextURL = "";
			TB_NextHTML = "";
			TB_imageCount = "";
			TB_FoundURL = false;
			if(imageGroup){
				TB_TempArray = $("a[@rel="+imageGroup+"]").get();
				for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {
					var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
						if (!(TB_TempArray[TB_Counter].href == url)) {						
							if (TB_FoundURL) {
								TB_NextCaption = TB_TempArray[TB_Counter].title;
								TB_NextURL = TB_TempArray[TB_Counter].href;
								TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";
							} else {
								TB_PrevCaption = TB_TempArray[TB_Counter].title;
								TB_PrevURL = TB_TempArray[TB_Counter].href;
								TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";
							}
						} else {
							TB_FoundURL = true;
							TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);											
						}
				}
			}

			imgPreloader = new Image();
			imgPreloader.onload = function(){		
			imgPreloader.onload = null;
				
			// Resizing large images - orginal by Christian Montoya edited by me.
			var pagesize = tb_getPageSize();
			var x = pagesize[0] - 150;
			var y = pagesize[1] - 150;
			var imageWidth = imgPreloader.width;
			var imageHeight = imgPreloader.height;
			if (imageWidth > x) {
				imageHeight = imageHeight * (x / imageWidth); 
				imageWidth = x; 
				if (imageHeight > y) { 
					imageWidth = imageWidth * (y / imageHeight); 
					imageHeight = y; 
				}
			} else if (imageHeight > y) { 
				imageWidth = imageWidth * (y / imageHeight); 
				imageHeight = y; 
				if (imageWidth > x) { 
					imageHeight = imageHeight * (x / imageWidth); 
					imageWidth = x;
				}
			}
			// End Resizing
			
			TB_WIDTH = imageWidth + 30;
			TB_HEIGHT = imageHeight + 60;
			$("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div>"); 		
			
			$("#TB_closeWindowButton").click(tb_remove);
			
			if (!(TB_PrevHTML === "")) {
				function goPrev(){
					if($(document).unbind("click",goPrev)){$(document).unbind("click",goPrev);}
					$("#TB_window").remove();
					$("body").append("<div id='TB_window'></div>");
					tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);
					return false;	
				}
				$("#TB_prev").click(goPrev);
			}
			
			if (!(TB_NextHTML === "")) {		
				function goNext(){
					$("#TB_window").remove();
					$("body").append("<div id='TB_window'></div>");
					tb_show(TB_NextCaption, TB_NextURL, imageGroup);				
					return false;	
				}
				$("#TB_next").click(goNext);
				
			}

			document.onkeydown = function(e){ 	
				if (e == null) { // ie
					keycode = event.keyCode;
				} else { // mozilla
					keycode = e.which;
				}
				if(keycode == 27){ // close
					tb_remove();
				} else if(keycode == 190){ // display previous image
					if(!(TB_NextHTML == "")){
						document.onkeydown = "";
						goNext();
					}
				} else if(keycode == 188){ // display next image
					if(!(TB_PrevHTML == "")){
						document.onkeydown = "";
						goPrev();
					}
				}	
			};
			
			tb_position();
			$("#TB_load").remove();
			$("#TB_ImageOff").click(tb_remove);
			$("#TB_window").css({display:"block"}); //for safari using css instead of show
			};
			
			imgPreloader.src = url;
		}else{//code to show html
			
			var queryString = url.replace(/^[^\?]+\??/,'');
			var params = tb_parseQuery( queryString );

			TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
			TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
			ajaxContentW = TB_WIDTH - 30;
			ajaxContentH = TB_HEIGHT - 45;
			
			if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window		
					urlNoQuery = url.split('TB_');
					$("#TB_iframeContent").remove();
					if(params['modal'] != "true"){//iframe no modal
						$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
					}else{//iframe modal
					$("#TB_overlay").unbind();
						$("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
					}
			}else{// not an iframe, ajax
					if($("#TB_window").css("display") != "block"){
						if(params['modal'] != "true"){//ajax no modal
						$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a> or Esc Key</div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
						}else{//ajax modal
						$("#TB_overlay").unbind();
						$("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");	
						}
					}else{//this means the window is already up, we are just loading new content via ajax
						$("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
						$("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
						$("#TB_ajaxContent")[0].scrollTop = 0;
						$("#TB_ajaxWindowTitle").html(caption);
					}
			}
					
			$("#TB_closeWindowButton").click(tb_remove);
			
				if(url.indexOf('TB_inline') != -1){	
					$("#TB_ajaxContent").append($('#' + params['inlineId']).children());
					$("#TB_window").unload(function () {
						$('#' + params['inlineId']).append( $("#TB_ajaxContent").children() ); // move elements back when you're finished
					});
					tb_position();
					$("#TB_load").remove();
					$("#TB_window").css({display:"block"}); 
				}else if(url.indexOf('TB_iframe') != -1){
					tb_position();
					if($.browser.safari){//safari needs help because it will not fire iframe onload
						$("#TB_load").remove();
						$("#TB_window").css({display:"block"});
					}
				}else{
					$("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
						tb_position();
						$("#TB_load").remove();
						tb_init("#TB_ajaxContent a.thickbox");
						$("#TB_window").css({display:"block"});
					});
				}
			
		}

		if(!params['modal']){
			document.onkeyup = function(e){ 	
				if (e == null) { // ie
					keycode = event.keyCode;
				} else { // mozilla
					keycode = e.which;
				}
				if(keycode == 27){ // close
					tb_remove();
				}	
			};
		}
		
	} catch(e) {
		//nothing here
	}
}

//helper functions below
function tb_showIframe(){
	$("#TB_load").remove();
	$("#TB_window").css({display:"block"});
}

function tb_remove() {
 	$("#TB_imageOff").unbind("click");
	$("#TB_closeWindowButton").unbind("click");
	$("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
	$("#TB_load").remove();
	if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
		$("body","html").css({height: "auto", width: "auto"});
		$("html").css("overflow","");
	}
	document.onkeydown = "";
	document.onkeyup = "";
	return false;
}

function tb_position() {
$("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
	if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
		$("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
	}
}

function tb_parseQuery ( query ) {
   var Params = {};
   if ( ! query ) {return Params;}// return empty object
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}

function tb_getPageSize(){
	var de = document.documentElement;
	var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
	var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
	arrayPageSize = [w,h];
	return arrayPageSize;
}

function tb_detectMacXFF() {
  var userAgent = navigator.userAgent.toLowerCase();
  if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
    return true;
  }
}


/* End Thickbox Script
*/
