if (typeof jQuery != "undefined") {
	var $j = jQuery.noConflict();
}

var gallery ={
    sendToFriend: function() {
        var isFormValid = true;
        var isToEmailAddress = tao.form.validateElement($('sent_email_address_to'), 'required', 'Please enter your email address');
        var isFromEmailAddress = tao.form.validateElement($('sent_email_address_from'), 'required', 'Please enter your email address');
        var isToEmailAddressValid = tao.form.validateElement($('sent_email_address_to'), 'emailAddress', 'Invalid email address');
        var isFromEmailAddressValid = tao.form.validateElement($('sent_email_address_from'), 'emailAddress', 'Invalid email address');
        isFormValid &= isToEmailAddress;
        isFormValid &= isFromEmailAddress;
        isFormValid &= isToEmailAddressValid;
        isFormValid &= isFromEmailAddressValid;
        isFormValid &= tao.form.validateElement($('sent_name_to'), 'required', 'Please enter the name of the friend');
        isFormValid &= tao.form.validateElement($('sent_name_from'), 'required', 'Please enter your name');
        if (isFormValid) {
                xajax_sendToFriend(xajax.getFormValues('gallery_send_form'));
        }
    }
}

var ca = {
	init: function() {
		ca.venue.init();
	},	
	venue: {
		init: function() {
				$('venue_list_dropdown').observe('change', ca.venue.goToVenueUrl);
		},
		goToVenueUrl: function(event) {
			var url = $F(event.element());
			if(url[0] == '/') {
				location = url;
			}
		},
		submitEnquiryForm: function() {
		    var isFormValid = true;
            if ($('enquiry_form_venue_list_dropdown')) {
                isFormValid &= tao.form.validateElement($('enquiry_form_venue_list_dropdown'), /\d/, 'Please select a venue');
            }
            if ($('enquiry_form_date')) {
                isFormValid &= tao.form.validateElement($('enquiry_form_date'), 'required', 'Please select party date');
            }
            if ($('enquiry_form_enquiry_type')) {
                isFormValid &= tao.form.validateElement($('enquiry_form_enquiry_type'), 'required', 'Please select enquiry type');
            }
            isFormValid &= tao.form.validateElement($('enquiry_form_name'), 'required', 'Please enter your name');
            var isEmailAddressValid = tao.form.validateElement($('enquiry_form_email_address'), 'required', 'Please enter your email address');
            isEmailAddressValid &= tao.form.validateElement($('enquiry_form_email_address_confirm'), function(){return $F('enquiry_form_email_address') == $F('enquiry_form_email_address_confirm');}, 'Please ensure the email addresses match');
            
            isFormValid &= isEmailAddressValid;
            isFormValid &= tao.form.validateElement($('enquiry_form_telephone'), 'required', 'Please enter your telephone');
            isFormValid &= tao.form.validateElement($('enquiry_form_date_of_birth'), 'required', 'Please enter your date of birth');
            if (isFormValid) {
                xajax_submitEnquiryForm(xajax.getFormValues('enquiry_form'));
            }
		},
		loadAddressGoogleMap: function(position) {
			var mapOptions = {
		      scrollwheel: false,
		      zoom: 15,
		      mapTypeId: google.maps.MapTypeId.ROADMAP
		    };
		    var map = new google.maps.Map(document.getElementById("venue_address_google_map"), mapOptions);

	    	var marker = new google.maps.Marker({
	    		position: position
	    	});
	        marker.setMap(map);
		    map.setCenter(position);
		}
	},
	events: {
        init: function() {
            Sortable.create('eventsList',{
                onUpdate:function() {
                    xajax_reorderEvents(Sortable.serialize('eventsList'))
                }});
        },
        datepickerSelect: function(dateText) {
        	xajax_changeTicketDate(dateText);
        }
    },
	newsArticle: {
		init: function() {
			Sortable.create('newsArticles',{
				onUpdate:function() {
					xajax_reorderNewsArticles(Sortable.serialize('newsArticles'))
				}});
		}
	},
	playlist: {
		init: function() {
			Sortable.create('playlists',{
				onUpdate:function() {
					xajax_reorderPlaylists(Sortable.serialize('playlists'))
				}});
		}
	},
	dj: {
		init: function() {
			Sortable.create('djs',{
				onUpdate:function() {
					xajax_reorderDjs(Sortable.serialize('djs'))
				}});
		}
	}
};

shop.user.signinCheckout = function(errorMessageClass) {
    var validEmailAddress = tao.form.validateElement($('sign_in_email_address_checkout'), 'emailAddress', 'Please enter a valid email address', errorMessageClass);
    var validPassword = tao.form.validateElement($('sign_in_password_checkout'), 'password', 'Please enter a password of 6 characters or more', errorMessageClass);
    if (validEmailAddress && validPassword) {
        xajax_userSignIn($F('sign_in_email_address_checkout'), $F('sign_in_password_checkout'));
    } else {
        shop.display.validationWarn();
    }

},

shop.user.register = function() {
    var validName = tao.form.validateElement($('register_first_name'), 'required', 'Please enter a first name');
    validName &= tao.form.validateElement($('register_last_name'), 'required', 'Please enter a surname');
    validName &= tao.form.validateElement($('register_mobile_number'), 'mobileNumber', 'Please enter a valid mobile number');
    var validEmailAddress = tao.form.validateElement($('register_email_address'), 'emailAddress', 'Please enter a valid email address');
    validEmailAddress &= tao.form.validateElement($('register_confirm_email_address'), function(){return $F('register_email_address') == $F('register_confirm_email_address');}, 'Please ensure your confirmation email address matches your main address');
    var validPassword = tao.form.validateElement($('register_password'), 'password', 'Please choose a password of 6 characters or more');
    if (true == validPassword) validPassword &= tao.form.validateElement($('register_password'), function(password){return !['password', 'password123'].member(password)}, 'This password is too obvious - please choose another');
    validPassword &= tao.form.validateElement($('register_confirm_password'), function(){return $F('register_password') == $F('register_confirm_password');}, 'Please ensure your confirmation password matches your main password');
    var validForm = (validName && validEmailAddress && validPassword);
    if (validForm) {
        xajax_userRegister(xajax.getFormValues('register_form'));
    } else {
        shop.display.validationWarn();
    }
}

shop.user.saveProfile = function() {
    var validName = tao.form.validateElement($('profile_first_name'), 'required', 'Please enter a first name');
    validName &= tao.form.validateElement($('profile_last_name'), 'required', 'Please enter a surname');
    validName &= tao.form.validateElement($('profile_mobile_number'), 'mobileNumber', 'Please enter a valid mobile number');
    var validEmailAddress =tao.form.validateElement($('profile_email_address'), 'emailAddress', 'Please enter a valid email address');
    var validForm = (validName && validEmailAddress);
    if (validForm) {
        xajax_saveUserProfile(xajax.getFormValues('profile_form'));
    } else {
        shop.display.validationWarn();
    }

}

shop.user.saveBillingAddress = function() {
    var validName   = tao.form.validateElement($('ba_first_name'), 'required', 'Please enter a first name');
    validName      &= tao.form.validateElement($('ba_last_name'), 'required', 'Please enter a last name');
    var validLine1  = tao.form.validateElement($('ba_line1'), 'required', 'Please enter the first line of your address');
    var validCode   = tao.form.validateElement($('ba_postcode'), 'required', 'Please enter a valid post/zip code');
    var validForm   = (validName && validLine1 && validCode);
    if (validForm) {
        xajax_saveBillingAddress(xajax.getFormValues('billing_address_form'));
    } else {
        shop.display.validationWarn();
    }
}

shop.checkout.isCheckoutComplete = function() {
    return shop.checkout.isPaymentDataValid();
}

shop.checkout.isPaymentDataValid = function() {
    if (!shop.checkout.isPaymentRequired()) return true;
    return tao.form.validateElement($('billing_address'), 'nonzero', 'Please choose a billing address');    
}

shop.checkout.getOrderDataForSubmission = function() {
    var orderData = new Hash();
    orderData.set('deliveryAddressId', $F('billing_address'));
    orderData.set('billingAddressId', $F('billing_address'));
    orderData.set('deliveryMethod', 'N\A');
    orderData.set('isSagePay', 1);
    return orderData;
}

var $j=jQuery;

$j(function() {
	$j('.datepicker').datepicker({dateFormat: 'yy-mm-dd'});
	$j('.datepicker_event_list').datepicker({
			 dateFormat: 'yy-mm-dd',
			 onSelect: ca.events.datepickerSelect
	});
	$j('.datepicker_dob').datepicker({
	    defaultDate: '-25y', 
	    yearRange: '1930:1995',
	    dateFormat: 'yy-mm-dd',
        changeMonth: true,
        changeYear: true
	});
});

Tiny.tinyConfigs['default'] = {
    mode: "specific_textareas",
    plugins: "spellchecker,media",
    theme: "advanced",
    theme_advanced_toolbar_align : "left",
    theme_advanced_toolbar_location: "top",
    theme_advanced_buttons1: "undo,redo,|,bold,italic,underline,strikethrough,forecolor,|,fontselect,fontsizeselect,formatselect,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist,indent,outdent",
    theme_advanced_buttons2: "link,unlink,image,media,flash,|,spellchecker,charmap,code",
    theme_advanced_buttons3: "",
    convert_urls: false,
    theme_advanced_statusbar_location: "bottom",
    theme_advanced_path: false,
    theme_advanced_resize_horizontal: true,
    theme_advanced_resizing: true,
    cleanup_on_startup: true,
    apply_source_formatting: true,
    extended_valid_elements: "object[width|height],param[name|value],embed[src|type|wmode|width|height]",
    width: "100%",
    height: "300px",
    spellchecker_rpc_url: "js/common/tiny_mce/plugins/spellchecker/rpc.php",
    document_base_url: "/"
}

document.observe("dom:loaded", function() {
	ca.init();
});


