﻿window.addEvent('domready', function() {
	$$('#add_this_btn a')[0].set({
		'events': {
			'mouseover': function(){
				$('add_this_tooltip').setStyle('display','block');
			}, 
			'mouseout': function(){
				$('add_this_tooltip').setStyle('display','none');
			}, 
			'click': function(){
				return addthis_sendto();
			}
		}
	})
	
	new InlineTranslation();
});

var InlineTranslation = new Class({
	initialize: function(){
		this.onoff = $$('#inline_translation_switch a')[0];
		
		//if page is not ready
		if (!$('translateMode')) {
			var not_ready_bubble = $('inline_translation_notready');
			
			this.onoff.addEvent('mouseover',function(e){
				var t = $(e.target);
				var pos = t.getPosition();
				
				not_ready_bubble.setStyle('display','block');
			}).addEvent('mouseout',function(e){
				not_ready_bubble.setStyle('display','none');
			});
			return false;
		} else {
			var tooltip_bubble = $('inline_translation_tooltip');
			
			this.onoff.addEvent('mouseover',function(e){
				var t = $(e.target);
				var pos = t.getPosition();
				tooltip_bubble.setStyle('display','block');
			}).addEvent('mouseout',function(e){
				tooltip_bubble.setStyle('display','none');
			});
		}
		
		this.state = $('translateMode').get('value'); 
		this.request = new Request({method: 'get', url: '/translate_inline'});
		
		//trun on if it is already on
		if (this.state == 1) {
			this.on();
		} else {
			this.off();
		}
	},
	
	on: function(){
		this.state = 1;
		
		var self = this;
		var translateUrl = $('translateUrl').get('value');
		var menuElem = $('inline_translation_menu');
		
		
		this.onoff.removeEvents('click').set({
			'class': 'on',
			'events' : {
				'click': function(e){
					self.off();
					e.stop();
				}
			}
		});
		
		$(document.body).addClass('inline_translating').set({
			'events' : {
				'contextmenu': function showMenu(e) {
					var t = $(e.target);
					var selector = "span.translatable";
	
					if( t.match(selector) ) {
						//do nothing LOL
					} else if ( t.getParents(selector)!='' ) {
						t = t.getParent(selector);	//move to the span
					} else {
						return true; //leave if not translatable
					}
	
					e.stop();	//disable contextmenu
					
					var keyword = t.get('lang');
					var pos = t.getPosition($('larger_wrap'));
					
					//show menu and set position
					menuElem.setStyles({
						display:'block',
						top: e.page.y+5,
						left: pos.x-35
					});
					//change tooltips' content
					menuElem.getElements('p').set('text', keyword);
					menuElem.getElements('a').set('href', translateUrl + keyword);
				},
				'mouseup': function(){
					menuElem.setStyle('display','none');
				}
			}
		});
		
		this.request.send('mode=1');
		
	},
	
	off: function(){
		this.state = 0;
		var self = this;
		
		this.onoff.removeEvents('click').set({
			'class': 'off',
			'events' : {
				'click': function(e){
					e.stop();
					var guideElem = $('inline_translation_guide');
					
					//show guide
					guideElem.setStyle('display','block');
					
					//close
					guideElem.getElements('a').addEvent('click',function(){
						guideElem.setStyle('display','none');
					});
					
					//turn on button
					guideElem.getElements('input[name=on]').addEvent('click',function(){
						guideElem.setStyle('display','none');
						self.on();
					});

				}
			}
		});
		
		$(document.body).removeEvents('contextmenu').removeClass('inline_translating');
		
		this.request.send('mode=0');
	}
});