var subfolder;
var g=true;
var current=0;
var currently_showing=0;
var preload;
var album;
var timeout;
var interval;
var intervalTime=6000;
var adding=false;
var imgCache=Array();
var loadingMessage='&bull; Photoproof Slideshow will start automatically &bull; Rollover each photoproof thumbnail above to view &bull; Drag or double-click photoproof thumbnails to add them to your <strong>Order Strip</strong>';

function cycleFade(){

	album = {
		startup: function() { 
			for(z=0; z<(number+1); z++){
				Preloader.add($('thumb'+z).href);
			}
			
			var startPhotoShow = function(){
				interval=setInterval(album.cycle, intervalTime);
				g=false;
				
				$('loading').innerHTML=loadingMessage;
			}
			
			Preloader.onFinish(startPhotoShow);
			Preloader.load();
		}, 
				
		cycle: function() {
			
			if(current<number){
				current++;
			}else{
				current=0;
			}
			
			doChange(0);
		}
	}
	
	window.onload = album.startup
}

function restartPhotoShow(){
	$('pause').className='';
	$('play').className='active';
	
	clearInterval(interval);
	interval=setInterval(album.cycle, intervalTime);
}

function pausePhotoShow(){
	$('pause').className='active';
	$('play').className='';
	
	clearInterval(interval);
}

function rewindPhotoshow(){
	$('pause').className='';
	$('play').className='active';
	
	current=0;
	doChange(0);	
}

function moveTo(container, element){
	Position.prepare();
	container_y = Position.cumulativeOffset($(container))[1]
	element_y = Position.cumulativeOffset($(element))[1]
	new Effect.ScrollTo(container, {x:0, y:(element_y-container_y)});
	return false;
}

function doChange(transition){
	if((g==false && transition==0) || (g==false && currently_showing!=current)){
		currently_showing=current;
				
		clearInterval(interval);
		//g=true;
		
		$('display').innerHTML='';
		$('display').style.display='none';
		$('caption').innerHTML='';
		$('caption').style.display='none';
		
		resetThumbs(current);
		var url    = subfolder+'/inc/image.php?image='+$('thumb'+current).href;
		var myAjax = new Ajax.Request( url, {method: 'get', onComplete: (transition==0 ? showImage : showInstant)} );
	}
}

function showImage (originalRequest) {
	$('display').innerHTML=originalRequest.responseText;
	
	new Effect.Appear('display', {
		duration: .5,
		delay: .25,
		afterFinish: function() { 
			//g=false;
			showCaption();
		}
	});
	
	interval=setInterval(album.cycle, intervalTime);
}

function showInstant (originalRequest) {
	$('display').style.display='block';
	$('display').innerHTML=originalRequest.responseText;
	
	showCaption();
		
	//g=false;
	
	//timeout=setTimeout(restartPhotoShow, 5000);
}

function removePhoto(element, dropon, event) {
	if(dropon.id=='remove' && element.rel=='order' && adding==false){
		adding=true;
	
		removeData(element.href);
	}
}
function addPhoto(element, dropon, event) {
	if((dropon=='dbl' || (dropon.id=='strip' && element.rel=='thumb')) && adding==false){
		adding=true;
	
		addData(element.href);
	}
}

function removeData (image) {
	var url    = subfolder+'/inc/strip.php';
	var pars   = 'remove=' + image;
	var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onLoading: showLoad, onLoaded: hideLoad, onComplete: showResponse} );
}
function addData (image) {
	var url    = subfolder+'/inc/strip.php';
	var pars   = 'image=' + image;
	var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onLoading: showLoad, onLoaded: hideLoad, onComplete: showResponse} );
}

function removeAll () {
	var url    = subfolder+'/inc/strip.php';
	var rand   = Math.random(9999);
	var pars   = 'clear=1&rand=' + rand;
	var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onLoading: showLoad, onLoaded: hideLoad, onComplete: showResponse} );
}

function showResponse (originalRequest) {
	$('strip').innerHTML = originalRequest.responseText;
	
	adding=false;
	
	setupThumbs(1);
}

function showCaption(){
	$('caption').innerHTML='<p>' + $('thumb'+current).title + '</p>';
	$('caption').style.display='block';
}

function selectPhoto(selectedPhoto){
	if(adding==false && g==false){
		current=selectedPhoto.replace('thumb', '');
		current=parseInt(current);
		
		clearInterval(interval);
		clearTimeout(timeout);
		
		$('pause').className='active';
		$('play').className='';
		
		doChange(1);
	}
}

function setupThumbs(action){
	var d=0;
	var r=0;
	
	if (!document.getElementsByTagName){ return; }

	var anchors = document.getElementsByTagName('a');
	
	for (var x=0; x<anchors.length; x++){
		var anchor = anchors[x];
		
		var relAttribute = String(anchor.getAttribute('rel'));
				
		if (relAttribute=='thumb' && action==0){
			new Draggable(anchor.id, {ghosting:true, revert:true})
			
			anchor.style.cursor='move';
			
			anchor.onclick = function() {
				return false;
			};
			
			anchor.ondblclick = function() {
				addPhoto(this, 'dbl');
				return false;
			};
			
			anchor.onmouseover = function() {
				selectPhoto(this.id);
			};
			
			d++;
			
		}else if (relAttribute=='order'){
			new Draggable(anchor.id, {ghosting:true, revert:true})
			
			anchor.style.cursor='move';
			
			anchor.onclick = function() {
				return false;
			};
			
			r++;
		}
	}
	
	if(d!=0){
		Droppables.add('strip', {hoverclass: 'dropzone',onDrop:addPhoto});
	}
	
	if(r!=0){
		Droppables.add('remove', {onDrop:removePhoto});
		
		$('remove_all').onclick = function() {
			removeAll();
			return false;
		};
	}
}


function resetThumbs(selected){
	if (!document.getElementsByTagName){ return; }

	var anchors = document.getElementsByTagName('a');
	
	for (var x=0; x<anchors.length; x++){
		var anchor = anchors[x];
		
		var relAttribute = String(anchor.getAttribute('rel'));
				
		if (relAttribute=='thumb'){
			anchor.className='';
		}
	}
	
	$('thumb'+selected).className='active';
}

function setupControls(){
	$('play').onclick = function() {
		restartPhotoShow();
		return false;
	};
	
	$('pause').onclick = function() {
		pausePhotoShow();
		return false;
	};
			
	$('rewind').onclick = function() {
		rewindPhotoshow();
		return false;
	};
}


function loading(action){
	if(action==1){
		$('strip').className='dropzone';
		loadingC='<p>Loading <img src="'+subfolder+'/images/loading.gif" width="16" height="16" alt="Loading..." /></p>';
	}else{
		$('strip').className='drop';
		loadingC='';
	}
	$('loading').innerHTML=loadingC;
}

function showLoad(){
	$('strip').className='dropzone';
	loadingC='<p>Loading <img src="'+subfolder+'/images/loading.gif" width="16" height="16" alt="Loading..." /></p>';
	$('loading').innerHTML=loadingC;
}

function hideLoad(){
	$('strip').className='drop';
	loadingC=loadingMessage;
	$('loading').innerHTML=loadingC;
}



function checkOrder(id, first){
	div=(first==1 ? 'add_'+id : 'photo_'+id);
	
	if(g == false){
		//g=true;
		
		var url = subfolder+'/inc/order_photo.php?first='+first+'&id='+id;
		var pars = Form.serialize($('photoform'));
		
		if(first==1){
			new Ajax.Updater(
				div,
				url,
				{
				method: 'post',
				parameters: pars,
				onLoading: function() {
					//loading(div, 1);
				},
				onComplete: function(t) {
					//g=false;
					updateOrder();
				},
				onLoaded: function() {
					//loading(div, 0);
				}
			});
		}else{
			new Ajax.Updater(
				div,
				url,
				{
				method: 'post',
				parameters: pars,
				insertion: Insertion.Bottom,
				onLoading: function() {
					//loading(div, 1);
				},
				onComplete: function(t) {
					//g=false;
				},
				onLoaded: function() {
					//loading(div, 0);
				}
			});
		}
	}
	
	return false;
}


function updateOrder(){
	div='order_total';
	
	if(g == false){
		//g=true;
		
		var url = subfolder+'/inc/order_update.php';
		var pars = Form.serialize($('photoform'));
		
		new Ajax.Updater(
			div,
			url,
			{
			method: 'post',
			parameters: pars,
			onLoading: function() {
				//loading(div, 1);
			},
			onComplete: function(t) {
				//g=false;
			},
			onLoaded: function() {
				//loading(div, 0);
			}
		});
	}
	
	return false;
}


function removeOrder(id, array_count){
	var span = document.getElementById('photo_'+id);
	var oldspan = document.getElementById('photoinner_'+id+'_'+array_count);
	span.removeChild(oldspan);
	
	updateOrder();
}


function setRadio(selectBox, radio){
	var selectValue=selectBox.options[selectBox.selectedIndex].value;
	
	if(selectValue!=''){
		$(radio).checked=true;
	}else{
		$(radio).checked=false;
	}
}


function stopRKey(evt){
	var evt = (evt) ? evt : ((event) ? event : null);
	var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	if ((evt.keyCode == 13) && (node.type=="text"))  {return false;}
} 


function checkForm(theForm){
	if(theForm==0){
		var checkThese=new Array(
			'name|',
			'email|',
			'phone|',
			'address|'
		);
	}
	
	return checkLoop(checkThese);
}



function checkLoop(checkTheseArray){
	var elementType;
	var elementName;
	var elementDefault;
	var elementValue;
	var elementObject;
	var valuesArray;

	var email_regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
	for (var loop=0;loop<checkTheseArray.length;loop++){
		valuesArray=checkTheseArray[loop].split("|");
		
		elementObject=$(valuesArray[0]);
		elementDefault=valuesArray[1];

		elementType=elementObject.type;
		elementName=elementObject.name.toLowerCase();
		elementValue=elementObject.value;
		
		if((elementValue==""||elementValue==elementDefault)&&(elementType=="text" || elementType=="password")){
			elementObject.className='alert';
			elementObject.focus();
			return false;
		}else if((elementValue==""||elementValue==elementDefault)&&(elementType=="textarea")){
			elementObject.className='alert';
			elementObject.focus();
			return false;
		}else if((elementType=="select-one")&&(elementObject.options[elementObject.selectedIndex].value)==elementDefault){
			elementObject.className='alert';
			elementObject.focus();
			return false;
		}else if((elementName.toLowerCase().match("email"))&&(elementType=="text")&&(!email_regex.test(elementValue))){
			elementObject.className='alert';
			elementObject.focus();
			return false;
		}else if((elementObject.checked==false)&&(elementType=="checkbox")){
			elementObject.className='alert';
			elementObject.focus();
			return false;
		}else{
			if(elementType=="checkbox"){
				elementObject.className='';
			}else{
				elementObject.className='';
			}
		}
	}
	
	$('submitbtn').disabled=true;
	return true;
}

function website(url){
	newWindow = window.open(url, '_blank','');
	newWindow.focus();
}

document.onkeypress = stopRKey;