var Jamiedia = {
	callbackURL: '/new/callback',
	contactURL: '/new/contact/',
	getFullURL: function(url) {
		return 'http://'+document.domain+url;
	},
	bookmarkPage: function(_title) {
		var url = window.location;
		var title = (typeof(_title) == "undefined" ? document.title : _title);
		
		var ua=navigator.userAgent.toLowerCase();
		var isSafari = (ua.indexOf('webkit') != -1);
		
		if (window.sidebar) {
			// firefox
			window.sidebar.addPanel(title, url, "");
		}
		else if (isSafari) {
			// Safari
			alert('Press CTRL+D to bookmark this site.');
		}
		else if (window.opera) {
			// opera
			alert('Press CTRL+D to bookmark this site.');
		} 
		else if (document.all) {
			// ie
			window.external.AddFavorite(url, title);
		}
		
		return false;
	},
	printPage: function() {
		window.print();
		return false;
	},
	initSitemap: function() {
		var sitemap = $('#sitemap');
		sitemap.addClass('collapsible');
		
		// Hide the sitemap panel if the css specifies a collapsed sitemap
		if (sitemap.hasClass('collapsed'))
			$('#sitemap-panel').hide();
		
		
		// Add toggle handler
		$('#sitemap p a').click(function() {
			sitemap.toggleClass('collapsed');
			$('#sitemap #sitemap-panel').slideToggle('fast');
			
			if (this.blur)
				this.blur();
			
			return false;
		});
	},
	initBoxes: function() {
		var boxes = $('.box');
		
		$.each(boxes, function() {
			
			// Wrap the content of all boxes in containers
			//$(this).children(':gt(0)').wrapAll('<div class="box-content-wrapper"></div>');
			
			// Wrap all headers in a tags
			$(this).children(':eq(0)').wrap('<a href="#" class="collapse-link"></a>');
			
			// Hide this box if it has been hidden by default in the markip
			if ($(this).hasClass('collapsed'))
				$(this).children('.box-content-wrapper').hide();
		});
		
		// Bind click handlers to all wrapped headers
		$('.box .collapse-link').click(function() {
			var parent = $(this).parent();
			
			if (parent.hasClass('collapsed')) {
				parent.children('.box-content-wrapper').slideToggle('fast', function() {
					parent.removeClass('collapsed');
				});
			} else {
				parent.addClass('collapsed');
				parent.children('.box-content-wrapper').slideToggle('fast');
			}
			
			if (this.blur)
				this.blur();
			
			return false;
		});		
	},
	showMessage: function(selector, cls, msg) {
		var block = $(selector);
		
		if (block.hasClass('error'))
			block.removeClass('error');
			
		if (block.hasClass('success'))
			block.removeClass('success');
			
		block.addClass(cls);
		block.html(msg);
		
		block.show().animate({opacity: 1.0}, 3000).fadeOut(3000);
	},
	callback: {
		show: function() {
			var callbackBar = $('#callback-bar');
		
			callbackBar.slideOut('slow');
		},
		hide: function() {
			var callbackBar = $('#callback-bar');
			
			callbackBar.slideIn('slow');
		},
		toggle: function() {
			var callbackBar = $('#callback-bar');
			
			callbackBar.slideToggle('slow');
		},
		init: function() {
			var callbackBar = $('#callback-bar');
			
			// Hide the callback bar
			callbackBar.hide();
			
			// Add the close button
			callbackBar.prepend('<a href="#" class="close-link" title="Close the callback form"><span>Close</span></a>');
			
			// Bind the open and close button
			$('#link-callback, a.close-link').click(function() {
				Jamiedia.callback.toggle();
				
				if (this.blur)
					this.blur();
				
				return false;
			});
			
			// Bind the submit handler
			$('#callback-form').validate({
				rules: {
					name: 'required',
					email: {
						required: true,
						email: true
					},
					phone: 'required'
				},
				messages: {
					name: 'Please specify your name',
					phone: 'Telephone required'
				},
				submitHandler: function(form) {
					$('#callback-ajax-loader').show();
					
					$(form).ajaxSubmit(function(data) {
						if (data == 'success') {
							Jamiedia.showMessage('div.callback-message', 'success', 'Your callback enquiry was succesfully sent!');
							$(form).find('fieldset fieldset :input').val('');
						} else if (data == 'senderror') {
							Jamiedia.showMessage('div.callback-message', 'error', 'An error occured while trying to send your message. Please try again later.');
						} else if (data == 'validationerror') {
							Jamiedia.showMessage('div.callback-message', 'error', 'Please fill out all the form fields.');
						} else {
							alert('Error: '+data);
						}
						
						$('#callback-ajax-loader').hide();
					});
					
					return false;
				}
			});
		}
	},
	contactForm: {
		init: function() {
			// Bind the submit handler
			$('#contact-form').validate({
				errorClass: 'formerror',
				errorLabelContainer: '#contact-form-error-container',
				wrapper: 'p',
				rules: {
					name: 'required',
					email: {
						required: true,
						email: true
					},
					enquiry: 'required'
				},
				messages: {
					name: 'Name is required',
					email: {
						required: 'Email is required',
						email: 'Valid email required'
					},
					enquiry: 'Enquiry is required'
				},
				submitHandler: function(form) {
					$('#contact-form-ajax-loader').show();
					
					$(form).ajaxSubmit(function(data) {
						if (data == 'success') {
							Jamiedia.showMessage('div.contact-message', 'success', 'Your enquiry was sent succesfully!');
							$(form).find('fieldset fieldset :input.textinput').val('');
						} else if (data == 'senderror') {
							Jamiedia.showMessage('div.contact-message', 'error', 'An error occured. Please try again later.');
						} else if (data == 'validationerror') {
							Jamiedia.showMessage('div.contact-message', 'error', 'Please fill out all the form fields.');
						} else {
							alert('Error: '+data);
						}
						
						$('#contact-form-ajax-loader').hide();
					});
					
					return false;
				}
			});			
		}
	}
}

$(document).ready(function() {
	Jamiedia.initSitemap();
	Jamiedia.initBoxes();
	Jamiedia.callback.init();
	Jamiedia.contactForm.init();
	$("#map").fancybox();
	$('#contact-form-container .body').hide();
	$('#contact-form-container h2').click(function(){
		$('#contact-form-container .body').slideToggle('600');
	});
	// Make all radio buttons look pretty
	$('input:radio').checkbox();
	
	// Bind bookmark button
	$('#link-bookmark').click(function() {
		Jamiedia.bookmarkPage();
		return false;
	});
	'wmode', 'transparent'

	// Insert portfolio scroller flash
	var flashVars = {};
	var params = {
		'wmode': 'transparent'
	};
	var attributes = {};
	
	swfobject.embedSWF('resources/scroller.swf', 'portfolio-scroller', '654', '180', '9.0.0', 'expressInstall.swf', flashVars, params, attributes);
});
