$(function()
{	
	$.ajaxSetup(
	{
		complete	: function(){ overlay.hide(); },
		beforeSend	: function()
		{
			if(		this.url.indexOf('/oohembed/?url=') 	== -1
				&&	this.url.indexOf('active_users=') 		== -1
				&&	this.url.indexOf('_autocompleter=') 	== -1
				&&	this.url.indexOf('hide_loader')	 		== -1
			){ overlay.show(); }
		}
	});
	
	// Jump to Page
	$('.page-jump input').keypress(function(e){ if(e.keyCode == 13){ $(this).next().click(); return false; } });
	$('.page-jump a').click(function()
	{
		var val = $('.page-jump input').val();
		var url = location.href.replace(/(\?|&)page=\d+/, '$1page='+val); 
		location.href = url.indexOf('page=') > 0 ? url : (url + (url.indexOf('?') > 0 ? '&' : '?') + 'page='+val);
		return false; 
	});
	
	$('.delete').live('click', function(){ return confirm(__globals.ERRORS.listing_delete) ? true : false; });
	
	// Croppables
	var $croppables = $('.croppable');
	if($croppables.length)
	{
		var $frame = $('<iframe id="upload_frame" name="upload_frame" src="about:blank" style="width: 0px; height: 0px; border: 0px solid #000;"></iframe>').appendTo($('body'));
		
		$croppables.find('img.crop-img').hide();
		$('.upload', $croppables[0]).click(function()
		{
			var $this = $(this);
			if($this.parents('.input:eq(0)').find('.file_field input').val().length <= 0){ return false; }
			
			$this.val('Uploading ...').addClass('uploading').parents('form:eq(0)').attr('target', $frame.attr('name'))
			
			// needs timeout to work after submit
			setTimeout(function(){ $this.attr('disabled','disabled').parents('.croppable').find('input[type=file]').attr('disabled','disabled'); }, 10);
		});
		$('input[type=file]', $croppables[0]).change(function(){ $('input[name^=upload_croppable]:hidden', $croppables[0]).fadeIn(); });
		
		window.croppable = function(field_name, image)
		{
			var $container = $('#id_'+field_name).parents('.croppable');
			
			// needs timeout to work everytime
			setTimeout(function()
			{
				$container
					.find('input[type=file]').removeAttr('disabled').val('').end()
					.find('input[name^=upload_croppable]').fadeOut().val('Upload').removeAttr('disabled').end()
					.find('input[name^=upload_delete]').unbind('click')
						.click(function(){ $container.find('.jcrop-holder, .preview').slideToggle(); }).parent().show()
					.parents('form:eq(0)').removeAttr('target');
			}, 10);
			
			$img = $container.find('img:eq(0)').hide().attr('src', __rootPath + 'public/files/'+image);
			
			if('Jcrop' in $img[0])
			{
				delete $img[0].Jcrop; // delete must be on new line!!!
				$container.find('.jcrop-holder').remove();
			}
			
			$img.show().unbind('load').load(function()
			{
				var $img = $(this).css('width', '');
				var maxWidth 	= parseInt($img.css('maxWidth') || $img.css('max-width'));
				var maxHeight 	= parseInt($img.css('maxHeight') || $img.css('max-height'));
				
				$img.css('maxWidth', '').css('maxHeight', '');
				var naturalWidth = $img[0].naturalWidth || $img[0].width;
				var naturalHeight = $img[0].naturalHeight || $img[0].height;
				$img.css('maxWidth', maxWidth).css('maxHeight', maxHeight);
				
				var iw = $img.width();
				var ih = $img.height();
				var iwk = iw / naturalWidth;
				var ihk = ih / naturalHeight;
				
				var $preview = $container.find('.preview').show().find('img').attr('src', __rootPath + 'public/files/'+image);
				var $preview_cnt = $preview.parent().click(function(){ return false; });
				var cw = $preview_cnt.width();
				var ch = $preview_cnt.height();
				
				var coords = { x: 0, y: 0, x2: 0, y2: 0 };
				var $coord_x = $img.nextAll('.coord-x');
				var $coord_y = $img.nextAll('.coord-y');
				var $coord_x2 = $img.nextAll('.coord-x2');
				var $coord_y2 = $img.nextAll('.coord-y2');
				
				if($coord_x.val() == ''){ coords.x = iw/2-cw/2; $coord_x.val(Math.floor(coords.x/iwk)) }else{ coords.x = $coord_x.val()*iwk; }
				if($coord_y.val() == ''){ coords.y = ih/2-ch/2; $coord_y.val(Math.floor(coords.y/ihk)) }else{ coords.y = $coord_y.val()*ihk; }
				if($coord_x2.val() == ''){ coords.x2 = iw/2+cw/2; $coord_x2.val(Math.floor(coords.x2/iwk)) }else{ coords.x2 = $coord_x2.val()*iwk; }
				if($coord_y2.val() == ''){ coords.y2 = ih/2+ch/2; $coord_y2.val(Math.floor(coords.y2/ihk)) }else{ coords.y2 = $coord_y2.val()*ihk; }
				
				
				$img.Jcrop(
				{
					setSelect: [ coords.x, coords.y, coords.x2, coords.y2 ],
					onSelect: function(coords){ $coord_x.val(coords.x); $coord_y.val(coords.y); $coord_x2.val(coords.x2); $coord_y2.val(coords.y2); },
					onChange: function(coords)
					{
						cwk = coords.w*iwk;
						chk = coords.h*ihk;
						
						$preview.css(
						{
							width: Math.round( cw*(iw/(cwk)) ) + 'px',
							height: Math.round( ch*(ih/(chk)) ) + 'px',
							marginLeft: '-' + Math.round(coords.x*iwk*(cw/cwk)) + 'px',
							marginTop: '-' + Math.round(coords.y*ihk*(ch/chk)) + 'px'
						});
					},
					boxWidth: maxWidth, 
					boxHeight: maxHeight,
					aspectRatio: ($img.is('.keep-ratio') ? cw/ch : 0)
				});
			});
		}
	}
	
	// Custom
	$('#tabs').tabs();
	
	$('#id_school').autocomplete(
	{ 
	    queryName: 'school_autocompleter', //aditional parameters
	    minChars:3, 
	    maxHeight:400,
	    width:400,
	    deferRequestBy: 0, //miliseconds
	    
	    onSelect: function(value, data)
	    {
	    	$('#id_school_id').val(data).data('school_title', value).data('school_id', data); 
	    	$('.input:has(#id_school)').removeClass('invalid');
	    },
	    onStart: function(query)
	    {
	    	this.isStarted = query;
	    	$('.input:has(#id_school)').addClass('loading');
	    },
	    onEnd: function(query)
	    {
	    	if(this.isStarted == query){ $('.input:has(#id_school)').removeClass('loading'); }
	    }
	});
	
	$('#id_school')
	//	.change(function(e){ if($('#id_school_id').data('school_title') != this.value){ $('#id_school_id').val(''); } })
		.blur(function()
		{
			if($('#id_school_id').data('school_title') == this.value)
			{
				$('.input:has(#id_school)').removeClass('invalid');
				$('#id_school_id').val($('#id_school_id').data('school_id'));
			}
			else
			{
				$('.input:has(#id_school)').addClass('invalid');
				$('#id_school_id').val('');
			}
		}
	);
	
	$('#id_done_action, #id_like_action').live('click', function()
	{
		var url = $(this).attr('href');
		var id = $(this).attr('id');
		var elem = $(this);
		if(elem.data('doing') == 1){ return false; }
		
		elem.data('doing', 1);
		
		overlay.show();
		$.get
		(
			url, 
			function(result)
			{
				elem.data('doing', 0);
				$('.action_updated').hide();
				if(result == 1)
				{ 
					$('.comment_button_and_alert').show(); $('#' + id + '_alert').fadeIn(); 
					$('#id_like_action').fadeOut();
					if(id == 'id_done_action')
					{
						$('#id_times_done').text(parseInt($('#id_times_done').text())+1).parent().fadeIn();
						$('#all_times_done').text(parseInt($('#all_times_done').text())+1);
					}
				}
			}
		);
		
		return false;
	});
	
	$('.action_updated .cancel').click(function(){
		$('#id_done_action_alert').fadeOut();
	});
	
	
	var linkified_links = function()
	{
		var $this = $(this);
		$.get('/home/link_clicked/?url='+escape($this.attr('href')).replace(new RegExp('\/', 'g'), '%2F'));
		$this.attr('target', '_blank');
	}
	$('#cnt .linkify').each(function()
	{
		var $c = $(this);
		var links_cache = [];
		var links = $c.text().match(/((?:http:\/\/|www.)[^\s^)]+)/g)
		
		if(links)
		{
			for(i=0, len=links.length; i<len; i++)
			{
				var l = links[i];
				if($.inArray(l, links_cache) > -1){ continue; }
				links_cache[links_cache.length] = l
				
				var html = '<a href="'+l+'">'+l+'</a>';
				var replace = new RegExp(l.replace(/\?/g, '\\?').replace(/&/g, '&amp;'), 'g');
				$c[0].innerHTML = $c[0].innerHTML.replace(replace, html);
			}
		}
	});
	
	if(($oohembed = $('.oohembed')).length > 0)
	{
		$oohembed.each(function()
		{
			var links_cache = [];
			var $ooh = $(this);
			var links = $ooh.text().match(/((?:http:\/\/|www.)[^\s^)]+)/g);
			
			if(links)
			{
				for(i=0, len=links.length; i<len; i++)
				{
					var l = links[i];
					if($.inArray(l, links_cache) > -1){ continue; }
					links_cache[links_cache.length] = l
					
					var html = '<a href="http://'+l.replace(new RegExp('^http://'), '')+'" class="linkified">'+l+'</a>';
					var replace = new RegExp(l.replace(/\?/g, '\\?').replace(/&/g, '&amp;'), 'g');
					$ooh[0].innerHTML = $ooh[0].innerHTML.replace(replace, html);
					
					$.getJSON('/oohembed/?url='+l.replace(/&/g, '%26'), function(json)
					{
						if(json.error){ return; }
						
						var html = '<div class="oohembedreplaced">'
						+	(json.responce.html || '')
						+	(json.responce.url ? '<img src="'+json.responce.url+'" />' : '')
						+	'</div>';
						
						var anchor = '<a href="http://'+json.url.replace(new RegExp('^http://'), '')+'" class="linkified">'+json.url+'</a>';
						var replace = new RegExp(anchor.replace(/\?/g, '\\?').replace(/&/g, '&amp;'), 'g');
						$ooh[0].innerHTML = $ooh[0].innerHTML.replace(replace, html);
					});
				}
				
				$ooh.find('.linkified').click(linkified_links);
			}
		});
	}
	

	$('#cant_find_school').click(function()
	{
		$('#id_school_id').val('');
		$('#id_school').val('').parents('.input').slideUp();
		$('#find_school').slideDown();

		return false;
	});
	if($('#id_new_school').val() && !$('#id_school_id').val()){ $('#cant_find_school').click(); }
	
	overlay = new(function()
	{
		var $overlay = $('<div></div>').hide().appendTo('body').css(
		{
			position: 'fixed', top: 0, left: 0, width: $(document).width()+'px', height: $(document).height()+'px',
			background: '#000 url('+__rootPath+'public/styles/images/loader.gif) center '+((screen.height/2)-150)+'px no-repeat',
			opacity: 0.5 
		}).click(function(){ $(this).hide(); });
		
		return {
			show: function(){ $overlay.fadeIn(); },
			hide: function(){ $overlay.fadeOut(); }
		}
	});
	
	$('#show_more_feeds').click(function()
	{
		var elem = $(this);
		if(elem.data('show_more_feeds') == 1){ return false; }
		
		elem.data('show_more_feeds', 1);
		var page = parseInt(elem.attr('href').substr(1));
		
		$.get(location.href, {feed_page: page}, function(data)
		{
			var feeds = $(data).find('.timeline #comments li');
			
			$('.timeline #comments ul').append(feeds);
			elem.attr('href', '#'+(++page)).data('show_more_feeds', 0);
			
			if(feeds.length < elem.attr('rel')){ elem.hide(); }
			
			for(f=0, flen = feeds.length; f < flen; f++)
			{
				(function()
				{
					var $f = $(feeds[f]);
					var links = $f.text().match(/((?:http:\/\/|www.)[^\s^)]+)/g);
										
					if(links)
					{
						var links_cache = [];
						for(i=0, len=links.length; i<len; i++)
						{
							var l = links[i];
							if($.inArray(l, links_cache) > -1){ continue; }
							links_cache[links_cache.length] = l
							
							var html = '<a href="'+l+'">'+l+'</a>';
							var replace = new RegExp(l.replace(/\?/g, '\\?').replace(/&/g, '&amp;'), 'g');
							$f[0].innerHTML = $f[0].innerHTML.replace(replace, html);
							
							$.getJSON('/oohembed/?url='+l.replace(/&/g, '%26'), function(json)
							{
								var html = '<div class="info">'
								+	(json.responce.html || '')
								+	(json.responce.url ? '<img src="'+json.responce.url+'" />' : '')
								+	'</div>';
								
								var anchor = '<a href="'+json.url+'">'+json.url+'</a>';
								var replace = new RegExp(anchor.replace(/\?/g, '\\?').replace(/&/g, '&amp;'), 'g');
								$f[0].innerHTML = $f[0].innerHTML.replace(replace, html);
							});
						}
					}
				})();
			}
		});
		
		return false;
	});
	
	if($('.datepicker').length > 0)
	{
		$(".datepicker").datepicker();
	}
	
	$('#sidebar .panel.resources li').hover(
		function (){ $(this).addClass('hover');	},
		function (){ $(this).removeClass('hover'); }
	).click(function(){

		$(this).siblings().removeClass('active').find('p.desc').slideUp().end().find('dl').slideUp();
		$(this).addClass('active');
		$(this).find('p.desc').slideDown().end().find('dl').slideDown();
		
	});
	
	$('#sidebar .sidebar_actions_list .sidebar_ajax_like').live('click', function()
	{
		var id = $(this).attr('id').substring(10);
		var $next_a = $(this).siblings('a');
		$(this).remove();
		var li = $next_a.parents('li').html();
		//$('.sidebar_actions_list.no_ajax').removeClass('no_ajax');
		
		overlay.show();
		$.get('/actions/like/' + id + '/', function(data)
		{
			if (data)
			{
				$next_a.fadeOut();
				$.get('?sidebar_actions=1', function(result)
				{
					$('.sidebar_actions_list ul').html(result);
				});
				$('.sidebar_my_actions_list').show();
				$('<li>' + li + '</li>').prependTo($('.sidebar_my_actions_list ul')).hide().fadeIn();
				if($('.sidebar_my_actions_list ul').children().length == 1)
				{
					$('.sidebar_actions_list_arrow, .sidebar_my_actions_list, .sidebar_actions_button').show();
					$('.sidebar_my_actions_list').removeClass('no_ajax');
					$('.sidebar_my_actions_list .see_all').hide();
				}
				if($('.sidebar_my_actions_list ul').children().length > 5)
				{
					$('.sidebar_my_actions_list ul li:last-child').remove();
					$('.sidebar_my_actions_list .see_all').css({'display': 'block'});
				}
			}
		});
		
		return false;
	});
	
	$('#sidebar .sidebar_my_actions_list .sidebar_ajax_like').live('click', function(){ return true; });
	
	function do_submit(element)
	{
		var $element = $(element);
		var $parent = $element.parents('.tab-container.selected');
		if(!$parent.length){ $parent = $element.parents('.box_inn'); }
		
		
		var href = '?';
		var post_href = '';
		if($element.is('a'))
		{
			$element.addClass('selected').siblings('a').removeClass('asc').removeClass('dsc').removeClass('selected').end();
			if		($element.is('.asc'))	{ $element.removeClass('asc').addClass('dsc'); post_href = '-'; 	}
			else if	($element.is('.dsc'))	{ $element.addClass('asc').removeClass('dsc');						}
			else 							{ $element.addClass('asc'); 										}

			href = $element.attr('href')+post_href+'&';
		}
		else
		{
			/*
			var $selected = $parent.find('.items-filter a.selected');
			if($selected.is('.dsc'))	{ post_href = '-'; 	}

			href = $selected.attr('href');//+post_href+'&';
			 */
		}
		
		var id = $parent.find('.items-cnt').addClass('loading').attr('id');
		
		$('#categories_type'+id.substr(9)+' li').removeClass('selected');

		var ys_search = '';
		var $ys = $parent.find('.search_young_speakers');
		if($ys.attr('checked')){ ys_search = $ys.attr('name')+'=1&'; }
		
		var $search = $parent.find('.item_search');
		var search = (escape($search.val()) == 'Search' ? '' : $search.attr('name')+'='+escape($search.val()));
		
		$element.siblings('a').removeClass('asc').removeClass('dsc');
		$.get(href+'hide_loader&'+ys_search+search+'#'+id, itemSearchCallback);
	}
	
	// Item search
	var item_search_val = $('.item_search')
		.focus(function(){ if(this.value==item_search_val){ this.value=''; } })
		.blur(function(){ if(!this.value){ this.value=item_search_val; } })
		.keydown(function(e)
		{
			if(e.keyCode == 13) // On Enter key
			{ do_submit($(this)) }
		})
		.val()
	;
	
	$('.search_young_speakers').live('click', function(){ do_submit($('.item_search')); });
	
	var itemSearchCallback = function(responce)
	{
		var id = this.url.substr(this.url.indexOf('#'));
		$(id).replaceWith($(responce).find(id).find('.pagination a').click(itemSearchPagingClick).end());
		
		// location.href = location.href.substr(0, location.href.indexOf('#')) + '#'+this.url.substr(1, this.url.indexOf('#')-1).replace('&hide_loader', '');
	}
	var itemSearchPagingClick = function()
	{
		var id = $(this).parents('.items-cnt').addClass('loading').attr('id');
		$.get($(this).attr('href').replace('&hide_loader', '')+'&hide_loader'+'#'+id, itemSearchCallback);
		
		return false;
	} 
	
	$('.items-cnt .pagination a').click(itemSearchPagingClick);
	$('.items-filter a').click(function()
	{
		do_submit($(this));

		return false;
	});
	
	$('#id_categories li a').click(function()
	{
		
		$(this).parents('li').addClass('selected').siblings().removeClass('selected');
		
		var id = $('.tab-container.selected .items-cnt').addClass('loading').attr('id');
		$.get($(this).attr('href')+'?hide_loader'+'#'+id, itemSearchCallback);
		
		return false;
	});
	
	$('.tab-titles a').click(function()
	{ 
		var tab_id = $(this).parents('li').addClass('selected').siblings().removeClass('selected').end().end().attr('href');
		$(tab_id).addClass('selected').siblings().removeClass('selected');
		$('#categories_type' + tab_id.substr(4)).show().siblings().hide();
		
		return false; 
	});
	
	var province_id_event = $.browser.msie ? 'click' : 'change';
	$('#id_province_id').live(province_id_event, function()
	{
		$.get('/users/get_regions/' + $(this).val() + '/?hide_loader', function(result)
		{
			$('#id_region_id').html(result);
		});
	});
});
