// initiate html elements
var fan_server_url="http:\/\/fan.yspan.com";
var tweeter_server_url = 'http://yspan.com/ws/tweeter';

var fan_share_style = document.createElement('link');
fan_share_style.rel = 'stylesheet';
fan_share_style.type = 'text/css';
fan_share_style.href = fan_server_url+'/css/sharev2.css';

function fan_share_create_frame_elem(){
	var fan_share_target_frame = document.createElement('iframe');
	fan_share_target_frame.src = 'about:blank';
	fan_share_target_frame.marginheight = 0;
	fan_share_target_frame.marginwidth = 0;
	fan_share_target_frame.allowtransparency = "on";
	fan_share_target_frame.frameborder = "0";
	fan_share_target_frame.className = "fan_share_working_frame";
	
	return fan_share_target_frame;
}

$(document).ready(function(){
	document.body.appendChild(fan_share_style);
});

if(typeof(fan_window)!='function'){ //load window js
	var temp_string2write = "<s"+"cript type=\"text/javascript\" src=\"http://fan.yspan.com/js/window.js\"></"+"script>";
	document.write(temp_string2write);
}

function fan_share_post_on_fb(_title, _link, _description, post_image, links){
	_title = fan_share_trim2length(_title, 100);
	_description = fan_share_trim2length(_description, 1000);
	
	var fan_share_target_frame = fan_share_create_frame_elem();
	
	var iframe_src = "http://wscomments.worldsview.com/fbconnect/fbconnect_post_comment.php?rt=false&link=" + escape(_link) +  "&title=" + escape(_title) + "&desc=" + escape(_description);
	
	if(typeof(post_image)=='string'){
		var matches = post_image.match(/_([0-9]+)\./);
		if(typeof(matches)=='object' && matches && typeof(matches[1])=='string' && matches[1]){
			iframe_src += '&images[0][src]='+escape(fan_server_url+'/user_img/wall/160/'+matches[1].charAt(0)+'/'+matches[1].charAt(1)+'/'+matches[1].charAt(2)+'/'+matches[1].charAt(3)+'/'+post_image);
			iframe_src += '&images[0][href]='+escape(_link);
		}
	}
	
	if(typeof(links)=='object'){
		for(var i in links.image){
			if(!links.image[i]){
				continue;
			}
			
			var img_index = parseInt(i)+1;
			iframe_src += '&images['+img_index+'][src]='+escape(links.image[i]);
			iframe_src += '&images['+img_index+'][href]='+escape(links.url[i]);
		}
	}
		
	fan_share_target_frame.src = iframe_src;
	fan_share_target_frame.style.width = 650+'px';
	fan_share_target_frame.style.height = 500+'px';
	
	fan_show_transparent_bg();
	new fan_window(document.body, 'Post on Facebook', fan_share_target_frame, {onclose:function(){fan_hide_transparent_bg()}});
}

/**
 * posts a message on twitter
 * 
 * @param string _title
 * @param string _link
 * @param string _description
 * @param boolean optional_url if set the url will not be included automatically in the twitter message 
 */
function fan_share_post_on_twitter(_title, _link, _description, optional_url){
	if(typeof(optional_url)!='boolean'){
		optional_url = false;
	}
	
	var fan_share_target_frame = fan_share_create_frame_elem();
	var max_message_length = 140;
	
	var display_logged_user_form = function(short_url){
		var textarea_elem = document.createElement('textarea');
		textarea_elem.name = "message";
		textarea_elem.style.width = '500px';
		textarea_elem.style.height = '100px';
		textarea_innerHTML = _title+' '+_description;
		
		var submit_container = document.createElement('div');
		submit_container.style.padding = '5px';
		submit_container.style.textAlign = 'center';
		submit_container.style.position = 'relative';
		
		var counter_elem = document.createElement('div');
		counter_elem.style.position = 'absolute';
		counter_elem.style.top = '1px';
		counter_elem.style.right = '2px';
		counter_elem.style.fontFamily = 'arial';
		counter_elem.style.fontSize = '12px';
		counter_elem.style.fontWeight = 'bold';
		submit_container.appendChild(counter_elem);
		
		if(typeof(short_url)=='string' && short_url){
			if(!optional_url){
				var max_length = max_message_length - short_url.length -1;
				if(textarea_innerHTML.length > max_length){
					textarea_innerHTML = textarea_innerHTML.substr(0, max_length);
				}
				textarea_innerHTML += ' ' + short_url;
			}
			else{
				var max_length = max_message_length;
				if(textarea_innerHTML.length > max_length){
					textarea_innerHTML = textarea_innerHTML.substr(0, max_length);
				}
				
				submit_container.style.textAlign = 'left';
				
				var short_url_span = document.createElement('span');
				short_url_span.innerHTML = short_url;
				short_url_span.style.fontStyle = 'italic';
				short_url_span.style.paddingRight = '10px';
				submit_container.appendChild(short_url_span);
				
				var add_url_btn = document.createElement('input');
				add_url_btn.type = 'button';
				add_url_btn.value = 'insert URL';
				add_url_btn.style.marginRight = '10px';
				add_url_btn.onclick = function(){
					if(typeof(textarea_elem.value)=='string' && textarea_elem.value.length>0){
						if(!textarea_elem.value.match(/[\s\t\n]$/)){
							textarea_elem.value += ' ';
						}
						textarea_elem.value += short_url;
					}
					else{
						textarea_elem.value = short_url;
					}
				}
				submit_container.appendChild(add_url_btn);
			}
		}

		if(textarea_innerHTML.length > max_message_length){
			textarea_innerHTML = textarea_innerHTML.substr(0, max_message_length);
		}
		
		textarea_elem.innerHTML = textarea_innerHTML;
		textarea_elem.value = fan_share_trim2length(textarea_elem.value, max_message_length);
		
		fan_share_set_max_length(textarea_elem, counter_elem, max_message_length, true);
		
		var submit_btn = document.createElement('input');
		submit_btn.type = 'button';
		submit_btn.value = 'Post on twitter.com';
		submit_container.appendChild(submit_btn);
		
		var container = document.createElement('div');
		container.appendChild(textarea_elem);
		container.appendChild(submit_container);
		
		submit_btn.onclick = function(){
			var message2update = $.trim(textarea_elem.value);
			
			if(!message2update){
				alert('No twitter status set!');
				return false;
			}
			if(message2update.length>max_message_length){
				alert('Maximum length is '+max_message_length+' characters');
				return false;
			}
			
			//post through fan service
			if(typeof(fan_logged_user_session)=='string' && fan_logged_user_session) {
				var iframe_src = fan_server_url+"/index.php?what=twitter&op=update_status";
				iframe_src += "&user_id="+fan_logged_user;
				iframe_src += "&session_id="+fan_logged_user_session;
			}
			//post through tweeter service
			else{
				var iframe_src = tweeter_server_url+"/index.php?what=post";
			}
			iframe_src += "&return_url="+escape(window.location.href);
			iframe_src += "&message="+encodeURIComponent(message2update);
			
			fan_share_target_frame.src = iframe_src;
			fan_share_target_frame.marginheight = 0;
			fan_share_target_frame.marginwidth = 0;
			fan_share_target_frame.allowtransparency = "on";
			fan_share_target_frame.frameborder = "0";
			fan_share_target_frame.className = "fan_share_working_frame";
			fan_share_target_frame.style.width = 500+'px';
			fan_share_target_frame.style.height = 150+'px';

			container.innerHTML = '';
			container.appendChild(fan_share_target_frame);
		}
		
		fan_show_transparent_bg();
		new fan_window(document.body, 'Post on Twitter', container, {onclose:function(){fan_hide_transparent_bg()}});
	}
		
	if((typeof(_link)=='string' && _link) && (typeof(short_url)!='string' || !short_url)){ // build shor url
		var shorte_url_request = 'http://avoo.net/index.php?op=convert&url=' + encodeURIComponent(_link) + '&to=true&output=jquery&callback=?';

		jQuery.getJSON(shorte_url_request,display_logged_user_form);
	}
	else{
		display_logged_user_form('');
	}
}

function fan_share_set_max_length(input_elem, counter_elem, max_length, count_remaining){
	var _self = this;
	
	this.input_elem = input_elem;
	this.counter_elem = counter_elem;
	this.max_length = max_length;
	
	if(typeof(count_remaining)!='boolean'){
		count_remaining = false;
	}
	
	this.verify_lebgth = function(){
		var current_length = _self.input_elem.value.length;
		
		if(current_length>_self.max_length){
			_self.counter_elem.style.color = '#B32222';
		}
		else{
			_self.counter_elem.style.color = '#37B322';
		}
		
		if(count_remaining){
			_self.counter_elem.innerHTML = max_length - current_length;
		}
		else{
			_self.counter_elem.innerHTML = current_length;
		}
	}
	
	var old_func = input_elem.onkeyup;
	input_elem.onkeyup = function(e){
		if(typeof(old_func)=='function'){
			old_func(e)
		}
		_self.verify_lebgth();
	}
	
	var old_func = input_elem.onchange;
	input_elem.onchange = function(e){
		if(typeof(old_func)=='function'){
			old_func(e)
		}
		_self.verify_lebgth();
	}
	
	this.verify_lebgth();
}

function fan_share_post_on_avoo_net(_title, _link, _description, _tags){
	_title = fan_share_trim2length(_title, 100);
	_description = fan_share_trim2length(_description, 1000);
	
	var fan_share_target_frame = fan_share_create_frame_elem();
	fan_share_target_frame.src = "http://wscomments.worldsview.com/avoonet/index.php?op=login_frm&title=" + escape(_title) + "&desc=" + escape(_description) + "&tags=" + escape(_tags) + "&link=" + escape(_link);
	fan_share_target_frame.style.width = 650+'px';
	fan_share_target_frame.style.height = 620+'px';
	
	fan_show_transparent_bg();
	new fan_window(document.body, 'Post on Avoo.net', fan_share_target_frame, {onclose:function(){fan_hide_transparent_bg()}});
}

function fan_share_trim(content){
	content = content.replace(/^\s+/, '');
	content = content.replace(/\s+$/, '');
	return content;
}

function fan_share_trim2length(string, max_length){
	if(typeof(string)=='number'){
		string = ''+string;
	}
	if(typeof(string)!='string'){
		string = '';
	}
	
	if(string.length > max_length){
		string = string.substring(0, max_length);
	}
	return string;
}