$(document).ready(function() {

        $('html').addClass('js');
        $('.nojs').removeClass('nojs');

        $('#slides').slides({
				preload: true,
				preloadImage: '/file/theme/patio/images/loading.gif',
                                autoHeight: true,
				effect: 'slide, fade',
				crossfade: true,
				slideSpeed: 350,
				fadeSpeed: 500,
				generateNextPrev: true,
				generatePagination: false
			});
		
	var labelPlaceholder = '{label}',
        validMsg =  'Please enter your ' + labelPlaceholder,
        enteredMsg = ' must be entered',
        errorMarker = 'errorMarker',
        errorRegion = $('#urlerror'),
        contactForm = $('#form-contact');
		
	$('#login').submit(function() {
		var email = $('#loginEmail').val(),
			password = $('#loginPassword').val();
		if (email == '') {
			Vosao.errorMessage('#login-messages', 'Email is empty!');
		} else {
			Vosao.jsonrpc.loginFrontService.login(function (r, e) {
				if (Vosao.serviceFailed(e)) return;
				if (r.result == 'success') {
					$('#login-messages').html('<span style="color:green">Success. Logging in...</span>');
					document.location.href = r.message;
				} else {
					$('#login-messages').html('<span style="color:red">'
							+ r.message + '</span>');
				}
			}, email, password);
		}
		return false;  
	});

    $('#comments').disqus({
        domain:     "patioie",
        title:      document.title,
        show_count: true
    });

    $('#archive').simpletreeview({
        collapsed: true,
        expand: '0'
    });

    if (contactForm.length > 0) {
    	Recaptcha.create('6LeONc0SAAAAAKNbKOSuJtec2BaonMVmQ-4Jmjfe', 'recaptcha', {theme:'blackglass', callback: Recaptcha.focus_response_field});
    }

	// set up validation plugin
	validator = contactForm.validate( {
		rules: {
			name: {
				required: true
			},
			telephone_number: {
				required: false
			},
			e_mail: {
				required: true,
                                email: true
			},
			subject: {
				required: true
			},
			message: {
				required: true,
                                maxlength: 10000
			}
		},
		messages: {
			name: {
				required: validMsg
			},
			telephone_number: {
				required: validMsg
			},
			e_mail: {
				required: validMsg,
                                email: 'Enter a valid e-mail address'
			},
			subject: {
				required: validMsg
			},
			message: {
				required: validMsg,
                                maxlength: 'Your message is too long'
			}
		},
		showErrors: function(errorMap, errorList) {

			for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
				var validElement = $(elements[i]),
				valparentdd = validElement.closest('dd');

				$('*[errorid="' + validElement.attr('name') + '"]').remove();
				valparentdd.removeClass(errorMarker);
			}
			
			 if ($('li', errorRegion).length === 0) {
				errorRegion.removeClass('error prompt').children().remove(); 
			 }

			for ( var i = 0; this.errorList[i]; i++ ) {
				var error = this.errorList[i],
					element = $(error.element),
					name = element.attr('name'),
					parentdd = element.closest('dd'),
					relatedLabel = $('label[for="'+ name + '"]');

					$('*[errorid="' + name + '"]').remove();

					if (relatedLabel.length === 0) {
						relatedLabel = parentdd.children('span:first');
					}

					if (error.message.indexOf(labelPlaceholder) != -1) {
						var fieldName = relatedLabel.text().replace(/\*|\:/g, '');
						error.message = error.message.replace(labelPlaceholder, fieldName);
					}

					relatedLabel.prepend('<a errorid="' + name + '" id="' + name + 'Error"></a><strong errorid="' + name + '" class="hidden">Error: </strong>');

					$('<em errorid="' + name + '">' + error.message + '</em>').insertAfter(element);

					parentdd.addClass(errorMarker);
					
					if ($('ul', errorRegion).length === 0) {
						errorRegion.addClass('error prompt').append('<h2>Error Instructions</h2><p>Please complete the following before continuing:</p><ul></ul>');                                
					}
					$('ul', errorRegion).append('<li errorid="' + name + '"><a href="#' +  name + 'Error">' + fieldName + '</a> must be completed.</li>');
			}

		},
		submitHandler: function(form) {
			contactForm.ajaxSubmit({
			    dataType:'json',
			    success: function(r) {
			      	if (r.result == 'success') {
				 		errorRegion.removeClass('error prompt').append('<h2>Message Sent</h2>');
				 		$('#form-contact')[0].reset();
			      	}
			      	else {
				 		errorRegion.addClass('error prompt').append('<h2>Failed to send message.</h2><p>' + r.message + '</p>');
			      	}
			      	Recaptcha.reload();
			    },
			    error : function() {
			      	errorRegion.addClass('error prompt').append('<h2>Failed to send message.</h2>');
			      	Recaptcha.reload();
			    }
			});
		}
	   
	});
});
