var composer_previous_value = null;

function parseComposerInput(elem) {
	try {
	
		var previousValue = $(elem).data('previousValue');
		var currentValue = $(elem).val();
		$(elem).data('previousValue', currentValue);
		
		if (!$(elem).data('has_url') && !$(elem).data('fetch_url') &&
		((previousValue && (currentValue.length > previousValue.length + 1 || currentValue.length < previousValue.length - 1)) ||
		(!previousValue && currentValue.length > 1))) {
			parseComposerUrl(elem);
		}
		
	}catch(err){
		//alert(err)
	}

}

function attemptOnInput(elem){
	return parseComposerInput(elem);
}

function blurComposerInput(elem){
	var statusBarText = $('#status_bar_text').html();
	var currentValue = $(elem).val();
	
	if(currentValue == '' /*&& !$(elem).data('has_url') && !$(elem).data('fetch_url')*/){
		var newText = statusBarText;
		$(elem).val(newText);
		$(elem).data('previousValue', '');
		$(elem).addClass('empty-composer');
	}
		
}

function focusComposerInput(elem){
	var statusBarText = $('#status_bar_text').html();
	var currentValue = $(elem).val();
	
	if(currentValue == statusBarText){
		var newText = '';
		$(elem).val(newText);
		$(elem).removeClass('empty-composer');
		$(elem).data('previousValue', newText);
	}
}


function parseComposerUrl(elem){
	
	var url = false;
	var pattern = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&;/~\+#])?/;
	var subject = $(elem).val();
	var matches = subject.match(pattern);
	if(matches){
		url = matches[0];
		$(elem).data('fetch_url', url);
		fetchMetaData(elem, url);
		//$(elem).val(subject.replace(url, ''));
	} 	
	return url;
}


function fetchMetaData(elem, url){
	$('#composer_attachment_area').html('<div style="margin: 34px 0px; width: 100%; text-align: center;"><img src="http://static.spotery.com/img/ajax-loader.gif" /></div>');
	$('#composer_attachment_area').show();
	$('#composer_response_msg').hide();
	
	
	$.ajax({
		url: '/news/get_remote_meta',
		data: {url:url},
		type: 'POST',
		dataType: 'json',
		error: function(){},
		success: function(reply){
			
			if(reply.is_valid){
				$(elem).removeData('fetch_url');
				$(elem).data('has_url', true);
				$(elem).val($(elem).val().replace(url, 'Leave a comment...'));
				$(elem).data('previousValue', $(elem).val());

				$('#composer_attachment_area').html(reply.html);
				
				
				$('#status_bar_text').html('Leave a comment...');
				$('#composer_editable_input').val('Leave a comment...');
				$('#category_id').focus();
				
				changeThumb('next');
				
				//set hidden title and description
				var title = getEffectiveTitle();
				$('#composer_hidden_title').val(title);
				var desc = getEffectiveDescription();
				$('#composer_hidden_description').val(desc);
				$('.story_link_error').hide();
				hideSpotItButton()
				
			}else{
				$('#composer_attachment_area').html('');
				$('#composer_attachment_area').hide();
				$(elem).removeData('fetch_url');
				$(elem).removeData('has_url');
				displayFormErrors(reply.errors)
			}
		}
	});
	return false;
}

function changeThumb(change_val){
	var thumb_container = $('#composer_thumbs');
	var thumbs = $(thumb_container).children();
	var total_thumbs = thumbs.length;
	if(total_thumbs){
		var current_thumb = thumb_container.data('current_thumb');
		if(typeof(current_thumb) == 'undefined' || current_thumb == null){
			current_thumb = 0;
		}else{
			$(thumbs).eq(current_thumb).addClass('composer_thumb_hidden');
			if(change_val == 'next' && current_thumb < total_thumbs - 1){
				++current_thumb;
			}else if(change_val == 'prev' && current_thumb > 0){
				--current_thumb;
			}
		}
		thumb_container.data('current_thumb', current_thumb);
		
		$(thumbs).eq(current_thumb).removeClass('composer_thumb_hidden');
		$('#thumb_pager_current').text(current_thumb + 1);
		$('#thumb_pager_max').text(total_thumbs);
		$('#composer_hidden_thumb_src').val($(thumbs).eq(current_thumb).attr('src'));
		
		if(current_thumb == 0){
			$('.thumb-pager-controls').addClass('thumb-pager-controls-first');
		}else{
			$('.thumb-pager-controls').removeClass('thumb-pager-controls-first');
		}
		
		if(current_thumb == total_thumbs - 1){
			$('.thumb-pager-controls').addClass('thumb-pager-controls-last');
		}else{
			$('.thumb-pager-controls').removeClass('thumb-pager-controls-last');
		}
	}else{
		$('.thumb-pager-controls').hide();
	}
	
	return false;
}

function getCurrentThumbSrc(){
	var thumb_src = '';
	if(!($('#no_picture').attr('checked'))){
		var thumb_container = $('#composer_thumbs');
		var thumbs = $(thumb_container).children();
		var total_thumbs = thumbs.length;
		
		if(total_thumbs){
			var current_thumb = thumb_container.data('current_thumb');
			if(typeof(current_thumb) == 'undefined'){
				current_thumb = 0;
			}
			
			thumb_src = $(thumbs).eq(current_thumb).attr('src');
		}
	}
	return thumb_src;
}

function hideCurrentThumb(){
	var thumb_container = $('#composer_thumbs');
	var thumbs = $(thumb_container).children();
	var total_thumbs = thumbs.length;
	if(total_thumbs){
		var current_thumb = thumb_container.data('current_thumb');
		if(typeof(current_thumb) == 'undefined'){
			current_thumb = 0;
		}
		$(thumbs).eq(current_thumb).addClass('composer_thumb_hidden');
		$('#composer_hidden_thumb_src').val('');
	}
	return false;
}

function showCurrentThumb(){
	var thumb_container = $('#composer_thumbs');
	var thumbs = $(thumb_container).children();
	var total_thumbs = thumbs.length;
	if(total_thumbs){
		var current_thumb = thumb_container.data('current_thumb');
		if(typeof(current_thumb) == 'undefined'){
			current_thumb = 0;
		}
		$(thumbs).eq(current_thumb).removeClass('composer_thumb_hidden');
		$('#composer_hidden_thumb_src').val($(thumbs).eq(current_thumb).attr('src'));
	}
	return false;
}

function editComposeTitle(){
	var title = getEffectiveTitle();
	$('#composer_title').html('<input id="editable_compose_title" type="text" onblur="uneditComposeTitle()" value=""/>');
	$('#editable_compose_title').val(title);
	$('#editable_compose_title').focus();
	return false;
}

function getEffectiveTitle(){
	var title = $('.composer-title-content').text();
	if(title == 'Enter a title ...'){ title = ''; }
	return title;
}


function uneditComposeTitle(){
	var title = $('#editable_compose_title').val();
	$('#composer_hidden_title').val(title);
	if(title == ''){ title = 'Enter a title ...'; }
	$('#composer_title').html('<span><a href="#" class="composer-title-content" onclick="return editComposeTitle();">'+ title +'</a></span>');
	
	return false;
}

function editComposeDescription(){
	var desc = getEffectiveDescription();
	$('#composer_description').html('<textarea id="editable_compose_description" onblur="uneditComposeDescription()"></textarea>');
	$('#editable_compose_description').val(desc);
	$('#editable_compose_description').focus();
	return false;
}

function getEffectiveDescription(){
	var desc = $('.composer-description-content').text();
	if(desc == 'Enter a description ...'){ desc = ''; }
	return desc;
}

function uneditComposeDescription(){
	var desc = $('#editable_compose_description').val();
	$('#composer_hidden_description').val(desc);
	if(desc == ''){ desc = 'Enter a description ...'; }
	$('#composer_description').html('<span><a href="#" class="composer-description-content" onclick="return editComposeDescription();">'+ desc +'</a></span>');
	
	return false;
}

function changeNoPicture(){
	if($('#no_picture').attr('checked')){
		$('.thumb-pager-text').hide();
		$('#thumb_pager_buttons').hide();
		hideCurrentThumb();
	}else{
		$('.thumb-pager-text').show();
		$('#thumb_pager_buttons').show();
		showCurrentThumb();
	}
}

function validateComposer(){
	return true;
}

function removeAttachment(){
	$('#composer_attachment_area').html('');
	$('#composer_attachment_area').hide();	
	$('#composer_editable_input').removeData('has_url');
	blurComposerInput($('#composer_editable_input'));
	showSpotItButton();
	return false;
}

function shareLink(form){
	if(validateComposer()){
		$('#composer_response_msg').hide();
		var post_attempt = $('#composer_editable_input').data('post_attempt');
		if(typeof(post_attempt) == 'undefined' || post_attempt != 1){
			$('#composer_editable_input').data('post_attempt', 1);
			$.ajax({
				url: '/news/share_url',
				data: $(form).serialize(),
				type: 'POST',
				dataType: 'json',
				error: function(){},
				success: function(reply){
					if(reply.code == 1){
						form.reset();
						removeAttachment()
						$('#composer_response_msg').html('Your story was spotted successfully. <a href="' + reply.story_url + '">Click here</a> to read it!');
						$('#composer_response_msg').show();
						$('#composer_editable_input').removeData('previousValue');
						$('#composer_editable_input').removeData('post_attempt');
						
					}else{
						displayFormErrors(reply.errors);
						$('#composer_editable_input').removeData('post_attempt');
						$('.story_link_error').show();
					}
				}
			});
		}
	}
	return false;
}


function getTextAreaVal(textbox, timeout){
	window.setTimeout(function(){
		parseComposerInput(textbox);
	}, timeout);
}

function hideSpotItButton(){
	$('.story-page #composer_form textarea#composer_editable_input').css('width','636px');
	$('.profile-page #composer_form textarea#composer_editable_input').css('width','636px');
	$('.storyfeed-header #composer_form textarea#composer_editable_input').css('width','746px');
	
	var category = $('#spot_it_button')[0].getAttribute('category');
	$('.spot_it').addClass(category);
	$('#spot_it_button').hide();
}

function showSpotItButton(){
	$('.story-page #composer_form textarea#composer_editable_input').css('width','480px');
	$('.profile-page #composer_form textarea#composer_editable_input').css('width','480px');
	$('.storyfeed-header #composer_form textarea#composer_editable_input').css('width','590px');
	
	var text = $('#status_bar_text')[0].getAttribute('text');
	$('#composer_editable_input').val(text);
	$('#status_bar_text').html(text);
	blurComposerInput($('#composer_editable_input'));
	$('#spot_it_button').show();
	
}

/*
 * Events
 */

$('div#composer textarea#composer_editable_input').livequery(function(){
	
	$(this).focus(function(){
		focusComposerInput(this);
	});
	
	$(this).blur(function(){
		blurComposerInput(this);
	});
	
	
	if (!$.browser.opera) {
		
		$(this).bind('paste', function(evt){
			var textbox = this;
			getTextAreaVal(textbox, 100);
		});
	} else {
		
		$(this).keydown(function(evt){
			var textbox = this;
			if (evt.ctrlKey && evt.keyCode == 86) {
				getTextAreaVal(textbox, 100);
			}
			//mac 
			else if(evt.keyCode == 91 && evt.keyCode == 86) {
				getTextAreaVal(textbox, 100);
			}
		});
		
		$(this).mousedown(function(evt){
			var textbox = this;
			if(evt.which == 3){
				getTextAreaVal(textbox, 2000);
			}
		});
	}
	
});

$('a.thumb-pager-button-left').livequery(function(){
	$(this).click(function(){
		changeThumb('prev');
		return false;
	});
});

$('a.thumb-pager-button-right').livequery(function(){
	$(this).click(function(){
		changeThumb('next');
		return false;
	});
});

$('input#no_picture').livequery(function(){
	$(this).click(function(){
		changeNoPicture();
	});
});

$('a.composer-title-content').livequery(function(){
	$(this).click(function(){
		editComposeTitle(this);
		return false;
	});
});

$('a.composer-description-content').livequery(function(){
	$(this).click(function(){
		editComposeDescription(this);
		return false;
	});
});

$('div.composer-edit-title-link a').livequery(function(){
	$(this).click(function(){
		editComposeTitle();
		return false;
	});
});

$('div.composer-edit-description-link a').livequery(function(){
	$(this).click(function(){
		editComposeDescription();
		return false;
	});
});

$('a.composer-close-button').livequery(function(){
	$(this).click(function(){
		removeAttachment();
		return false;
	});
});

$('.spot_it').livequery(function(){
	$(this).click(function(){
		$('#composer_form').submit();
		return false;
	});
});
					
$('#composer_form').livequery(function(){
	$(this).submit(function(){
		if(isas_uid == 0){
			var myForm = this;
			callBack = {
				action: function(){
					shareLink(myForm);
				}
			}
			return otf_login_modal.showModal('login-ispot');
		}
		
		return shareLink(this);
	});
});
