// MacService Code Follows
Array.prototype.in_array = function(p_val) {
	for (var i = 0, l = this.length; i < l; i++) {
		if (this[i] == p_val) {
			return true;
		}
	}
	return false;
}
var http_request = false;
function makeAjaxRequest(url, parameters, method) {
	http_request = false;
	if (window.XMLHttpRequest) {
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) {
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert('ERROR: Can\'t create AJAX XMLHTTP instance.');
		return false;
	}
	http_request.onreadystatechange = ajaxResult;
	switch (method) {
		case 'GET':
			http_request.open('GET', url + '?' + parameters, true);
			http_request.send(null);
		break;
		case 'POST':
			http_request.open('POST', url, true);
			http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			http_request.setRequestHeader("Content-length", parameters.length);
			http_request.setRequestHeader("Connection", "close");
			http_request.send(parameters);
	}
}
function ajaxResult() {
	if (http_request.readyState == 4) {
		switch (http_request.status) {
			case 200:
				var response = http_request.responseText;
				if (response.indexOf('FAIL') > 0) {
					alert('ERROR: Check your input and try again.');
				} else {
					document.getElementById('ajaxResults').innerHTML = response;
				}
			break;
			default:
				alert('Error with AJAX request.');
		}
	}
}
var testimonial = 0;
Effect.Testimonials2 = function() {
	return new Effect.Fade('testimonial' + testimonial, {
		duration: 0.5, afterFinishInternal: function(effect) {
			testimonial++;
			if (testimonial == 10) {
				testimonial = 0;
			}
			new Effect.Appear('testimonial' + testimonial, { duration: 0.5 });
			setTimeout("runTestimonials(false);", 6000);
		}
	});
}
function runTestimonials(start) {
	if (start) {
		document.getElementById('testimonial0').style.display = 'block';
		setTimeout("runTestimonials(false);", 6000);
	} else {
		new Effect.Testimonials2();
	}
}
function stopRKey(evt) {
	var evt = (evt) ? evt : ((event) ? event : null);
	var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	var types = new Array('text', 'password');
	if ((evt.keyCode == 13) && (types.in_array(node.type))) {
		return false;
	}
}
function accordion(numTotal, openMe, type) {
	for (var i = 1; i <= numTotal; i++) {
		if ('Accordion' + i == openMe) {
			continue;
		}
		if (document.getElementById('Accordion' + i)) {
			if (document.getElementById('Accordion' + i).style.display != 'none') {
				switch (type) {
					case 'none':
						document.getElementById('Accordion' + i).style.display = 'none';
					break;
					case 'appear':
						Effect.Fade('Accordion' + i);
					break;
					case 'blind':
						Effect.BlindUp('Accordion' + i, { duration: 0.3 });
					break;
				}
				if (document.getElementById('AccordionLink' + i)) {
					document.getElementById('AccordionLink' + i).className = '';
				}
			}
		}
	}
	switch (type) {
		case 'none':
			document.getElementById(openMe).style.display = 'block';
		break;
		case 'appear':
			Effect.Appear(openMe);
		break;
		case 'blind':
			Effect.BlindDown(openMe, { duration: 0.3 });
		break;
	}
}
function lazy_load(src) {
	var head = document.getElementsByTagName('head')[0];
	var script = document.createElement('script');
	script.type = 'text/javascript';
	script.onreadystatechange = function () {
	   if (this.readyState == 'complete') chatServiceCallback();
	}
	script.onload = chatServiceCallback;
	script.src = src;
	head.appendChild(script);
}
function chatService() {
	lazy_load('https://www.macservice.com:9091/webchat/jivelive.jsp');
}
function chatServiceCallback() {
	var d = new Date();
	var v1 = d.getSeconds() + '' + d.getDay();
	var workgroup = 'cs@workgroup.macservice.com';
	var img = 'https://www.macservice.com:9091/webchat/live?action=isAvailable&workgroup=' + workgroup;
	var gotoURL = 'https://www.macservice.com:9091/webchat/start.jsp?workgroup='
		+ workgroup + '&location=' + window.location.href;
	document.getElementById('chatDiv').innerHTML =
		'<a href="#" onclick="launchWin(\'framemain\',\'' + gotoURL + '\',500, 400);return false;">'
		+ '<img border="0" src="' + img + '"></a>';
}
function formatPhone(fieldName) {
	var theField = document.getElementById(fieldName);
	if (theField) {
		var reRemoveNonNumeric = /[^0-9]/g;
		var orig = theField.value;
		var numbers = orig.replace(reRemoveNonNumeric, '');
		var newNum = '';
		if (numbers.length > 3) {
			newNum += '(' + numbers.substr(0, 3) + ') ';
		}
		if (numbers.length > 6) {
			newNum += numbers.substr(3, 3) + '-';
		} else {
			newNum += numbers.substr(3, numbers.length);
		}
		if (numbers.length > 9) {
			newNum +=  numbers.substr(6, 4);
		} else {
			newNum += numbers.substr(6, numbers.length);
		}
		if (numbers.length > 10) {
			newNum += ' x' + numbers.substr(10, numbers.length);
		}
		if (newNum != '') {
			theField.value = newNum;
		}
	}
}
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
    }
  }
}
function echeck(str) {
	var at = '@';
	var dot = '.';
	var lat = str.indexOf(at);
	var lstr = str.length;
	var ldot = str.indexOf(dot);
	if (str.indexOf(at) == -1) {
		return false
	}
	if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) {
		return false
	}
	if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) {
		return false
	}
	if (str.indexOf(at, (lat + 1)) != -1) {
		return false
	}
	if (str.substring(lat - 1, lat) == dot || str.substring(lat + 1,lat + 2) == dot) {
		return false
	}
	if (str.indexOf(dot, (lat + 2)) == -1) {
		return false
	}
	if (str.indexOf(" ") != -1) {
		return false
	}
	return true					
}
function isValidCreditCard(ccnum) {
	var re1 = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
	var re2 = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
	var re3 = /^6011-?\d{4}-?\d{4}-?\d{4}$/;
	var re4 = /^3[4,7]\d{13}$/;
	var re5 = /^3[0,6,8]\d{12}$/;
	if (re1.test(ccnum) || re2.test(ccnum) || re4.test(ccnum)) {
		return true;
	}
	ccnum = ccnum.split("-").join("");
	var checksum = 0;
	for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) {
		checksum += parseInt(ccnum.charAt(i-1));
	}
	for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) {
		var digit = parseInt(ccnum.charAt(i-1)) * 2;
		if (digit < 10) { checksum += digit; } else { checksum += (digit-9); }
	}
	if ((checksum % 10) == 0) {
		return true;
	}
	return false;
}
function trim(str) {
	return str.replace(/^\s+|\s+$/, '');
}
function validate_field(value, field) {
	if (value == '') {
		return false;
	}
	switch (field) {
		case 'cEmail':
			if (!echeck(value)) {
				document.getElementById('cEmailFormat').style.display = 'block';
				return false;
			}
		break;
		case 'ccNum':
			if (value.substr(4, 3) != 'xxx'  && !isValidCreditCard(value)) {
				document.getElementById('ccNumFormat').style.display = 'block';
				return false;
			}
		break;
		case 'cPhone':
			formatPhone('cPhone');
			value = document.order.cPhone.value;
			if (value.length < 14) {
				document.getElementById('cPhoneFormat').style.display = 'block';
				return false;
			}
	}
	return true;
}
function getCheckedValue(radioObj) {
	if (!radioObj)
		return '';
	var radioLength = radioObj.length;
	if (radioLength == undefined)
		if (radioObj.checked)
			return radioObj.value;
		else
			return '';
	for (var i = 0; i < radioLength; i++) {
		if (radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return '';
}
function setCheckedValue(radioObj, newValue) {
	if (!radioObj)
		return;
	var radioLength = radioObj.length;
	if (radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if (radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}
function addOption(selectbox,text,value) {
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
}
function lightbox(img, w, h) {
	var cellpadd = 5;
	var width = w + (cellpadd * 2);
	var height = h + 35 + (cellpadd * 4);
	var fade = document.getElementById('fade');
	var light = document.getElementById('light');
	light.style.display = 'block';
	fade.style.display = 'block';
	fade.innerHTML = '<a href="javascript:lightbox_close();">'
		+ '<img border="0" src="images/spacer.gif" width="100%" height="100%"></a>';
	light.innerHTML = '<table cellpadding="' + cellpadd + '" cellspacing="0" width="100%" height="100%">'
		+ '<tr><td bgcolor="#FFFFFF" height="*" align="center"><img src="' + img + '"></td></tr>'
		+ '<tr><td align="right" bgcolor="#224272" height="35">'
		+ '<a href="javascript:lightbox_close();">'
		+ '<img border="0" src="images/closelabel.gif" width="75" height="35"></a></td></tr></table>';
	light.style.width = width;
	light.style.height = height;
	light.style.left = ((document.body.clientWidth - width) / 2) + 'px';
	light.style.top = ((document.body.clientHeight - height) / 2) + 'px';
}
function lightbox_close() {
	document.getElementById('light').style.display = 'none';
	document.getElementById('fade').style.display = 'none';
}

// Lightbox++ v1.0.1 Code Follows
var fileLoadingImage = "images/loading.gif";
var fileBottomNavCloseImage = "images/closelabel.gif";
var fallbackOverlayImage = "images/overlay.png";
var overlayOpacity = 0.8;
var animate = true;
var resizeSpeed = 7;
var borderSize = 10;
var elementArray = new Array;
var activeElement;
var userAgent = navigator.userAgent.toLowerCase();
if (animate == true){
	overlayDuration = 0.2;	
	if(resizeSpeed > 10){ resizeSpeed = 10;}
	if(resizeSpeed < 1){ resizeSpeed = 1;}
	resizeDuration = (11 - resizeSpeed) * 0.15;
} else { 
	overlayDuration = 0;
	resizeDuration = 0;
}
Object.extend(Element, {
	getWidth: function(element) {
	   	element = $(element);
	   	return element.offsetWidth; 
	},
	setWidth: function(element,w) {
	   	element = $(element);
    	element.style.width = w +"px";
	},
	setHeight: function(element,h) {
   		element = $(element);
    	element.style.height = h +"px";
	},
	setTop: function(element,t) {
	   	element = $(element);
    	element.style.top = t +"px";
	},
	setLeft: function(element,l) {
	   	element = $(element);
    	element.style.left = l +"px";
	},
	setSrc: function(element,src) {
    	element = $(element);
    	element.src = src; 
	},
	setHref: function(element,href) {
    	element = $(element);
    	element.href = href; 
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	}
});
Array.prototype.removeDuplicates = function () {
    for(i = 0; i < this.length; i++){
        for(j = this.length-1; j>i; j--){        
            if(this[i][0] == this[j][0]){
                this.splice(j,1);
            }
        }
    }
}
Array.prototype.empty = function () {
	for(i = 0; i <= this.length; i++){
		this.shift();
	}
}
var Lightbox = Class.create();
Lightbox.prototype = {
	initialize: function() {	
		this.updateElementList();
		var objBody = document.getElementsByTagName("body").item(0);
		var objOverlay = document.createElement("div");
		objOverlay.setAttribute('id','overlay');
		if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1 || userAgent.indexOf('camino')!=-1) {
			objOverlay.style.backgroundImage = 'url('+fallbackOverlayImage+')';
			objOverlay.style.backgroundRepeat = 'repeat';
		} else {
			objOverlay.style.backgroundColor = '#000000';
		}
		objOverlay.style.display = 'none';
		objOverlay.onclick = function() { myLightbox.end(); }
		objBody.appendChild(objOverlay);
		
		var objLightbox = document.createElement("div");
		objLightbox.setAttribute('id','lightbox');
		objLightbox.style.display = 'none';
		objLightbox.onclick = function(e) {
			if (!e) var e = window.event;
			var clickObj = Event.element(e).id;
			if ( clickObj == 'lightbox') {
				myLightbox.end();
			}
		};
		objBody.appendChild(objLightbox);
		var objOuterImageContainer = document.createElement("div");
		objOuterImageContainer.setAttribute('id','outerImageContainer');
		objLightbox.appendChild(objOuterImageContainer);
		if (animate){
			Element.setWidth('outerImageContainer', 250);
			Element.setHeight('outerImageContainer', 250);			
		} else {
			Element.setWidth('outerImageContainer', 1);
			Element.setHeight('outerImageContainer', 1);			
		}
		var objImageContainer = document.createElement("div");
		objImageContainer.setAttribute('id','imageContainer');
		objOuterImageContainer.appendChild(objImageContainer);
		var objContent = document.createElement("div");
		objContent.setAttribute('id','lightboxcontent');
		objImageContainer.appendChild(objContent);
		var objLightboxImage = document.createElement("img");
		objLightboxImage.setAttribute('id','lightboximage');
		objLightboxImage.style.display = 'none';
		objContent.appendChild(objLightboxImage);
		objLightboxSwf = document.createElement("div");
		objLightboxSwf.setAttribute('id','lightboxswf');
		objLightboxSwf.style.position = 'relative';
		objLightboxSwf.style.zIndex = 101;
		objLightboxSwf.style.display = 'none';
		objContent.appendChild(objLightboxSwf);
		var objHoverNav = document.createElement("div");
		objHoverNav.setAttribute('id','hoverNav');
		objImageContainer.appendChild(objHoverNav);
		var objPrevLink = document.createElement("a");
		objPrevLink.setAttribute('id','prevLink');
		objPrevLink.setAttribute('href','#');
		objHoverNav.appendChild(objPrevLink);
		var objNextLink = document.createElement("a");
		objNextLink.setAttribute('id','nextLink');
		objNextLink.setAttribute('href','#');
		objHoverNav.appendChild(objNextLink);
		var objLoading = document.createElement("div");
		objLoading.setAttribute('id','loading');
		objImageContainer.appendChild(objLoading);
		var objLoadingLink = document.createElement("a");
		objLoadingLink.setAttribute('id','loadingLink');
		objLoadingLink.setAttribute('href','#');
		objLoadingLink.onclick = function() { myLightbox.end(); return false; }
		objLoading.appendChild(objLoadingLink);
		var objLoadingImage = document.createElement("img");
		objLoadingImage.setAttribute('src', fileLoadingImage);
		objLoadingLink.appendChild(objLoadingImage);
		var objImageDataContainer = document.createElement("div");
		objImageDataContainer.setAttribute('id','imageDataContainer');
		objLightbox.appendChild(objImageDataContainer);
		var objImageData = document.createElement("div");
		objImageData.setAttribute('id','imageData');
		objImageDataContainer.appendChild(objImageData);
		var objImageDetails = document.createElement("div");
		objImageDetails.setAttribute('id','imageDetails');
		objImageData.appendChild(objImageDetails);
		var objCaption = document.createElement("span");
		objCaption.setAttribute('id','caption');
		objImageDetails.appendChild(objCaption);
		var objNumberDisplay = document.createElement("span");
		objNumberDisplay.setAttribute('id','numberDisplay');
		objImageDetails.appendChild(objNumberDisplay);
		var objBottomNav = document.createElement("div");
		objBottomNav.setAttribute('id','bottomNav');
		objImageData.appendChild(objBottomNav);
		var objBottomNavCloseLink = document.createElement("a");
		objBottomNavCloseLink.setAttribute('id','bottomNavClose');
		objBottomNavCloseLink.setAttribute('href','#');
		objBottomNavCloseLink.onclick = function() { myLightbox.end(); return false; }
		objBottomNav.appendChild(objBottomNavCloseLink);
		var objBottomNavCloseImage = document.createElement("img");
		objBottomNavCloseImage.setAttribute('src', fileBottomNavCloseImage);
		objBottomNavCloseLink.appendChild(objBottomNavCloseImage);
	},
	updateElementList: function() {	
		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName('a');
		var areas = document.getElementsByTagName('area');
		for (var i=0; i<anchors.length; i++){
			var anchor = anchors[i];
			var relAttribute = String(anchor.getAttribute('rel'));
			if (anchor.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
				anchor.onclick = function () {myLightbox.start(this); return false;}
			}
		}
		for (var i=0; i< areas.length; i++){
			var area = areas[i];
			var relAttribute = String(area.getAttribute('rel'));
			if (area.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
				area.onclick = function () {myLightbox.start(this); return false;}
			}
		}
	},
	start: function(elementLink) {	
		hideSelectBoxes();		
		hideFlash();
		var arrayPageSize = getPageSize();
		Element.setWidth('overlay', arrayPageSize[0]);
		Element.setHeight('overlay', arrayPageSize[1]);
		if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1 || userAgent.indexOf('camino')!=-1) {
			Element.show('overlay');
		} else {
			new Effect.Appear('overlay', { duration: overlayDuration, from: 0.0, to: overlayOpacity });
		}
		elementArray = [];
		elementNum = 0;		
		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName(elementLink.tagName);
		if ((elementLink.getAttribute('rel') == 'lightbox')){
			if (elementLink.getAttribute('href').endsWith('swf')) {
				elementArray.push(new Array(elementLink.getAttribute('href'), elementLink.getAttribute('title'), elementLink.getAttribute('width'), elementLink.getAttribute('height')));
			} else {
				elementArray.push(new Array(elementLink.getAttribute('href'), elementLink.getAttribute('title')));
			}				
		} else {
			for (var i=0; i<anchors.length; i++){
				var anchor = anchors[i];
				if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == elementLink.getAttribute('rel'))){
					if(anchor.getAttribute('href').endsWith('swf')) {
						elementArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title'), anchor.getAttribute('width'), anchor.getAttribute('height')));
					} else {
						elementArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
					}
				}
			}
			elementArray.removeDuplicates();
			while(elementArray[elementNum][0] != elementLink.getAttribute('href')) { elementNum++;}
		}
		var arrayPageScroll = getPageScroll();
		var lightboxTop = arrayPageScroll[1] + (arrayPageSize[3] / 10);
		var lightboxLeft = arrayPageScroll[0];
		Element.setTop('lightbox', lightboxTop);
		Element.setLeft('lightbox', lightboxLeft);
		Element.show('lightbox');
		this.changeElement(elementNum);
	},
	changeElement: function(elementNum) {	
		activeElement = elementNum;
		if(animate){ Element.show('loading');}
		Element.hide('lightboximage');
		Element.hide('lightboxswf');
		Element.hide('hoverNav');
		Element.hide('prevLink');
		Element.hide('nextLink');
		Element.hide('imageDataContainer');
		Element.hide('numberDisplay');		
		if (elementArray[activeElement][0].endsWith('swf')){
			myLightbox.resizeElementContainer(parseInt(elementArray[activeElement][2]), parseInt(elementArray[activeElement][3]))
		} else {
			imgPreloader = new Image();
			imgPreloader.onload=function(){
				Element.setSrc('lightboximage', elementArray[activeElement][0]);
				myLightbox.resizeElementContainer(imgPreloader.width, imgPreloader.height);
				imgPreloader.onload=function(){};
			}
			imgPreloader.src = elementArray[activeElement][0];
		}
	},
	resizeElementContainer: function(elementWidth, elementHeight) {
		this.widthCurrent = Element.getWidth('outerImageContainer');
		this.heightCurrent = Element.getHeight('outerImageContainer');
		var widthNew = (elementWidth  + (borderSize * 2));
		var heightNew = (elementHeight  + (borderSize * 2));
		this.xScale = ( widthNew / this.widthCurrent) * 100;
		this.yScale = ( heightNew / this.heightCurrent) * 100;
		wDiff = this.widthCurrent - widthNew;
		hDiff = this.heightCurrent - heightNew;
		if(!( hDiff == 0)){ new Effect.Scale('outerImageContainer', this.yScale, {scaleX: false, duration: resizeDuration, queue: 'front'}); }
		if(!( wDiff == 0)){ new Effect.Scale('outerImageContainer', this.xScale, {scaleY: false, delay: resizeDuration, duration: resizeDuration}); }
		if((hDiff == 0) && (wDiff == 0)){
			if (navigator.appVersion.indexOf("MSIE")!=-1){ pause(250); } else { pause(100);} 
		}
		Element.setHeight('prevLink', elementHeight);
		Element.setHeight('nextLink', elementHeight);
		Element.setWidth('imageDataContainer', widthNew);
		this.showElement();
	},
	showElement: function(){
		Element.hide('loading');
		if (elementArray[activeElement][0].endsWith('swf')) {
			$('lightboximage').style.display = 'none';
			var obj = $('lightboxswf');
			obj.innerHTML = "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0\" width=\""+elementArray[activeElement][2]+"\" height=\""+elementArray[activeElement][3]+"\">" +
				"<param name=\"movie\" value=\""+elementArray[activeElement][0]+"\"/>" +
				"<param name=\"quality\" value=\"high\" />" +
				"<param name=\"allowscriptaccess\" value=\"always\" />" +
				"<param name=\"wmode\" value=\"transparent\" />" +
				"<embed wmode=\"transparent\" allowscriptaccess=\"always\" src=\""+elementArray[activeElement][0]+"\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" width=\""+elementArray[activeElement][2]+"\" height=\""+elementArray[activeElement][3]+"\">" +
				"</embed>" +
				"</object>";
			new Effect.Appear('lightboxswf', {  duration: resizeDuration, queue: 'end', from: 0.0, to: 100, afterFinish: function(){ myLightbox.updateDetails(); } });
		} else {
			$('lightboxswf').style.display = 'none';
			new Effect.Appear('lightboximage', { duration: resizeDuration, queue: 'end', afterFinish: function(){ myLightbox.updateDetails(); } });
			this.preloadNeighborImages();
		}
	},
	updateDetails: function() {
		if(elementArray[activeElement][1]){
			Element.show('caption');
			Element.setInnerHTML( 'caption', elementArray[activeElement][1]);
		}
		if(elementArray.length > 1){
			Element.show('numberDisplay');
			if(elementArray[activeElement][0].endsWith('swf')) {
				Element.setInnerHTML( 'numberDisplay', "Movie " + eval(activeElement + 1) + " of " + elementArray.length);
			}else{
				Element.setInnerHTML( 'numberDisplay', "Image " + eval(activeElement + 1) + " of " + elementArray.length);			
			}
		}
		new Effect.Parallel(
			[ new Effect.SlideDown( 'imageDataContainer', { sync: true, duration: resizeDuration, from: 0.0, to: 1.0 }), 
			  new Effect.Appear('imageDataContainer', { sync: true, duration: resizeDuration }) ], 
			{ duration: resizeDuration, afterFinish: function() {
				var arrayPageSize = getPageSize();
				Element.setHeight('overlay', arrayPageSize[1]);
				myLightbox.updateNav();
				}
			} 
		);
	},
	updateNav: function() {
		Element.show('hoverNav');				
		if (activeElement != 0){
			Element.show('prevLink');
			document.getElementById('prevLink').onclick = function() {
				myLightbox.changeElement(activeElement - 1); return false;
			}
		}
		if (activeElement != (elementArray.length - 1)){
			Element.show('nextLink');
			document.getElementById('nextLink').onclick = function() {
				myLightbox.changeElement(activeElement + 1); return false;
			}
		}
		this.enableKeyboardNav();
	},
	enableKeyboardNav: function() {
		document.onkeydown = this.keyboardAction; 
	},
	disableKeyboardNav: function() {
		document.onkeydown = '';
	},
	keyboardAction: function(e) {
		if (e == null) {
			keycode = event.keyCode;
			escapeKey = 27;
		} else {
			keycode = e.keyCode;
			escapeKey = e.DOM_VK_ESCAPE;
		}
		key = String.fromCharCode(keycode).toLowerCase();
		if ((key == 'x') || (key == 'o') || (key == 'c') || (keycode == escapeKey)) {
			myLightbox.end();
		} else if((key == 'p') || (keycode == 37)){
			if (activeElement != 0){
				myLightbox.disableKeyboardNav();
				myLightbox.changeElement(activeElement - 1);
			}
		} else if((key == 'n') || (keycode == 39)){
			if (activeElement != (elementArray.length - 1)){
				myLightbox.disableKeyboardNav();
				myLightbox.changeElement(activeElement + 1);
			}
		}
	},
	preloadNeighborImages: function(){
		if ((elementArray.length - 1) > activeElement){
			preloadNextImage = new Image();
			preloadNextImage.src = elementArray[activeElement + 1][0];
		}
		if (activeElement > 0){
			preloadPrevImage = new Image();
			preloadPrevImage.src = elementArray[activeElement - 1][0];
		}
	},
	end: function() {
		this.disableKeyboardNav();
		var obj = $('lightboxswf');
		obj.innerHTML = "";
		Element.hide('lightbox');
		new Effect.Fade('overlay', { duration: overlayDuration});
		showSelectBoxes();
		showFlash();
	}
}
function getPageScroll(){
	var xScroll, yScroll;
	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {	
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;	
	}
	arrayPageScroll = new Array(xScroll,yScroll) 
	return arrayPageScroll;
}
function getPageSize(){
	var xScroll, yScroll;
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else {
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	var windowWidth, windowHeight;
	if (self.innerHeight) {
		if (document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) {
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}
	if (xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}
function getKey(e){
	if (e == null) {
		keycode = event.keyCode;
	} else {
		keycode = e.which;
	}
	key = String.fromCharCode(keycode).toLowerCase();
	if (key == 'x'){
	}
}
function listenKey () {	document.onkeypress = getKey; }
function showSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}
function hideSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
}
function showFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "visible";
	}
	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "visible";
	}
}
function hideFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "hidden";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "hidden";
	}

}
function pause(ms){
	var date = new Date();
	curDate = null;
	do{var curDate = new Date();}
	while( curDate - date < ms);
}
function initLightbox() { myLightbox = new Lightbox(); }
Event.observe(window, 'load', initLightbox, false);
