$(function() {
	// Forms
	$.fn.numericField = function(){
		var me = $(this);
		me.keypress(function(e){
			return ((e.which>=48&&e.which<=57)||e.which==46||e.which==44||e.which==8);
		});
		return me;
	};
	
	$('.normal_box').hover(function(){
		$('.active_box').removeClass('active_box');
		$(this).addClass('active_box');
	},function(){
		$(this).removeClass('active_box');
		$('#first_box').addClass('active_box');
	});

	$('#calendar_panel_close_button').click(function(){
		$('#calendar_panel').slideUp();
		return false;
	}).hover(
		function(){
			var icon = $(this).find('img');
			icon.attr('src',icon.attr('src').replace('close_rate_panel_off','close_rate_panel'));
		},
		function(){
			var icon = $(this).find('img');
			icon.attr('src',icon.attr('src').replace('close_rate_panel','close_rate_panel_off'));
		}
	);
        $('.CalendarTrigger').click(function(){
            $('#calendar_panel').slideDown();
            return false;
        });
        $('#calendar_panel').each(function(){
            var me = $(this);
            var prev = me.find('#calendar_prev');
            var next = me.find('#calendar_next');
            var months = me.find('#calendar_month li');
            var wrapper = me.find('#calendar_wrapper');
            var event_date = me.find('#calendar_event_date');
            var event_desc = me.find('#calendar_event_description');
            var i = 0;
            var updateEvents = function(){
                wrapper.find('a').hover(function(){
                    event_date.text($(this).text()+" :");
                    event_desc.text($(this).attr('rel'));
                },function(){
                    event_date.text('');
                    event_desc.text('');
                });
            };
            var update = function(incr){
                i+=incr;
                if(i<0) i=11;
                if(i>11) i=0;
                $('#calendar_month li.active').removeClass('active');
                var url = $(months.get(i)).addClass('active').find('a').attr('href');
                $.post(url, function(html) {
                    wrapper.html(html);
                    updateEvents();
                });
            };
            months.find('a').click(function(){ return false; });
            prev.click(function(){
                update(-1);
                return false;
            });
            next.click(function(){
                update(1);
                return false;
            });
            updateEvents();
        });

        $('.CommentTrigger').click(function(){
            var comments = $('#comments');
            if(comments.is(':visible')) comments.slideUp();
            else comments.slideDown();
        });
	
	$('.ApplyForm').each(function(){
		var me = $(this);
		var submit = me.find("input[type='submit']").addClass('disabled');
		var check = function(focus){
			var filled = true;
			required_fields.each(function(){
				var rf = $(this);
				if(rf.val()=="") {
					filled = false;
					if(focus) {
						rf.focus();
						return false;
					}
				}
			});
			submit.removeClass('disabled');
			if(!filled) submit.addClass('disabled');
		};
		var required_fields = me.find('.Required').each(function(){
			var rf = $(this);
			if(rf.is('select')) rf.change(function(){ check(false); });
			else rf.keyup(function(){ check(false); });
		});
		
		submit.click(function(){
			if(submit.hasClass('disabled')) {
				check(true); 
				return false;
			}
			if($(this).attr('id')=="apply_step2_submit") me.find("input[name='goto']").val("2");
		});
	});
	
	$('.DebtTool').each(function(){
		var me = $(this);
		var raw_income = me.find("input[name='raw_income']").numericField();
		var expenses = me.find("input[name='expenses']").numericField();
		var payment = me.find("input[name='payment']");
		var net_income = me.find("input[name='net_income']").numericField();
		
		var submit = me.find("input[type='submit']");
		var info = me.find(".tool_amount_info a");
		var info_box = $('.tool_amount_details');
		var ratio = me.find(".tool_amount_value");
		var check = function(){
			if(raw_income.val()!=""&&expenses.val()!="") submit.removeClass('disabled');
			else submit.addClass('disabled');
		};
		var update = function(){
			raw_income.val(raw_income.val().replace(',','.'));
			expenses.val(expenses.val().replace(',','.'));
			payment.val(payment.val().replace(',','.'));
			net_income.val(((isNaN(raw_income.val())?0:raw_income.val())-(isNaN(expenses.val())?0:expenses.val())).toFixed(2));
		};
		info.click(function(){
			info_box.css('display',(info_box.is(':visible'))?'none':'block');
			return false;
		});
		raw_income.keyup(update).keyup(check);
		expenses.keyup(update);
		payment.keyup(check);
		submit.click(function(){
			if(submit.hasClass('disabled')==false) {
				me.find('.ajax_loader').css('display','block');
				$.post(me.attr('action'), {
					'net_income':net_income.val(),
					'payment': payment.val()
				}, 
				function(result) {
					ratio.text(result);
					me.find('.tool_amount_box').css('display','block');
					me.find('.ajax_loader').css('display','none');
				});
			}
			return false;
		});
	});
	
	$('.PaymentTool').each(function(){
		var me = $(this);
		var cost = me.find("input[name='cost']").numericField();
		var down_payment = me.find("input[name='down_payment']").numericField();
		var loan_amount = me.find("input[name='loan_amount']");
		var interest_rate = me.find("input[name='interest_rate']").numericField();
		var frequency = me.find("select[name='frequency']");
		var period = me.find("select[name='period']");
		var submit = me.find("input[type='submit']");
		var info = me.find(".tool_amount_info a");
		var info_box = $('.tool_amount_details');
		var payment_amount = me.find(".tool_amount_value");
		var check = function(){
			if(loan_amount.val()!=""&&interest_rate.val()!="") submit.removeClass('disabled');
			else submit.addClass('disabled');
		};
		var update = function(){
			cost.val(cost.val().replace(',','.'));
			down_payment.val(down_payment.val().replace(',','.'));
			loan_amount.val(((isNaN(cost.val())?0:cost.val())-(isNaN(down_payment.val())?0:down_payment.val())).toFixed(2));
		};
		info.click(function(){
			info_box.css('display',(info_box.is(':visible'))?'none':'block');
			return false;
		});
		cost.keyup(update).keyup(check);
		down_payment.keyup(update);
		interest_rate.keyup(check);
		submit.click(function(){
			if(submit.hasClass('disabled')==false) {
				me.find('.ajax_loader').css('display','block');
				interest_rate.val(interest_rate.val().replace(',','.'));
				$.post(me.attr('action'), {
					'loan_amount':loan_amount.val(),
					'interest_rate': interest_rate.val(),
					'frequency': frequency.val(),
					'period': period.val()
				}, 
				function(result) {
					payment_amount.text(result);
					me.find('.tool_amount_box').css('display','block');
					me.find('.ajax_loader').css('display','none');
				});
			}
			return false;
		});
	});

	// LabeledInput
	$('.LabeledInput').LabeledInput();
	
	// Print
	$('.Print').click(function(){
		window.print();
		return false;
	});
	
	// Subscribe box
	$('#SubscribeFormTrigger').click(function(){
		$('#survey_subscribe').slideDown();
		return false;
	});
	$('.SubscribeForm').each(function(){	
		var me = $(this);
		var submit = me.find('input[type="submit"]');
		var input = me.find('input[type="text"]');
		submit.click(function(){
                    $.ajax({type: 'POST', url: me.attr('action'), data:{'email':input.val()},
                        success: function(feedback) {
                            popup.show(feedback);
                            input.val('');
                        }
                    });
                    return false;
		});
	});
	
	// popup
	var popup = {
		dimming: $('#dimming'),
		container: $('#popup'),
		show: function(message){
			var ww = $(window).width();
			var wh = $(window).height();
			popup.container.find('.body').text(message);
			popup.dimming.fadeIn();
			popup.container.css({
				top: ((wh-popup.container.outerHeight())/2)+'px',
				left: ((ww-popup.container.outerWidth())/2)+'px'
			});
		},
		hide: function(){
			popup.dimming.fadeOut();
			return false;
		}
	};
	popup.container.find('.close').click(popup.hide);
	
	// Vote box
	$('.VoteForm').each(function(){	
		var me = $(this);
		var submit = me.find('input[type="submit"]');
		
		submit.click(function(){
			var survey_id = me.find('input[name="survey_id"]').val();
			var choice = '';
			me.find('input[name="choice"]').each(function(){
				var c = $(this);
				if(c.is(':checked')) choice = c.val();
			});
			$.post(me.attr('action'), {'survey_id':survey_id,'choice':choice}, function(answer) {
				location.reload(true);
			});
			return false;
		});
	});
	
	// Rate Panel
	var panel = $('#rate_panel');
	var rate_panel_trigger = $('#rate_panel_trigger').click(function(){
		$(this).addClass('current');
		panel.slideDown();
		return false;
	});
	$('#rate_panel_close_button').click(function(){
		panel.slideUp();
		rate_panel_trigger.removeClass('current');
		return false;
	}).hover(
		function(){
			var icon = $(this).find('img');
			icon.attr('src',icon.attr('src').replace('close_rate_panel_off','close_rate_panel'));
		},
		function(){
			var icon = $(this).find('img');
			icon.attr('src',icon.attr('src').replace('close_rate_panel','close_rate_panel_off'));
		}
	);
	
	// FontResizer
	$('.FontSizer').each(function(){
		var me = $(this);
		var adjustSize = function(target,adj){
			target.each(function(){
				var t = $(this);
				var of = (t.attr('InitialFontSize')) ? t.attr('InitialFontSize') : t.attr('InitialFontSize',t.css('fontSize')).attr('InitialFontSize');
				t.css('fontSize',(adj>0)?parseFloat(of)+adj+(((of.indexOf('pt')>0))?'pt':'px'):of);
			});
		};
		var currentFontRatio = 0;
		me.click(function(){
			currentFontRatio = (currentFontRatio<2) ? currentFontRatio+1 : 0;
			adjustSize($('.body'),currentFontRatio);
			return false;
		});
	});
});