/*
WorldViewer share widget
version 0.1
*/

if(typeof(WorldViewerShareWidget)!='function'){

var ns4=document.layers;
var ns6=document.getElementById&&!document.all;
var ie4=document.all;

if(typeof(jQuery)!='function'){ //load jquery
	var string2write = "<s"+"cript type=\"text/javascript\" src=\"http://avoo.net/share/3rd_party/jquery.js\"></"+"script>";
	document.write(string2write);
}
var debug_tets;
function WorldViewerShareWidget(){
	var _self = this;
	this.share_but = null;
	this.placeholder = null;
	this.settings = null;
	this.widget_url = "http:\/\/avoo.net\/share";
	this.form_plh = false;
	this.form_elem = false;
	this.comments_elem = false;
	this.antispam_img = false;
	this.page_url = window.location.href;
	var temp = document.getElementsByTagName('title');
	this.page_title = temp[0].innerHTML;
	var max_comment_length = 500;
	this.form_is_displayed = false;
	this.hide_but_on_form_display = true;
	
	this.init = function(settings){
		// init the background
		if(typeof(WorldViewerShareWidget.background)!='object'){
			WorldViewerShareWidget.background = document.createElement('div');
			WorldViewerShareWidget.background.className = 'WVshare_transparent_bg';
//			WorldViewerShareWidget.debug('creating background');
		
			if(ie4){
				var root_element = document.body;
			}
			else{
				var root_element = window;
			}
			var old_onload = root_element.onload;
			root_element.onload = function(){
				if(typeof(old_onload)=='function'){
//					WorldViewerShareWidget.debug('executing old body onload');
					try{
						old_onload()
					}
					catch(E){}
				}
				
				document.body.appendChild(WorldViewerShareWidget.background);
				
				var root_element = (document.compatMode == 'CSS1Compat')?document.documentElement:document.body;
				WorldViewerShareWidget.background.style.width  = root_element.scrollWidth + "px";
				WorldViewerShareWidget.background.style.height = root_element.scrollHeight + "px"; //'100%';
			};
		}

		if(typeof(settings['placeholder_id'])=='string'){
			this.placeholder = document.getElementById(settings['placeholder_id']);
		}
		else{
			var span_id = 'share_'+Math.random();
			document.write("<span id='"+span_id+"'></span>");
			var temp_span = document.getElementById(span_id);
			if(temp_span){
				this.placeholder = temp_span.parentNode;
				this.placeholder.removeChild(temp_span);
			}
			else{
				_self.error = "Could not get the placeholder";
				return false;
			}
		}
	
		this.placeholder.style.position = 'relative';
		
		//load css
		var temp = document.createElement('link');
		temp.type = "text/css";
		temp.rel = "stylesheet";
		temp.href = this.widget_url + "/templates/styles.css";
		this.placeholder.appendChild(temp);
		
		if(typeof(settings['but_type'])=='string' && settings['but_type']=='button'){		
			// create "share this" button
			this.share_but = document.createElement('input');
			this.share_but.type = 'button';
			this.share_but.value = 'Share This';
		
			if(typeof(settings['share_but_class'])=='string'){
				this.share_but.className = settings['share_but_class'];
			}
			else{
				this.share_but.className = 'WVshareButton';
				settings['share_but_class'] = 'WVshareButton';
			}
		}
		else{
			// create "share this" icon
			this.share_but = document.createElement('img');
			this.share_but.src = this.widget_url+'/images/avoo_mail_16.png';
			this.share_but.title = 'Share This';
			this.share_but.alt = 'Share This';
			this.share_but.align = 'absmiddle';
			this.share_but.style.cursor = 'pointer';
		
			if(typeof(settings['share_but_class'])=='string'){
				this.share_but.className = settings['share_but_class'];
			}
			
			this.hide_but_on_form_display = false;
		}
		
		this.share_but.onclick = function(){
			if(!_self.form_is_displayed){
				_self.load_form('email');
			}
			else{
				_self.hide_form();
			}
		}
		
		this.placeholder.appendChild(this.share_but);
		
		this.settings = settings;
	}
	
	this.load_form = function(form_type){
		//this.placeholder.removeChild(this.share_but);
		
/*		var fram_url = this.widget_url + "/index.php?op=form&type="+escape(form_type);
		fram_url += '&page_url='+escape(window.location.href);
		var temp = document.getElementsByTagName('title');
		fram_url += '&page_title='+escape(temp[0].innerHTML);
		
		var form_frame = document.createElement('iframe');
		form_frame.src = fram_url;
		form_frame.frameborder = 0;
		form_frame.style.border = '0px';
		form_frame.scrolling = 'no';
		form_frame.width = 300;
		form_frame.height = 470;
		
		this.placeholder.appendChild(form_frame);*/
		if(this.hide_but_on_form_display){
			this.share_but.style.display = 'none';
		}
		this.form_is_displayed = true;
		
		//show background
		WorldViewerShareWidget.background.style.display = 'block';
		
		var form_plh = document.createElement('div');
		form_plh.className = 'WVshare_form_plh';
		
		var form_main = document.createElement('div');
		form_main.className = 'WVshare_form_main';
		form_plh.appendChild(form_main);
		
		var form_elem = document.createElement('form');
		form_elem.onsubmit = function(){
			_self.submit_form();
			return false;
		}
		form_main.appendChild(form_elem);
		
		var title_label = document.createElement('div');
		title_label.className = 'WVshare_label';
		title_label.innerHTML = 'Page Title';
		form_elem.appendChild(title_label);
		
		var title_value = document.createElement('div');
		title_value.className = 'WVshare_value';
		title_value.style.width = '250px';
		title_value.innerHTML = this.page_title;
		form_elem.appendChild(title_value);
		
		var url_label = document.createElement('div');
		url_label.className = 'WVshare_label';
		url_label.innerHTML = 'Page URL';
		form_elem.appendChild(url_label);
		
		var url_value = document.createElement('div');
		url_value.className = 'WVshare_value';
		url_value.style.width = '250px';
		url_value.innerHTML = this.page_url;
		form_elem.appendChild(url_value);
		
		var user_name_label = document.createElement('div');
		user_name_label.className = 'WVshare_label';
		user_name_label.innerHTML = 'Your Name<sup>*</sup>';
		form_elem.appendChild(user_name_label);
		
		var user_name_value = document.createElement('div');
		user_name_value.className = 'WVshare_value';
		var user_name_input = document.createElement('input');
		user_name_input.type = 'text';
		user_name_input.className = 'WVshare_text_input';
		user_name_input.name = 'user_name';
		user_name_value.appendChild(user_name_input);
		form_elem.appendChild(user_name_value);
		if(typeof(this.settings.your_name)=='string'){
			user_name_input.value = this.settings.your_name;
		}
		
		var friend_name_label = document.createElement('div');
		friend_name_label.className = 'WVshare_label';
		friend_name_label.innerHTML = 'Your Friend\'s Name<sup>*</sup>';
		form_elem.appendChild(friend_name_label);
		
		var friend_name_value = document.createElement('div');
		friend_name_value.className = 'WVshare_value';
		friend_name_value.innerHTML = "<input class=\"WVshare_text_input\" type=\"text\" name=\"friend_name\" value='' />";
		form_elem.appendChild(friend_name_value);
		
		var friend_email_label = document.createElement('div');
		friend_email_label.className = 'WVshare_label';
		friend_email_label.innerHTML = 'Your Friend\'s Email<sup>*</sup>';
		form_elem.appendChild(friend_email_label);
		
		var friend_email_value = document.createElement('div');
		friend_email_value.className = 'WVshare_value';
		friend_email_value.innerHTML = "<input class=\"WVshare_text_input\" type=\"text\" name=\"friend_email\" value='' />";
		form_elem.appendChild(friend_email_value);
		
		var comments_label = document.createElement('div');
		comments_label.className = 'WVshare_label';
		comments_label.innerHTML = 'Your Comments';
		form_elem.appendChild(comments_label);
		
		var comments_value = document.createElement('div');
		comments_value.className = 'WVshare_value';
		var comments_textarea = document.createElement('textarea');
		comments_textarea.className = 'WVshare_text_input';
		comments_textarea.name = 'comments';
		comments_textarea.style.height = '40px';
		comments_value.appendChild(comments_textarea);
		var available_chars = document.createElement('div');
		available_chars.innerHTML = "available characters: ";
		var available_chars_value = document.createElement('span');
		available_chars_value.innerHTML = max_comment_length;
		available_chars.appendChild(available_chars_value);
		comments_value.appendChild(available_chars);
		form_elem.appendChild(comments_value);
		comments_textarea.onchange = function(){
			_self.character_counter(comments_textarea, available_chars_value, 0, max_comment_length);
		}
		comments_textarea.onkeyup = function(){
			_self.character_counter(comments_textarea, available_chars_value, 0, max_comment_length);
		}
		comments_textarea.onblur = function(){
			_self.character_counter(comments_textarea, available_chars_value, 0, max_comment_length);
		}
		this.comments_elem = comments_textarea;
		
		if(typeof(this.settings.comments)=='string'){
			comments_textarea.value = this.settings.comments;
		}
		_self.character_counter(comments_textarea, available_chars_value, 0, max_comment_length);
		
		var antispam_label = document.createElement('div');
		antispam_label.className = 'WVshare_label';
		antispam_label.innerHTML = 'Antispam Number<sup>*</sup>';
		form_elem.appendChild(antispam_label);
		
		var antispam_img = document.createElement('div');
		antispam_img.className = 'WVshare_value';
		this.antispam_img = document.createElement('img');
		this.antispam_img.src = this.widget_url+"/lib/turing/antispam.php?"+Math.random();
		antispam_img.appendChild(this.antispam_img);
		form_elem.appendChild(antispam_img);
		
		var antispam_value = document.createElement('div');
		antispam_value.className = 'WVshare_value';
		antispam_value.innerHTML = "<input type=\"text\" name=\"antispam\" value=\"\" size=\"5\" maxlength=\"5\" />";
		form_elem.appendChild(antispam_value);
		
		var button_plh = document.createElement('div');
		button_plh.align = 'center';
		button_plh.className = 'WVshare_value';
		button_plh.innerHTML = "<input class=\"WVshareButton\" type=\"submit\" name=\"submitted\" value=\"Share\" />";
		var cancel_but = document.createElement('input');
		cancel_but.className = 'WVshareButton';
		cancel_but.type = 'button';
		cancel_but.value = 'Cancel';
		cancel_but.onclick = function(){
			_self.hide_form();
		}
		var spacer = document.createElement('span');
		spacer.innerHTML = '&nbsp;&nbsp;&nbsp;';
		button_plh.appendChild(spacer);
		button_plh.appendChild(cancel_but);
		form_elem.appendChild(button_plh);
		
		
		document.body.appendChild(form_plh);
		try{		
			scroll_top = document.documentElement.scrollTop;
			form_plh.style.top = (100 + scroll_top) + "px";
			form_plh.style.left = "50px";
		}catch(e){
		}
		
		
		this.form_plh = form_plh;
		this.form_elem = form_elem;
	}
	
	this.hide_form = function(){
		//hide background
		WorldViewerShareWidget.background.style.display = 'none';
		
		this.form_plh.parentNode.removeChild(this.form_plh);
		this.form_is_displayed = false;
		this.share_but.style.display = '';
	}
	
	this.character_counter = function (input_element, counter_element, nim_chars, max_chars){
		if(typeof(input_element)=='object'){
			var current_chars = input_element.value.length;
			
			counter_element.innerHTML = max_chars - current_chars;
			counter_element.style.fontWeight = 'bold';
			
			if((!nim_chars || current_chars >= nim_chars) && (!current_chars || current_chars <= max_chars)){
				counter_element.style.color = '#00AA00';
			}
			else{
				counter_element.style.color = '#AA0000';
			}
		}
	}
	
	this.submit_form = function(){
		if(this.validate_form()){
			
			var request_url = this.widget_url + "/index.php";
		
			request_url += "?op=submit";
			request_url += "&type=email";
			request_url += "&page_url="+escape(this.page_url);
			request_url += "&page_title="+escape(this.page_title);
			request_url += "&friend_email="+escape(this.form_elem.friend_email.value);
			request_url += "&user_name="+escape(this.form_elem.user_name.value);
			request_url += "&friend_name="+escape(this.form_elem.friend_name.value);
			request_url += "&comments="+escape(this.comments_elem.value);
			request_url += "&antispam="+escape(this.form_elem.antispam.value);
			
			request_url += "&output=jquery";
			request_url += "&callback=?";
			
			jQuery.ajax({
				type: "GET",
				url: request_url,
				data: {},
				success: function(data){_self.form_submit_callback(data)},
				dataType: 'json'
			});
		}
	}
	
	this.form_submit_callback = function(data){
		if(data.successfull){
			alert('message sent successfully');
			this.hide_form();
		}
		else if(data.error){
			alert(data.error);
			this.antispam_img.src = this.widget_url+"/lib/turing/antispam.php?"+Math.random();
		}
		else{
			alert('an error occured while sending the message');
			this.antispam_img.src = this.widget_url+"/lib/turing/antispam.php?"+Math.random();
		}
	}
	
	this.validate_form = function(){
		var alert_text = '';
		
		if(this.form_elem.user_name.value.length<3){
			alert_text += 'Please enter your name\n';
		}
		
		if(this.form_elem.friend_name.value.length<3){
			alert_text += 'Please enter your friend\'s name\n';
		}
		
		if(this.form_elem.antispam.value.length<5){
			alert_text += 'Please enter the code in the image\n';
		}
		
		if(alert_text){
			alert(alert_text);
			return false;
		}
		
		return true;
	}
}

WorldViewerShareWidget.debug = function(message){
	if(typeof(console)=='object' && typeof(console.log)=='function'){
		console.log('WorldViewerShareWidget: '+message);
	}
}

} //if(typeof(WorldViewerShareWidget)!='function')