/*
* @author Rades Dan (dan.rades@gmail.com)
* @lastmod 11.12.2009
*/
App = {
	pageName : '',
	overlayElm : null,
	winElm : null,
	cache : {},
	username : '',
	initialise : function() 
	{	
		var username = $.cookie('username');

		if (username != null)
		{
			$('#register, #login').hide();
			$('#logout').show();
			App.username = username.replace(/\+/, "&nbsp;");
			var u = $('#username');
			$('b',u).html(App.username);
			u.show();
		}
		else
		{
			this.initLoginBox();
		}


		if (typeof this.initors[this.pageName] == 'function') 
		{
			App.initors[this.pageName]();
		} 
		this.overlayElm = $('#overlay');
		this.initShare();

	},
	initShare : function()
	{
		var shareBox = $('#share_this');
		
		var _links = $('a', shareBox);
		var url;
		var details;
		var privacy;
		
		_links.eq(0).click(function()
		{
			window.open("http://twitter.com/home?status=" + details + ' ' + url);
			return false
		});

		_links.eq(1).click(function()
		{
			fbs_click(encodeURI(url), details);
			return false;
		});

		_links.eq(2).click(function()
		{
			shareBox.hide();
		});
		$('.share_this').click(function()
		{
			var _this = $(this);
			var pos = _this.offset();
			shareBox.css('top', pos.top + 20);
			shareBox.css('left', pos.left - 10);
			$('.share_lnk').show();
			$('span', shareBox).hide();
			privacy =  _this.attr('privacy');
			details = _this.attr('details');
			url = _this.attr('url');
			url = 'http://' + window.location.host + url;
			if (privacy !=  1)
			{
				$('.share_lnk').hide();
				$('span', shareBox).show();
			}
			shareBox.show();

		});
	},
	initLoginBox  : function()
	{
		var loginBtn = $('.login_btn');
		var loginBox = $('#login_box');
		var loginForm = $('#login_frm');
		var recoverForm = $('#recover_frm');
	
		$('#forgot_pass').click(function()
		{
			loginForm.hide();
			recoverForm.show();
			return false;
		});
		loginBtn.click(function()
		{
			loginForm.show();
			recoverForm.hide();

			App.overlay('show');
			App.repositionWin(loginBox);
			loginBox.show();			
			$('input', loginBox).eq(0).focus();
		});

		$('#login_cancel').click(function()
		{
			loginBox.hide();
			$('#login_error').hide();
			$('#recover_error').hide();
			$('#recover_success').hide();
			App.overlay('hide');
		});

		$('#login_submit').click(function()
		{
			loginForm.submit();
		});

		$('#recover_submit').click(function()
		{
			recoverForm.submit();
		});

		loginForm.submit(function()
		{			
			$.post('/login', loginForm.serialize(), function(data)
			{
				if (data.error)
				{
					$('#login_error').show();
					$('input[type!="submit"]',loginBox).val('').eq(0).focus();
				}
				else
				{
					var redirectUrl = (data.redirect_url != '') ? data.redirect_url : window.location.href;
					var html = '<p style="width:300px;color:green;font-weight:bold;font-size:14px;text-align:center";>Autentificare cu succes!<br />';
					html += '<a style="font-size:11px;"href="' + redirectUrl + '">Click aici daca nu sunteti redirectat automat</a></p>';
					loginBox.html(html);
					setTimeout(function()
					{
						window.location.href = redirectUrl;

					},5000);
				}
			},'json');
			return false;
		});

		recoverForm.submit(function()
		{			
			$('#recover_error').hide();
			$.post('/recover-password', recoverForm.serialize(), function(data)
			{
				if (data != 'success')
				{
					$('#recover_error').show();
					$('input[type!="submit"]',recoverForm).val('').eq(0).focus();
				}
				else
				{
					$('#recover_success').show();
					setTimeout(function()
					{
						loginBox.hide();
						$('#recover_error').hide();
						$('#recover_success').hide();
						App.overlay('hide');

					},2000);
				}
			},'html');
			return false;
		});
	},

	overlay : function(show)
	{
		var display = (show == 'show') ? 'block' : 'none';
		this.overlayElm.css({
			'height' : $(document).height(),
			'opacity' : 0.1,
			'display' : display
		});
		this.overlayElm.bgiframe();
	},

	repositionWin : function(w)
	{
		if (typeof w == 'object')
		{
			var top = (($(window).height() / 2) - (w.outerHeight() / 2)) - 75;
			//top = top + $(window).scrollTop();
			var left = (($(window).width() / 2) - (w.outerWidth() / 2));
						
			if( top < 0 ) top = 0;
			if( left < 0 ) left = 0;

			if( $.browser.msie && parseInt($.browser.version) <= 6 ) top = top + $(window).scrollTop();
			
			w.css({
				top: top + 'px',
				left: left + 'px'
			});
		}
	},


	windowMaintainPosition : function(win, status) 
	{
		var maintain = function(){ App.repositionWin(win) }
		switch(status) {
			case true:
				$(window).bind('resize', maintain);
				if( $.browser.msie)
				{
					$(window).bind('scroll', maintain);
				}
			break;
			case false:
				$(window).unbind('resize', onresize);
				if( $.browser.msie)
				{				
					$(window).unbind('scroll', maintain);
				}
			break;
		}
	},

	rand : function( min, max ) 
	{
		return Math.floor(Math.random() * (max - min + 1)) + min;
	}	
}

App.initors = {
	'homepage' : function() 
	{
		$('#carousel').jCarouselLite({
			btnNext: "#btnNext",
			btnPrev: "#btnPrev",
			circular: false,
			visible: 3,
			speed : 300,
			scroll : 3
		});	
		var nlBox = $('#nl_box');
		var nlForm = $('#nl_box form');
		
		$('#nl_add').click(function()
		{
			App.overlay('show');
			App.repositionWin(nlBox);
			nlBox.show();			
			$('input', nlBox).eq(0).val('').focus();
		});		
		
		$('#nl_cancel').click(function()
		{
			nlBox.hide();			
			$('#nl_error').hide();
			$('#nl_success').hide();
			App.overlay('hide');
		});		
		
		nlForm.submit(function()
		{			
			$.post('/add-email', nlForm.serialize(), function(data)
			{
				var input = $('input[type!="submit"]',nlBox);
				if (data.error)
				{
					$('#nl_error').show();
					input.val('').eq(0).focus();
				}
				else
				{					
					$('#nl_error').hide();
					$('#nl_success').show();
					input.val('');
					
					setTimeout(function()
					{
						nlBox.hide();			
						$('#nl_error').hide();
						$('#nl_success').hide();
						App.overlay('hide');

					},3000);
				}
			},'json');
			return false;
		});		
		
		$('#nl_submit').click(function()
		{
			nlForm.submit();
		});		
		
	},

	'my_plan' : function()
	{
		var modified = false;
		var saveBox = $('#save_box');
		var newUrl = '';
		var planClone = $('#planClone');
		var marker = $('#form_marker');
		var details = $('#plan_details');
		var planReminderType = $('#plan_reminder_type');
		var planReminderPeriod = $('#plan_reminder_period');
		var frm = $('#main_form');
		var planIdx = $('.plan',frm).length;

		$('#save_ok').click(function()
		{
			modified = false;
			frm.submit();
			return false;
		});
		
		$('#save_cancel').click(function()
		{
			modified = false;
			window.location.href = newUrl;
			return false;
		});		

		
		var onBeforeLeave = function(url)
		{
			
			App.overlay('show');			
			App.repositionWin(saveBox);
			App.windowMaintainPosition(saveBox, true);
			
			saveBox.show();		
			newUrl = url;
		}
		
		$('a').click(function()
		{
			var url = $(this).attr('href');
			if (url == 'javascript:;')
			{
				return false;
			}
			if (modified && url != 'javascript:;')
			{
				onBeforeLeave(url);
				return false;
			}
			return true;
		});
			
		window.onbeforeunload = function() 
		{
			if (modified)			
				return 'Ai modificat planul dar nu ai salvat!' + "\n" + 'Esti sigur ca vrei sa parasesti aceasta pagina?';
		}
		
		frm.submit(function()
		{
			modified = false;
			return true;
		});
		
		$('.delete_rezolution').click(function()
		{
			if (confirm('Sunteti sigur ca doriti sa stergeti aceasta rezolutie?'))
			{
				modified = true;
				$(this).parent().parent().parent().parent().remove();
				$('#add_form').show();
				$('#max_plans').hide();
				planIdx --;
			}
			return false;
		});

		$('.edit_rezolution').click(function()
		{
			modified = true;
			var _this = $(this);
			var c = _this.parent().parent().parent().parent();
			var txt = $('b', c);
			var txtEdit = $('textarea',c);
			if (_this.hasClass('save_rezolution'))
			{
				var v = txtEdit.val();
				if (v == '')
				{
					alert('Nu ati introdus nici un plan!');
					txtEdit.focus();
					return false;
				}
				$('input',c).eq(0).val(v);
				txt.html(v).show();
				txtEdit.hide();
				_this.text('Editeaza');
				_this.removeClass('save_rezolution');
			}
			else
			{
				_this.addClass('save_rezolution');
				_this.text('Salveaza');
				txt.hide();
				txtEdit.val(txt.text()).show();
			}

		});



		$('#add_plan').click(function()
		{			
			if (details.val() != '')
			{
				var el;
				var name;
				var idx = parseInt(planIdx);
				var _clone = planClone.clone(true);
				_clone.attr('id','');

				$('.plan_text b',_clone).html(details.val());

				el = $('.plan_details',_clone);
				el.val(details.val());
				name = el.attr('name').replace('[X]','[' + idx + ']');
				el.attr('name',name);

				el = $('.plan_reminder_type',_clone);
				el.val(planReminderType.val());
				el.attr('selectedIndex', planReminderType.attr('selectedIndex'));
				name = el.attr('name').replace('[X]','[' + idx + ']');
				el.attr('name',name);

				el = $('.plan_reminder_period',_clone);
				el.val(planReminderPeriod.val());
				el.attr('selectedIndex', planReminderPeriod.attr('selectedIndex'));
				name = el.attr('name').replace('[X]','[' + idx + ']');
				el.attr('name',name);

				el = null;


				_clone.show();	
				marker.before(_clone);

				details.val('');
				planReminderType.attr('selectedIndex',0);
				planReminderPeriod.attr('selectedIndex',0);

				planIdx ++;

				modified = true;
				
				if (planIdx == 10)
				{
					$('#add_form').hide();
					$('#max_plans').show();
				}
			}
			else
			{
				alert('Va rugam sa introduceti planul!');
				details.focus();
			}
		});
	},
	
	'item' : function()
	{
		var b = $('b',$('#item_views'));
		b.load('/views/' + b.attr('id'));
		var commentsNl = $('#comments_nl');
		var commentsL = $('#comments_l');
		if (App.username != '')
		{
			commentsNl.hide();
			commentsL.show();
		}
		else
		{
			commentsNl.show();
			commentsL.hide();
		}
	}
};

$(document).ready(function() 
{
	//$(document).pngFix(); 
	App.initialise();	
	
});	

function fbs_click(u, t) {
	u=u || location.href;
	t=t || document.title;
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');return false;
}
	
	

