var QTEXT = QTEXT || {};

QTEXT.WordQuery = (function(){
	
	
	
  var selection, queryButton, selectedRange, selectedText;
  
  function handleClick(event) {
    if (queryButton){
      cleanUp();
    }
    
    selection 		= getSelection();
    selectedText 	= selection && selection.toString();
    if (selectedText) {
      window.setTimeout(insertButton, 0);
      event.stop();
    }
  }
  
  function getSelection() {
  	// TRY: Alt methods for IE and non-IE
    return Try.these(
      function() { return window.getSelection() },
      function() { return document.getSelection() },
      function() { 
        var selection 			= document.selection && document.selection.createRange();
        selection.toString 	= function() { return this.text };
        return selection;
      }
    ) || false;
  }
  
  function insertButton() {


    if ( $('QTEXT_query_modal') ) {
    	$('QTEXT_query_modal').hide();
    }
    
    
		queryButton = new Element(
				'span', {
					'className':'QTEXT_query_icon_button',
					'id':'QTEXT_query_icon_button',
					'title':'Click to find more information about this selection!',
					'style': 'margin:-20px 0 0 -20px; position:absolute; background:url(/img/_icon_query_.png);width:25px;height:29px;cursor:pointer;_background-image: none;filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="/img/_icon_query_.png", sizingMethod="image");'
				}
		);
		
		

		if (Prototype.Browser.IE) {
			var tmp = new Element('div');
			tmp.appendChild(queryButton);
			selectedRange = selection.duplicate();
			selectedRange.setEndPoint( "StartToEnd", selection);
			selectedRange.pasteHTML(tmp.innerHTML);
			queryButton = $('QTEXT_query_icon_button');
		}
		else {
			var range = selection.getRangeAt(0);
			selectedRange = document.createRange();
			selectedRange.setStart(selection.focusNode, range.endOffset);
			selectedRange.insertNode(queryButton);
		}

		queryButton.observe('mouseup', querySelection, true);
  }
  
  function cleanUp() {
    selection 		= null;
    
    selectedRange && selectedRange.pasteHTML && selectedRange.pasteHTML('');
    selectedRange = null;
    
    if ( $('QTEXT_query_icon_button') ) {
    	queryButton.stopObserving('mouseup', querySelection);
    	queryButton.remove();
    	queryButton 	= null;
    }
    
    if ( $('QTEXT_query_modal') ) {
    	$('QTEXT_query_modal').hide();
    }
    
    selectedText 	= '';
  }
  
  
  //search/index.php?cx=partner-pub-1311350140929932%3Ap1uhqz8wxh7&cof=FORID%3A11&ie=ISO-8859-1&q=Diet&sitesearch=

	function pageWidth() {	
		return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ?       document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;
	} 
  
  function querySelection(event) {

		

		var left_gutter_w	= ( pageWidth() - 960 ) / 2 ;
		
		
		//alert(left_gutter_w);
		
		
		var left_ff				= $('wrap_right').cumulativeOffset().left;
		var left_ie				= $('wrap_right').cumulativeOffset().left - left_gutter_w;
		
		var left_pos			= Prototype.Browser.IE ? left_ie : left_ff;
		
		
		var top_icon_pos	= $('QTEXT_query_icon_button').cumulativeOffset().top;
		
		
		$('QTEXT_query_modal').setStyle({'left': left_pos + 'px', 'top' : top_icon_pos + 'px' }).show();
		
   	var args_serial	= 'query=' + encodeURIComponent(selectedText) + '&no_floor=true';
   	


		if ( $('QTEXT_query_modal') ) {
			new Ajax.Request(
				'/info/info_xhr_get_query_results.php',
				{
					method: 'get', 
					parameters: args_serial,
					onComplete: function (transport) {
						$('mbod').update(transport.responseText);
						
					}
				}		
			);
		}
   	
    event.stop();
  }
  
  return {
    initialize: function() {
      //document.observe('mouseup', handleClick, false);
      
      $('wrap_article').observe('mouseup', handleClick, false);
      /*
      if ( !Prototype.Browser.IE && $('wrap_article') ) {
      	alert('test return init wrap article');
      	$('wrap_article').observe('mouseup', handleClick, false);
      }
      */
    }
  };
  
})();

Event.observe(window, 'load', function () {
	QTEXT.WordQuery.initialize();
});

/*
document.observe("dom:loaded", function () {
	QTEXT.WordQuery.initialize();
}, false);
*/





