		var TransSpeed = 1000;
		var iPhoneClickTolerance = 10;
		var iPhoneEaseTolerance = 200;
		var iPhoneBounce = 600;
		var AnimSeqTimeout = 1000;

		var DownHref = '';
		var MouseX = 0;
		var DownPressed = false;
		var DownPos = 0;
		var DownLeft = 0;
		var AltImgChanged = false;
		var AltImgId = false;
		
		var PreviewPosX = 0;
		var PreviewPosY = 0;
		var PreviewW = 0;
		var PreviewH = 0;
		
		var Scrolled = false;
	
		var ImgList = [];
		
		var ImgLoaded = false;
		var FirstClick = false;
		var firstId = false;
		var FirstShow = false;
		
		var IconList = [];
		var fadeTransitionActive = false;
		function ShowTime() {
			if (!FirstClick) {
				if (ImgLoaded) {
					FirstShow = true;
	//				jQuery('div.iphoneGallery ul li').show();
				//	jQuery('#imgfastpreview').html('');
				//	jQuery('#imgdisplay').html('');
				
					jQuery('.iphoneGallery ul li a img').fadeTo('fast',0.40);
					jQuery('.iphoneGallery ul li:first a img').fadeTo('fast',1);				
					var html = jQuery('#imglist div.imgelement:first').clone();
					jQuery('#imgdisplay').append(html);
					var html = jQuery('#imglist div:first').html();
					jQuery('#imgfastpreview').append(html);
					jQuery('#imgfastpreview div').hide();
					jQuery('#imgfastpreview div:first').show();
					window.setTimeout("AnimateSequence()", AnimSeqTimeout);
				} else {
					window.setTimeout("ShowTime()", 500);
				}
			}
		}	
		
		var ShowAnimSeq = true;
		function AnimateSequence() {	
			if (ShowAnimSeq) {
				var lastid = jQuery('#imgfastpreview div:last').attr('id');
				var showid = jQuery('#imgfastpreview div:visible').attr('id');
				if (showid!=lastid) {
					jQuery('#'+showid).hide();
					jQuery('#'+showid).next('div').show();
					window.setTimeout("AnimateSequence()", AnimSeqTimeout);
				}
			}
		}
		
		var ImgCount = 0;
		var ImgDone = 0;
	
		
		
		function ImgQueue (myid,myf,myw,myh) {
			var tmp = {
				id: myid,
				f: '/'+myf,
				w: myw,
				h: myh
			};
			IconList.push(tmp);
		}
		function LoadNextImg () {
			//console.log(['start',id,f,w,h]);
			//var i = ImgList.length;
			if (IconList.length < 1) return;
			var tmp = IconList.shift();
		//	console.log(tmp);
			var Img = new Image(tmp.w,tmp.h);
			
			Img.id = tmp.id;
			Img.src = tmp.f;
//			IconIDList.push(id);
//			IconSRCList.push('/'+f);
			//IconList[id]='/'+f;
			ImgCount++;
			jQuery(Img).load(function(e) {

				var img = this;				
				jQuery('#imglist div#'+img.id).css('background','url('+img.src+') no-repeat  0 0').addClass("imgloaded"); //attr('status','done');
				if (jQuery('#imglist div#'+img.id).hasClass('childcontainer')) {
					var loadedsiblings =  jQuery('#imglist div#'+img.id).siblings('div.imgloaded');
					var siblings = jQuery('#imglist div#'+img.id).siblings('div');
					if(loadedsiblings.length == siblings.length) {
						var parentid =  jQuery('#imglist div#'+img.id).parent('div').attr('id');
						var iconsrc = jQuery('a[rel="'+parentid+'"] img').attr('finalsrc');
						jQuery('a[rel="'+parentid+'"] img').attr('src',iconsrc).fadeTo('fast',0.40);
						if (parentid==firstId) {
							ImgLoaded = true;
						} 
					}
				} else {
				
					var rel = jQuery('#imglist div#'+img.id).attr('rel');
					if (rel==img.id) {
						var iconsrc = jQuery('a[rel="'+img.id+'"] img').attr('finalsrc');
						jQuery('a[rel="'+img.id+'"] img').attr('src',iconsrc).fadeTo('fast',0.40);
						if (img.id==firstId) {
							ImgLoaded = true;
						} 
					} else {
						if (jQuery('#'+rel).hasClass('imgloaded')) {
							if (img.id==firstId) ImgLoaded = true;
							var iconsrc = jQuery('a[rel="'+img.id+'"] img').attr('finalsrc');
							jQuery('a[rel="'+img.id+'"] img').attr('src',iconsrc);
							if (rel==firstId) ImgLoaded = true;
							var iconsrc = jQuery('a[rel="'+rel+'"] img').attr('finalsrc');
							jQuery('a[rel="'+rel+'"] img').attr('src',iconsrc).fadeTo('fast',0.40);
						}
					}	
				}
				
		//		ImgList[img.id] = false;
				
				
				ImgDone++;
				//console.log([ImgDone,ImgCount]);
			//	var percent = Math.ceil(ImgDone*100/ImgCount);
			//	jQuery('#imgfastpreview').html(percent+'%');
			//	jQuery('#imgdisplay').html(percent+'%');
				if (ImgDone >= ImgCount) {
					ImgLoaded = true;
				}
				LoadNextImg();
			});
		}

		jQuery(document).ready(function () {

			jQuery('.iphoneGallery > ul > li > a > img').each(function() {
				//var i = IconList.length;
				var img  = new Image(80,80);
				img.src = jQuery(this).attr('finalsrc');
				//console.log(IconList[i].src);
			});

			jQuery('#imglist > div').each(function() {
				var id = jQuery(this).attr('id');
				if (!firstId) firstId = id;
				//jQuery('a[rel="'+id+'"]').hide();
				var kids = jQuery(this).children('div');
				
				if (kids.length > 0) {
					jQuery(kids).each(function() {
						
						var id = jQuery(this).attr('id');
						
						var file = jQuery(this).text();
						//console.log([id,file]);
						jQuery(this).text('');
						ImgQueue(id,file,945,455);
					});
				} else {
					
					var file = jQuery(this).text();
					jQuery(this).text('');
					ImgQueue(id,file,945,455);			
				}
			});
			//console.log(IconList);
			LoadNextImg();
			LoadNextImg();
			LoadNextImg();
			LoadNextImg();
			LoadNextImg();
			LoadNextImg();
			
			var tmppos = jQuery('#imgdisplay').position();
			if (tmppos) {
				PreviewPosX = tmppos.left;
				PreviewPosY = tmppos.top;
				PreviewW = parseInt( jQuery('#imgdisplay').css('width'));
				PreviewH = parseInt( jQuery('#imgdisplay').css('height'));
			}
			
			jQuery('#imgdisplay').hover(
				function () {
					if (!AltImgChanged && !fadeTransitionActive) {
						var testrel = jQuery('#imgdisplay div:first').attr('rel');
						var html = jQuery('#'+testrel).clone();
						jQuery(html).show();
						jQuery('#imgdisplay').append(html);
						jQuery('#imgdisplay div:first').remove();
						AltImgChanged = true;
					}
				}
				,function () {
					if (AltImgChanged && !fadeTransitionActive) {
						var testrel = jQuery('#imgdisplay div:first').attr('rel');
						var html = jQuery('#'+testrel).clone();
						jQuery(html).show();
						jQuery('#imgdisplay').append(html);
						jQuery('#imgdisplay div:first').remove();
						AltImgChanged = false;
					}
				}
			);
			
			jQuery(document).mousemove(function(e) {
				e.preventDefault();
				MouseX = e.clientX;
				MouseY = e.clientY;
				if (DownPressed) {
					var value = MouseX - DownPos;
					value = DownLeft + value;
					jQuery('.iphoneGallery ul').css('left',value+'px');
					Scrolled = true;
				}
			});
			
		
			jQuery(document).mouseup(function(e) {
				e.preventDefault();
				if (DownPressed) {
					var NowPos = e.clientX;
					var tolerance = NowPos-DownPos;
					
					DownPressed = false;
					
				 	if (!(tolerance < iPhoneClickTolerance && tolerance > iPhoneClickTolerance*-1 )) {
						
						var dir = 'l';
						if (tolerance < 0) dir = 'r';
						
						
						
						var left =  parseInt(jQuery('.iphoneGallery ul').css('left'));
						var position =  jQuery('.iphoneGallery ul').position();
						var left = position.left;

						if (!(tolerance < iPhoneEaseTolerance && tolerance > iPhoneEaseTolerance*-1)) {
							if (dir=='r') left = left-iPhoneEaseTolerance;
							else left = left+iPhoneEaseTolerance;
							jQuery('.iphoneGallery ul').animate({ 'left' :  left+'px' }, iPhoneEaseTolerance*10, 'swing');
						}
						
						if (left > 0) {
							jQuery('.iphoneGallery ul').animate({ 'left' :  '0px' }, iPhoneBounce, 'easeOutBounce');
						} else {
							var outerW = jQuery('.iphoneGallery').width();
							var innerW = jQuery('.iphoneGallery ul').width();
							var leftBoundary = innerW - outerW;
							leftBoundary = leftBoundary*-1;
							if (left < leftBoundary) {
								jQuery('.iphoneGallery ul').animate({ 'left' :  leftBoundary+'px' }, iPhoneBounce, 'easeOutBounce');
							}  
						}
					}
				}
			});
			jQuery('.iphoneGallery').each(function() {
				jQuery('a',this).mousedown(function(e) {
					jQuery('.iphoneGallery ul').stop();
					e.preventDefault();
					DownPos = e.clientX;
					DownLeft = parseInt(jQuery('.iphoneGallery ul').css('left'));
					DownPressed = true;
					return(false);
				});
				jQuery('a',this).click(function(e) { 
					e.preventDefault();
					DownPressed = false;
					if (!Scrolled) {
						var iconsrc = jQuery('img',this).attr('finalsrc');
						var mainsrc = jQuery('img',this).attr('src');
						
						if (iconsrc==mainsrc) {
							jQuery('.iphoneGallery img').fadeTo('fast',0.40);
							jQuery('img',this).fadeTo('fast',1);
							FirstClick = true;
							var rel = jQuery(this).attr('rel');
							var html = jQuery('div#'+rel).hide().clone();
//							html.id='altimg';
		
							var altrel = jQuery(html).attr('rel');
							AltImgChanged = false;
							AltImgId = false;
							if (altrel!=rel) {
								AltImgId = altrel;
							}
							
		
							jQuery('#imgdisplay').append(html);
							fadeTransitionActive = true;
							jQuery('#imgdisplay div:last').fadeIn(TransSpeed,function() {
								fadeTransitionActive = false;
							});
							
							var kids = jQuery('#imgdisplay').children();
							if (kids.length > 1) {
							jQuery('#imgdisplay div:first').fadeOut(TransSpeed, function() {
								jQuery('#imgdisplay div:first').remove();
							});
							}
							
							var html = jQuery('div#'+rel).html();
							//alert(html);
							jQuery('#imgfastpreview').empty().append(html);
							jQuery('#imgfastpreview div').hide();
							jQuery('#imgfastpreview div:first').show();
							ShowAnimSeq = true;
							window.setTimeout("AnimateSequence()", AnimSeqTimeout);

						}
					}
					Scrolled=false;
					return false; 
				});
			});

			jQuery('#imgfastpreview').mousemove(function(e) {
				if (FirstShow) {
					ShowAnimSeq = false;
					var myX = e.clientX;
					var myPosition = jQuery(this).position();
					myX = myX-myPosition.left;
	
	
	
					var myWidth =  parseInt(jQuery(this).css('width'));
					var kids =  jQuery('#imgfastpreview').children('div');
	
					var segwidth = Math.floor(myWidth/kids.length);
					
					var child = Math.floor(myX/segwidth);
					
					if (child < 0) child = 0;
					if (child >= kids.length) child = kids.length-1;
	
					var myId = jQuery('#imgfastpreview div').attr('id');
	
					jQuery('#imgfastpreview div').hide();
					jQuery('#imgfastpreview div#'+kids[child].id).show();
				}
			});
			
			jQuery('.iphoneGallery ul').animate({ 'left' :  '0px' }, iPhoneBounce*4, 'easeOutBounce');
			ShowTime();
			
		});
		

		

