function imgpreload(a,b){if(b instanceof Function){b={all:b}}if(typeof a=="string"){a=[a]}var c=[];var t=a.length;var i=0;for(i;i<t;i++){var d=new Image();d.onload=function(){c.push(this);if(b.each instanceof Function){b.each.call(this)}if(c.length>=t&&b.all instanceof Function){b.all.call(c)}};d.src=a[i]}}if(typeof jQuery!="undefined"){(function($){$.imgpreload=imgpreload;$.fn.imgpreload=function(b){b=$.extend({},$.fn.imgpreload.defaults,(b instanceof Function)?{all:b}:b);this.each(function(){var a=this;imgpreload($(this).attr('src'),function(){if(b.each instanceof Function){b.each.call(a)}})});var c=[];this.each(function(){c.push($(this).attr('src'))});var d=this;imgpreload(c,function(){if(b.all instanceof Function){b.all.call(d)}});return this};$.fn.imgpreload.defaults={each:null,all:null}})(jQuery)}
function setCaption(currSlideElement, nextSlideElement, options, forwardFlag) {
	$(currSlideElement).children('.gallery-caption').animate({ top : '347px' }, 500, function() {
		var captionHeight = $(nextSlideElement).children('.gallery-caption').height();
		var galleryHeight = $('#gallery').height();
		var newCaptionHeight = galleryHeight - captionHeight - 15;
		$(nextSlideElement).children('.gallery-caption').delay(100).animate({ top : newCaptionHeight }, 500);
	});
}
$(function() {
	if ($('.form_submit').length > 0) {
		var forms_number = $('.form_submit').length;
		if (forms_number > 1) {
			$('.form_submit').each(function() {
				var frm = $(this);
				var identity = frm.attr('id');
				$.getJSON("/token/key/" + identity, function(data){
					frm.append($("<input/>", { type: "hidden", "class": "sectoken", name: identity}).val(data.token));
				});
			});
		} else {
			var identity = $('.form_submit').attr('id');
			$.getJSON("/token/key/" + identity, function(data){
		        $('.form_submit').append($("<input/>", { type: "hidden", "class": "sectoken", name: identity}).val(data.token));
		    });
		}
		resendActivation();
		submitForm();		
	}
});
function submitForm() {
	$('.form_submit').submit(function() {	
		$('.warn').remove();	
		var frm = $(this);		
		var tag = $(this).hasClass('wrapDiv') ? 'div' : 'span';		
		var url = frm.attr('action');
		var data = $(this).serializeArray();
		var radios = frm.find('input:radio');
		var checks = frm.find('input:checkbox');
		var proceed = true;
		$.each(radios, function(index, value) {
			var elem = frm.find('input[name='+radios[index].name+']');
			if (elem.hasClass('required') && $("input:radio[name="+radios[index].name+"]:checked").length === 0) {
				var val = elem.attr('title');
				if ($('.label_' + radios[index].name).find('.warn').length == 0) {
					$('.label_' + radios[index].name).append('<'+tag+' class="warn">'+val+'</'+tag+'>');
				}
				proceed = false;
			}
		});
		$.each(checks, function(index, value) {
			var elem = frm.find('input[name='+checks[index].name+']');
			if (elem.hasClass('required') && $("input[name="+checks[index].name+"]:checked").length === 0) {
				var val = elem.attr('title');
				$('.label_' + checks[index].name).append('<'+tag+' class="warn">'+val+'</'+tag+'>');
				proceed = false;
			}
		});
		$.each(data, function(index, value) {
			var elem = frm.find('[name='+data[index].name+']');
			if (elem.hasClass('required') && elem.val() === '') {
				var val = elem.attr('title');
				$('.label_' + data[index].name).append('<'+tag+' class="warn">'+val+'</'+tag+'>');
				proceed = false;
			}
		});
		if (proceed === true) {
			
			var trigger = frm.find('a.button');
			var clss = trigger.hasClass('fl_r') ? ' fl_r' : '';
			var trigger_clone = trigger.clone();
			var btn = '<span class="button button_grey button_processing'+clss+'">Processing...</span>';
			trigger.replaceWith(btn);
			
			$.ajax({
				type: 'POST',
				url: url,
				data: data,
				dataType: 'json',
				success: function(data) {
					if (data.error === false) {
						switch(data.proceed) {
							case 'redirect':
							window.location = data.callback;
							break;
							default:
							frm.wrap('<div class="form_container">');
							frm.fadeOut('fast', function() {
								$(this).html(data.callback).fadeIn('fast');
							});
						}						
					} else {
						frm.find('.button_processing').replaceWith(trigger_clone);
						$('input[type=password]').val('');
						if ($(data.validation).length > 0) {
							$.each(data.validation, function(k, v) {
								$('.label_' + k).append(v);
							});
						}
						$.get("/token/key/" + frm.attr('id'), function(data){
							frm.children('.sectoken').val(data.token);
						}, 'json');						
					}
				}
			});
		} else {
			$('input[type=password]').val('');
		}
		return false;
	});
}
function resendActivation() {
	$('#resend_activation').live('click', function() {
		var email = $(this).attr('rel');
		var frm = $(this).closest('form');
		$.getJSON('/resend/email/' + email, function(data) {
			frm.wrap('<div class="form_container">');
			frm.fadeOut('fast', function() {
				$(this).html(data.callback).fadeIn('fast');
			});
		});
		return false;
	});
}
$(document).ready(function(){
	
	$('#gallery-photos img').imgpreload(function() {
		$('#gallery-photos').cycle({
			before: setCaption,
			pager:  '#gallery-navigation',
			activePagerClass: 'active',
			timeout: 8000,
			delay: 2000
		});
	});
	
	$('.submit').live('click', function() {
		$(this).closest('form').submit();
		return false;
	});
	
	$('input').keypress(function(e){
		if (e.which == 13){
			$(this).closest('form').submit();
			return false;
	    }
	});
	
	if ($('.slide_trigger').length > 0) {
		$('.slide_trigger').click(function() {
			var target = $(this).attr('rel');
			$('#' + target).slideToggle('fast');
			return false;
		});
	}
	
	$('.add-pet').live('click', function() {
		var trigger = $(this);
		var numb = $(this).attr('rel');
		var numb_previous = parseInt(numb, 10) - 1;
		var ttable = $(this).closest('div.table-wrapper');
		$.getJSON('/pet/action/new-row/number/'+numb, function(data) {
			ttable.after(data.row);
			trigger.remove();
			$('#table-wrapper-'+numb_previous).find('.remove-pet').remove();
		});
		return false;
	});
	
	$('.remove-pet').live('click', function() {
		var trigger = $(this);
		var numb = $(this).attr('rel');
		var numb_previous = parseInt(numb, 10) - 1;
		if (numb_previous > 1) {
			var tr = '<tr><td colspan="2">';
			tr += '<a href="#" class="button-minus remove-pet" rel="'+numb_previous+'">Remove this pet</a>';
			tr += '<a href="#" class="button-plus add-pet" rel="'+numb+'">Add another pet</a>';
			tr += '</td></tr>';
			$('#table-wrapper-'+numb_previous).children('table').after(tr);
		} else {
			var tr = '<tr><td colspan="2">';
			tr += '<a href="#" class="button-plus add-pet" rel="'+numb+'">Add another pet</a>';
			tr += '</td></tr>';
			$('#table-wrapper-'+numb_previous).children('table').after(tr);
		}
		var ttable = $(this).closest('div.table-wrapper');
		ttable.remove();
		return false;
	});
	
	$('.select_species').live('change', function() {
		var id = $(this).attr('id');
		if ($(this).val() == 4) {
			numb = id.split('_');
			var tr = $(this).closest('tr');
			$.getJSON('/pet/action/species/number/'+numb[1], function(data) {
				tr.after(data.row);
			});
		} else {			
			$('.'+id).remove();
		}
		return false;
	});
	
	$('#vet_currently').live('change', function() {
		if ($(this).val() == 1) {
			$.get('/login/action/current-vet', function(data) {
				$('#vet_currently_container').html(data);
			}, 'html');
		} else {			
			$('#vet_currently_container').html('');
		}
		return false;
	});
	
	if ($('.select_show').length > 0) {
		$('.select_show').live('change', function() {
			var v = $(this).val();	
			var id = $(this).attr('id');
			var target = '.'+id+'_'+v;			
			var arr = $('#'+id+' option');
			var values = $.map(arr, function(elt, i) { 
				var vl = $(elt).val(); 
				return id+'_'+vl; 
			});
			$.each(values, function(k, vl) {
				if (!$('.' + vl).hasClass('dn')) {
					$('.' + vl).addClass('dn');
				}
			});
			if (v != '') {
				$(target).removeClass('dn');
			}
		});
	}
	
});
