function bindShippingPrice() {
	var nationalShipping = $('item_shipping_national');
	var nationalShippingPrice = $('item_shipping_national_price');
	
	if(nationalShipping && nationalShippingPrice) {
		nationalShippingPrice.parentNode.style.display = nationalShipping.checked ? "block" : "none";
		
		nationalShipping.onclick = function() {
			var nationalShippingPrice = $('item_shipping_national_price');
			
			nationalShippingPrice.parentNode.style.display = this.checked ? "block" : "none";
		}
	}
	
	var internationalShipping = $('item_shipping_international');
	var internationalShippingPrice = $('item_shipping_international_price');

	if(internationalShipping && internationalShippingPrice) {
		internationalShippingPrice.parentNode.style.display = internationalShipping.checked ? "block" : "none";
		
		internationalShipping.onclick = function() {
			var internationalShippingPrice = $('item_shipping_international_price');
			
			internationalShippingPrice.parentNode.style.display = this.checked ? "block" : "none";
		}
	}
}

function bindLocationAutoComplete() {
	// Bind the the autocomplete to the location search box
	var children = [ $('search_location'), $('item_location') ];

	for(i = 0; i < children.length; i++) {
		child = children[i];
		if(child) {
			// Create div for the results to go to
			var results = document.createElement('div');
			results.id = child.id + '_results';
			results.className = 'autocomplete_results';
			
			child.parentNode.appendChild(results);
	
			var autoComplete = new Ajax.Autocompleter(
				child.id, 
				child.id + '_results',
				'/locations/index.partial', 
				{
					paramName: 'query',
					minChars: 1
				}
			);
		}
	}
}

function bindPayPalForm() {
	var payPalForm = $('paypal_form');
	if(payPalForm) {
		payPalForm.submit();
	}
}

function displayError(message) {
	alert(message);
}

function showImageSpinner() {
	var secondaryImages = $('images');
	if(secondaryImages) {
		var spinner = document.createElement('img');
		spinner.src = "/images/spinner.gif";
		spinner.setAttribute('alt', 'Please wait...');
		spinner.id = 'image-spinner';
		spinner.className = 'spinner';
		secondaryImages.appendChild(spinner);
	}
}

function hideImageSpinner() {
	var spinner = $('image-spinner');

	if(spinner) {
		spinner.parentNode.removeChild(spinner);
	}
}

function displayImages() {
	var images = $('images-inputs');
	var primaryImage = $('primary-image');
	var secondaryImages = $('images');

	if(images && primaryImage && secondaryImages) {
		while(primaryImage.childNodes.length > 0) {
			primaryImage.removeChild(primaryImage.firstChild);
		}
		
		while(secondaryImages.childNodes.length > 0) {
			secondaryImages.removeChild(secondaryImages.firstChild);
		}

		var inputs = images.getElementsByTagName('input')
		
		for(var i = 0; i < inputs.length; i++) {
			var span = document.createElement('span');
			span.className = "image";

			var newImage = document.createElement('img');
			if(i == 0) {
				newImage.src = "/images/view?file=" + inputs[i].value + "&width=120&height=120";
			} else {
				newImage.src = "/images/view?file=" + inputs[i].value + "&width=80&height=80";
			}
			newImage.setAttribute('alt', inputs[i].value);
			span.appendChild(newImage);

			if(i == 0) {
				newImage.setAttribute('width', 120);
				newImage.setAttribute('height', 120);
			} else {
				newImage.setAttribute('width', 80);
				newImage.setAttribute('height', 80);
			}

			var deleteLink = document.createElement('a');
			deleteLink.setAttribute('rel', inputs[i].value);
			deleteLink.href = "javascript:void(null);";

			deleteLink.onclick = function() {
				deleteImage(this.getAttribute('rel'));
				return false;
			}
			deleteLink.innerHTML = "Delete";
			deleteLink.className = "delete-image";
			span.appendChild(deleteLink);

			if(i == 0) {
				primaryImage.appendChild(span);
			} else {
				secondaryImages.appendChild(span);
			}
		};
	}
}

function addImage(path) {
	var images = $('images-inputs');
	if(images) {
		// Add the hidden field
		var imageInput = document.createElement('input');
		imageInput.name = "images[][path]";
		imageInput.value = path;
		imageInput.type = "hidden";
		images.appendChild(imageInput);

		displayImages();
	}
}

function deleteImage(path) {
	var images = $('images-inputs');

	if(images) {
		var tooRemove = null;
		var i = 0;
		while(tooRemove == null && i < images.childNodes.length) {
			if(images.childNodes[i].value == path) {
				tooRemove = images.childNodes[i];
			}
			i++;
		}
		if(tooRemove != null) {
			tooRemove.parentNode.removeChild(tooRemove);
		}

		// Make an Ajax Request to remove the file

		displayImages();
	}
}

function addUploader() {
	var uploader = $('uploader');
	if(uploader) {
		if(uploader.tagName.toLowerCase() == "form") {
			var receiver = new ImageUploaderReceiver();
			var error = $('error');
			var currentImage = $('current-image');
			
			if(error) {
				receiver.error(error.innerHTML);
				error.parentNode.removeChild(error);
			}

			if(currentImage) {
				receiver.uploaded(currentImage.getAttribute('alt'));
				currentImage.parentNode.removeChild(currentImage);
			}

			uploader.onsubmit = function() {
				receiver.uploadStarted();
			}

			window.onload = function() {
				receiver.uploadFinished();
			}
		} else {
			var caller = new ImageUploaderCaller(
				uploader, 
				'/images/uploader.iframe?sender=uploader',
				{
					errorCallback: displayError,
					uploadedCallback: addImage,
					uploadStartedCallback: showImageSpinner,
					uploadFinishedCallback: hideImageSpinner
				}
			);
		}
	}
	displayImages();
}

function setupDefaultSearch() {
	var searchForm = $('search_form');
	
	searchQuery = $('search_query');
	searchLocation = $('search_location');

	searchDefault = "(eg \"Laptop\")";
	locationDefault = "(eg \"South Perth WA\")";

	if(searchForm) {
		searchForm.onsubmit = function() {
			if(searchQuery) {
				if(searchQuery.value == searchDefault) {
					searchQuery.value = "";
				}
			}
			
			if(searchLocation) {
				if(searchLocation.value == locationDefault) {
					searchLocation.value = "";
				}
			}
		}
	}

	if(searchQuery) {
		if(searchQuery.value == "") {
			searchQuery.value = searchDefault;
			searchQuery.addClassName("default");
		}

		searchQuery.onfocus = function() {
			if(this.value == searchDefault) {
				this.value = "";
				searchQuery.removeClassName("default");
			}
		}

		searchQuery.onblur = function() {
			if(this.value == "") {
				this.value = searchDefault;
				searchQuery.addClassName("default");
			}
		}
	}

	if(searchLocation) {
		if(searchLocation.value == "") {
			searchLocation.value = locationDefault;
			searchLocation.addClassName("default");
		}

		searchLocation.onfocus = function() {
			if(this.value == locationDefault) {
				this.value = "";
				searchLocation.removeClassName("default");
			}
		}

		searchLocation.onblur = function() {
			if(this.value == "") {
				this.value = locationDefault;
				searchLocation.addClassName("default");
			}
		}
	}

}

function editUntil(element, limit) {
	if(element) {
		var timer = setInterval(function() {
			left = Math.ceil((limit - (new Date().getTime() / 1000)) / 60);
			if(left <= 0) {
				clearInterval(timer);
				Effect.Fade(element.parentNode);
				// Remove the edit link
				var editLink = $('edit');
				if(editLink) {
					Effect.Fade(editLink);
				}
			} else {
				element.innerHTML = left + " minute" + (left == 1 ? "" : "s");
			}
			},
		10000);
	}
}

function onDomLoad() {
	bindPayPalForm();
	bindShippingPrice();
	bindLocationAutoComplete();
	setupDefaultSearch();
	addUploader();
}

FastInit.addOnLoad(onDomLoad);
