
var $={
addOnload:function(f){var p=window.onload;if (typeof window.onload!='function'){window.onload=f;}else{window.onload=function(){p();f();}}},
getByClass:function(str,node,tag){var classEls=new Array();if(node==null)node=document;if(tag==null)tag='*';var els=node.getElementsByTagName(tag);var elsLen=els.length;var pattern=new RegExp('(^|\\s)'+str+'(\\s|$)');for(i=0,j=0;i<elsLen;i++){if(pattern.test(els[i].className)){classEls[j]=els[i];j++;}}return classEls;},
getById:function(){var els=new Array();for(var i=0;i<arguments.length;i++){var el=arguments[i];if(typeof el=='string')el=document.getElementById(el);if(arguments.length==1)return el;els.push(el);}return els;},
getByTag:function(str,node){if(node==null)node=document;return node.getElementsByTagName(str);}
};

var TARGET={
init:function(){var t=$.getByTag("a")[0];for(var i=0;i<t.length;i++){var a=t[i];if(a.getAttribute("href")&&a.getAttribute("rel")=="external")a.target="_ext";}}
};

var HTTPREQUEST={
init:function(){
	try{
	// if (XMLHttpRequest) {
		return new XMLHttpRequest;
	} catch(f){
	// } else {
		var types = [
		'Microsoft.XMLHTTP',
		'MSXML2.XMLHTTP.5.0',
		'MSXML2.XMLHTTP.4.0',
		'MSXML2.XMLHTTP.3.0',
		'MSXML2.XMLHTTP'
			];
		for (var i = 0; i < types.length; i++) { try { return new ActiveXObject(types[i]); } catch(e) {} }
		return false; // XMLHttpRequest not supported
		}
	
	}
};

var JSON={
baseDir:"",
init:function(directory){
	JSON.baseDir = "/_js/pgal/json";
	},
getData:function(id,callback,args){
    if (typeof args == "undefined") {
	  args = {"id":id};
	}
	var httpRequest;
	var jsonData;
	var url;
	httpRequestObj = HTTPREQUEST.init();
	if (httpRequestObj){
		url = "http://" + location.hostname + JSON.baseDir + "/" + id + ".js";
		httpRequestObj.open("GET", url,true);
		httpRequestObj.setRequestHeader("If-Modified-Since", "Tue, 01 Jan 1980 01:00:00 GMT");
		httpRequestObj.onreadystatechange = function(){
		    if (httpRequestObj.readyState == 4) {
				if (httpRequestObj.status == 200) {
					
					jsonData = eval("(" + httpRequestObj.responseText + ")");
					callback(id,jsonData,args);
					}
				}
			}
		httpRequestObj.send(null);		

		}
	}
};

// var HOVER={
// init:function(){if(window.attachEvent){var m=$.getByTag("LI",$.getId("nav-menus"));for(var i=0;i<m.length;i++){m[i].onmouseover=function(){this.className+=" hover"};m[i].onmouseout=function(){this.className=this.className.replace(new RegExp(" hover\\b"),"")};}}}
// };

var VFORM={
validate:function(sf){var empty=function(ef,en,et){eo=ef.elements[en];if(et=="checkbox"){if(!eo.length){or=!eo.checked;}else{eb=true;for(ec=0;ec<eo.length;ec++)if(eo[ec].checked)eb=false;or=eb;}}else if(et=="radio"){eb=true;for(ec=0;ec<eo.length;ec++)if(eo[ec].checked)eb=false;or=eb;}else if(et=="select-one"){or=eo.options[eo.selectedIndex].value=="";}else if(et=="text"){or=eo.value.length<=0;}else if(et=="textarea"){or=eo.value.length<=0;}return or;};se=sf.elements;sl=se.length;sm="Please complete the following required fields:\n";if(sl>1){st="";for(sc=0;sc<sl-1;sc++){if((se[sc].name.indexOf("_req")!=-1)&&(st!=se[sc].name)&&(empty(sf,se[sc].name,se[sc].type)))sm=sm+"- '"+se[sc].title+"'\n";st=se[sc].name;}}if(sm.length>50)alert(sm);return sm.length<=50;},
init:function(){var ivfForms=$.getByTag("form");for(var ivfCounter=0;ivfCounter<ivfForms.length;ivfCounter++)ivfForms[ivfCounter].onsubmit=function(){return VFORM.validate(this);};}
};

var PGAL={
selectedIndex:-1,
selectedItem:null,
maximum:6,
preloadedImg: new Image(),
init:function(){
	var pgalObject=$.getByClass("pgal");
	var pgalArgs;
	for(pgalCounter=0;pgalCounter<pgalObject.length;pgalCounter++){
		// Load JSON associated with this pgal
		pgalArgs={"pgalObject":pgalObject[pgalCounter]};
		JSON.getData(pgalObject[pgalCounter].id,PGAL.loadObject,pgalArgs);
		}
	},
loadObject:function(id,jsonData,args){
	var pgalPhotoObject;
	var pgalDescriptionObject;
	var pgalNextObject;
	var pgalPreviousObject;
	var currJsonItem;
	var currpgalItem;
	var pgalDiv=args.pgalObject;
	pgalDiv.items = jsonData.pgal.items;
	//  alert(jsonData["pgal01"].items[0].src);
	pgalPhotoObject=$.getByClass("pgal-photo",pgalDiv)[0];
	pgalPhotoObject.pgalParent=pgalDiv;
	pgalPhotoObject.onclick=function(){return PGAL.nextClick(this);};
	PGAL.fader=FADER.init(pgalPhotoObject);
	PGAL.photoObject=pgalPhotoObject;
	// alert(PGAL.photoObject.onclick);
	

	pgalDescriptionObject=$.getByClass("pgal-desc",pgalDiv)[0];
	pgalBlurbObject=$.getByClass("pgal-blurb",pgalDiv)[0];
	var firstItem = null;
	
	for(var pgalItemCounter=0;pgalItemCounter<pgalDiv.items.length;pgalItemCounter++){
		currJsonItem=pgalDiv.items[pgalItemCounter];
		currpgalItem=$.getById(currJsonItem.id);
		if (pgalItemCounter == 0) firstItem=currpgalItem; 
		
		currpgalItem.onclick=function(){return PGAL.itemClick(this);};
		currpgalItem.pgalParent=pgalDiv;
		currpgalItem.pgalPhotoObject=pgalPhotoObject;
		currpgalItem.pgalDescriptionObject=pgalDescriptionObject;
		if (pgalBlurbObject){ currpgalItem.pgalBlurbObject=pgalBlurbObject } else { currpgalItem.pgalBlurbObject=null };

		currpgalItem.pgalId=currJsonItem.id;
		currpgalItem.pgalIndex=pgalItemCounter;
	}
  	pgalNextObject=$.getByClass("pgal-next",pgalDiv,"a");
	if(pgalNextObject){
 		try {
 		pgalNextObject[0].onclick=function(){return PGAL.nextClick(this);};
 		pgalNextObject[0].pgalParent=pgalDiv;
 		} catch(e) { };
 	}
 	pgalPreviousObject=$.getByClass("pgal-previous",pgalDiv,"a");
 	if(pgalPreviousObject){
 		try {
 		pgalPreviousObject[0].onclick=function(){return PGAL.previousClick(this);};
 		pgalPreviousObject[0].pgalParent=pgalDiv;
 		} catch(e) { };
 	}
 	// $.addOnload(PGAL.itemClick(firstItem));
	
 		
 		
 		// for(pgalItemCounter=0;pgalItemCounter<pgalItems.length;pgalItemCounter++){
 			// Get parent XML element for this item
 			// xmlPgalObject=xmlObject.getElement("image",pgalItemCounter);
 			// Get child elements. ex:
 			// pgalImageSrc=xmlObject.getChildElement(xmlPgalObject,"src");
 			// pgalItems[pgalItemCounter].pgalPhotoUrl=pgalArray[0][pgalItemCounter];
 			// pgalItems[pgalItemCounter].pgalDescriptionCopy=pgalArray[1][pgalItemCounter];
 			// }
 		// pgalNextObject=$.getByClass("pgal-next",args.pgalObject,"a");
 		// if(pgalNextObject)pgalNextObject[0].onclick=function(){return PGAL.nextClick(this);};
 		// pgalPrevObject=$.getByClass("pgal-prev",args.pgalObject,"a");
 		// if(pgalPrevObject)pgalPrevObject[0].onclick=function(){return PGAL.previousClick(this);};
	},	
itemDeselect:function(pgalItemAnchor){
	pgalItemAnchor.pgalParent.selectedItem=null;
	pgalItemAnchor.pgalParent.selectedIndex=-1;
	PGAL.selectedIndex=-1;
	PGAL.selectedItem=null;
	for(var pgalItemCounter=0;pgalItemCounter<pgalItemAnchor.pgalParent.items.length;pgalItemCounter++){
		currpgalItem=$.getById(pgalItemAnchor.pgalParent.items[pgalItemCounter].id);
		currpgalItem.className=currpgalItem.className.replace(new RegExp(" lit\\b"),"");
		}
	},
switchImage:function(image){
		// alert("switching image " + image);
		// imageObj.src=imageSrc;
		// htmlStr='<img src="' + imageSrc + '" title="' + imageTitle + '" />';
	PGAL.selectedItem.pgalPhotoObject.appendChild(image);
	var currImageObj=PGAL.selectedItem.pgalPhotoObject.firstChild;
	currFader=FADER.init(currImageObj,"image");
	currFader.setOpacity(0);
	currImageObj.style.display="block";
	currFader.fadeIn();	
		
	},
fadeFlash:function(movieObj){
	// alert("trying to set the opa");
	var currMovieObj=PGAL.selectedItem.pgalPhotoObject.firstChild;
	
	currPgal=PGAL.selectedItem.pgalParent.items[PGAL.selectedItem.pgalIndex];
	// currMovieObj.TSetProperty("/", 6, 0);
	var currFader=FADER.init(currMovieObj,"flash");
	currFader.setOpacity(10);
	// alert("setting to proper size");
	currMovieObj.width=currPgal.width;
	currMovieObj.height=currPgal.height;
	currFader.fadeIn();	
	// movieObj.TSetProperty("/", 6, 0);
	// FADER.setOpacity(0);
	// FADER.fadeIn();
	// fadePos=0;
  	// fadeMovie();
	// alert("movie is loaded");
	},
itemSelect:function(pgalItemAnchor){
	pgalItemAnchor.className+=" lit";
	pgalItemAnchor.pgalParent.selectedItem=pgalItemAnchor;
	pgalItemAnchor.pgalParent.selectedIndex=pgalItemAnchor.pgalIndex;
	PGAL.selectedIndex=pgalItemAnchor.pgalIndex;
	PGAL.selectedItem=pgalItemAnchor;
	},	
itemClick:function(pgalItemAnchor){
	var htmlStr = "";
	if (pgalItemAnchor.pgalParent.items[pgalItemAnchor.pgalIndex]){
		PGAL.itemDeselect(pgalItemAnchor);
		PGAL.itemSelect(pgalItemAnchor);
		currPgal=pgalItemAnchor.pgalParent.items[pgalItemAnchor.pgalIndex];
		currFader=PGAL.fader;
		swfWidth=536;
		swfHeight=400;	
		if (currPgal.width){
			if (currPgal.width > 0)swfWidth=currPgal.width;	
		}
		if (currPgal.height){
			if (currPgal.height > 0)swfHeight=currPgal.height;	
		}
		swfPlayerWidth=swfWidth - 10;
		swfPlayerHeight=swfHeight - 10;	
		if (currPgal.playerwidth){
			if (currPgal.playerwidth > 0)swfPlayerWidth=currPgal.playerwidth;	
		}
		if (currPgal.playerheight){
			if (currPgal.playerheight > 0)swfPlayerHeight=currPgal.playerheight;	
		}
		var imgTitle = "Photo " + (pgalItemAnchor.pgalIndex + 1);
		if (pgalItemAnchor.pgalDescriptionObject){
			if (currPgal.description){
				pgalItemAnchor.pgalDescriptionObject.innerHTML=currPgal.description;
				imgTitle = currPgal.description;
			} else {
				pgalItemAnchor.pgalDescriptionObject.innerHTML="";
			}
		}
		if (pgalItemAnchor.pgalBlurbObject){
			if (currPgal.blurb){
				pgalItemAnchor.pgalBlurbObject.innerHTML=currPgal.blurb;
			} else {
				pgalItemAnchor.pgalBlurbObject.innerHTML="";
			}
		}
		if (pgalItemAnchor.pgalPhotoObject && currPgal.src){
			var playerData = currPgal.src;
			pgalItemAnchor.pgalPhotoObject.innerHTML="";
			var splitSrc = currPgal.src.split(".");
			switch ( splitSrc[splitSrc.length - 1]){
			case "mp3":
			case "flv":
			case "avi":
			case "mov":
				var mediaDuration = 30;
				if (currPgal.duration){
					mediaDuration = currPgal.duration;
				}
				rExp = /\.mp3$/i;
				playerData = '/_swf/work/samples/media-player7.swf?filename=' + currPgal.src + '&width=' + swfPlayerWidth + '&height=' + swfPlayerHeight + '&duration=' + mediaDuration + '&cb=2';
			case "swf":
				var movieObj = document.createElement('object');
				var movieParamObject = document.createElement('param');
				movieParamObject.name="movie";
				movieParamObject.value=playerData;
				
				var wmodeParamObject = document.createElement('param');
				wmodeParamObject.name="wmode";
				wmodeParamObject.value="opaque";
			
				var playParamObject = document.createElement('param');
				playParamObject.name="play";
				playParamObject.value="true";
			
				var loopParamObject = document.createElement('param');
				loopParamObject.name="loop";
				loopParamObject.value="false";
				
				movieObj.type="application/x-shockwave-flash";
				movieObj.data=playerData;
				movieObj.id="movie-"+ pgalItemAnchor.pgalParent.id;
				movieObj.width="1";
				movieObj.height="1";
				movieObj.style.overflow="hidden";
				// movieObj.id="testcommand";
				// movieObj.TSetProperty("/", 6, 0);
				
				movieObj.appendChild(movieParamObject);
				movieObj.appendChild(wmodeParamObject);
				movieObj.appendChild(playParamObject);
				movieObj.appendChild(loopParamObject);	
				
				/*
				var embededObject = document.createElement('embed');
				embededObject.src=playerData;
				embededObject.quality="high";
				embededObject.swliveconnect="true";
				embededObject.bgcolor="#FFFFFF";
				embededObject.WIDTH="536";	
				embededObject.HEIGHT="400";	
				embededObject.name="movie-"+ pgalItemAnchor.pgalParent.id;
				embededObject.ALIGN="";	
				embededObject.TYPE="application/x-shockwave-flash"; 			
				embededObject.PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer";			
				movieObj.appendChild(embededObject);	
				*/
			
				htmlStr = '<object type="application/x-shockwave-flash" data="' + playerData + '"';
				if (currPgal.width){
					htmlStr+=' width="1"';
				}
				if (currPgal.height){
					htmlStr+=' height="1"';
				}

				htmlStr+=' id="movie-"' + pgalItemAnchor.pgalParent.id; + '"';
				htmlStr+=' style="overflow:scroll;">';
				htmlStr+='<param name="movie" value="' + playerData + '" />';
		 		htmlStr+='<param name="wmode" value="opaque" />';
		 		if (currPgal.image){
		 			htmlStr+='<img src="' + currPgal.image + '" title="' + imgTitle + '" />';
		 		}
	// had to add embed back in instead of using satay, so IE could access the movie via the dom		
  htmlStr+='<EMBED src="' + playerData + '"'; 
  htmlStr+=' quality=medium';
  htmlStr+=' swliveconnect="true"'; 
  htmlStr+=' bgcolor=#FFFFFF WIDTH="' + swfWidth + '" HEIGHT="'+ swfHeight + '"';
  htmlStr+=' name="movie-"' + pgalItemAnchor.pgalParent.id; + ''
  htmlStr+=' ALIGN=""'
  htmlStr+=' WMODE="opaque"'
  htmlStr+=' TYPE="application/x-shockwave-flash"';
  htmlStr+=' PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">';
  htmlStr+='</EMBED>';
				
				
				
				htmlStr+='</object>';
				pgalItemAnchor.pgalPhotoObject.onclick=null;
				pgalItemAnchor.pgalPhotoObject.innerHTML=htmlStr;
				// pgalItemAnchor.pgalPhotoObject.display="none";
				// pgalItemAnchor.pgalPhotoObject.appendChild(movieObj);
				flashLoader=FLOAD.init(pgalItemAnchor.pgalPhotoObject.firstChild,PGAL.fadeFlash);
				flashLoader.waitForMovie();
				break;
			case "jpg":
			case "png":
			case "gif":
				var tempImage=new Image();
				tempImage.alt=imgTitle;
				tempImage.style.display="none";
				pgalItemAnchor.pgalPhotoObject.onclick=function(){return PGAL.nextClick(pgalItemAnchor);};
				currImage=ILOAD.preload(tempImage,currPgal.src,PGAL.switchImage);
				// PGAL.preloadImage(pgalItemAnchor.pgalPhotoObject.firstChild,currPgal.src,imgTitle);
				// alert("lah!");
				// currFader.fadeIn();
				break;
			}
		}
		// pgalItemAnchor.blur();
		return false;
		}
	},
nextClick:function(pgalNextAnchor){
	var currJsonItem;
	var currpgalItem;

	if (! pgalNextAnchor.pgalParent.selectedIndex) pgalNextAnchor.pgalParent.selectedIndex = 0;
	if (pgalNextAnchor.pgalParent.selectedIndex < 0) pgalNextAnchor.pgalParent.selectedIndex = 0;
	var nextSel = pgalNextAnchor.pgalParent.selectedIndex + 1;
	if (nextSel >= pgalNextAnchor.pgalParent.items.length) nextSel = 0; 
	currJsonItem=pgalNextAnchor.pgalParent.items[nextSel];
	currpgalItem=$.getById(currJsonItem.id);
	PGAL.itemClick(currpgalItem);
	pgalNextAnchor.blur();
	return false;
	},
previousClick:function(pgalPreviousAnchor){
	var currJsonItem;
	var currpgalItem;
	if (! pgalPreviousAnchor.pgalParent.selectedIndex) pgalPreviousAnchor.pgalParent.items.length - 1;
	if (pgalPreviousAnchor.pgalParent.selectedIndex < 0) pgalPreviousAnchor.pgalParent.items.length - 1;
	var nextSel = pgalPreviousAnchor.pgalParent.selectedIndex - 1;
	if (nextSel < 0) nextSel = pgalPreviousAnchor.pgalParent.items.length - 1; 
	currJsonItem=pgalPreviousAnchor.pgalParent.items[nextSel];
	currpgalItem=$.getById(currJsonItem.id);
	PGAL.itemClick(currpgalItem);
	pgalPreviousAnchor.blur();
	return false;
	}
};

var FLOAD={
movie:null,
callback:null,
initWaitDone:false,
init:function(movieObj,callback){
	FLOAD.movie=movieObj;
	// if (window[movieObj.id]){
	// 	FLOAD.movie=window[movieObj.id];
	// } else {
	// 	FLOAD.movie=document[movieObj.id];
	// }
	FLOAD.initWaitDone=false;
	FLOAD.callback=callback;
	return this;
	},
waitForMovie:function(){
	// theMovie=thisMovie(movieName);
	/// alert("what is going on");
	if (FLOAD.movieIsLoaded() && FLOAD.initWaitDone == true){
		FLOAD.callback(FLOAD.movie);
	} else {
		FLOAD.initWaitDone = true;
		window.setTimeout("FLOAD.waitForMovie()",500);
		}

	},
movieIsLoaded:function(){
	var percentLoaded = 0;
	// alert(FLOAD.movie.id);
	try{
		// percentLoaded = FLOAD.movie.percentLoaded();
		FLOAD.movie.TSetProperty("/", 6, 0);
		percentLoaded = 100;
  	} catch (e){
		percentLoaded = 0;
	}
	if (percentLoaded == 100){
		return true;
	}
	return false;
	}
	
};

var ILOAD={
image:new Image(),
preload:function(imgObject,imgSrc,callback){
	ILOAD.callback=callback;
	ILOAD.image=imgObject;
	imgObject.src=imgSrc;
	window.setTimeout("ILOAD.checkLoaded()",500);
	},	
checkLoaded:function(){
		if (ILOAD.image.complete){
			// alert("fully loaded");
			 ILOAD.callback(ILOAD.image);
		} else {
			window.setTimeout("ILOAD.checkLoaded()",25);
		}
	}
};


var FADER={
currOpacity:0,
init:function(objId,objType){
	FADER.objType=objType
	FADER.baseObject=objId;		
	return this;
	},
fadeIn:function(){
	if (FADER.currOpacity < 100) {
		FADER.setOpacity(FADER.currOpacity+=10);
		window.setTimeout("FADER.fadeIn()",25);
		}
	},
fadeOut:function(){
	if (FADER.currOpacity > 0) {
		FADER.setOpacity(FADER.currOpacity-=10);
		window.setTimeout("FADER.fadeOut()",25);
		}
	},
setOpacity:function(opacity){
	// alert("opacity: " + opacity);
	FADER.currOpacity=opacity;
	opacity=(opacity>=100)?99.999:opacity;
	if (FADER.objType=="flash"){
		FADER.baseObject.TSetProperty("/", 6, opacity);
	} else {
	// alert(FADER.baseObject.src);
	// alert("fadey poo");	
		FADER.baseObject.style.filter="alpha(opacity:"+opacity+")";
		FADER.baseObject.style.KHTMLOpacity=opacity/100;

		FADER.baseObject.style.MozOpacity=opacity/100;
		FADER.baseObject.style.opacity=opacity/100;
		}
	}
};

// $.addOnload(HOVER.init);
$.addOnload(JSON.init);
$.addOnload(PGAL.init);
// $.addOnload(TARGET.init);
$.addOnload(VFORM.init);