var Ajax;
if (Ajax && (Ajax != null)) {
	Ajax.Responders.register({
	  onCreate: function() {
        if($('spinner') && Ajax.activeRequestCount>0)
          Effect.Appear('spinner',{duration:0.5,queue:'end'});
	  },
	  onComplete: function() {
        if($('spinner') && Ajax.activeRequestCount==0)
          Effect.Fade('spinner',{duration:0.5,queue:'end'});
	  }
	});
}



function bookmark(url, description)
{

bookmarkurl=url
bookmarktitle=description
if (document.all)
window.external.AddFavorite(bookmarkurl,bookmarktitle)
else if (window.sidebar) // firefox
window.sidebar.addPanel(bookmarktitle, bookmarkurl, "");
}

function changeLanguage(lang){
	
	var _cu = window.location.href;
	var _u = _cu;
	var param_pattern = /.+?.+=.+/;
	var odl_pattern = /odl=[^&$=]+/;

	if(odl_pattern.test(_cu)){
		_u = _cu.replace(odl_pattern, "odl=" + lang);
	}else{
		if(param_pattern.test(_cu)){
			_u = _cu + "&odl=" + lang;
		}else{
			_u = _cu + "?odl=" + lang;
		}
	}
	window.location.href = _u;
}

///callout


    var _doc = window.document;
    _doc = Element.extend(_doc);

    function createElement(type, styleClass, parent){
    	var _e = document.createElement(type);
    	Element.extend(_e); 
    	if(styleClass != null){
    		_e.addClassName(styleClass);
    	}
    	if(parent != null){
    		parent.update(_e);
    	}
    	return _e;
    } 			

    Element.addMethods({
    	createCallout:function(element, contentElement, position){
    	  	element = $(element); 

    	  	contentElement = $(contentElement) || contentElement;
    	  	
    	  	var stylePrefix = "calloutUp"
        	var insertPosition = "after";
    	  	if(position == "top"){
    			stylePrefix = "calloutDown";
    	  	}
    	  	
    	  	element.calloutContainer = createElement("div");
    	  	element.calloutContainer.position = position;

    	  	
    		var callout = createElement("div", stylePrefix, element.calloutContainer);
    		var callout2 = createElement("div", stylePrefix + "2", callout);

    		var contentContainer = createElement("div", stylePrefix + "Container");
    		contentContainer.update(contentElement);
    		
    		if(position == "top"){
    			callout.insert({before: contentContainer});
    			
    		}else{
    			callout.insert({after: contentContainer});
    		}
    		contentContainer.show();
    		
    		element.calloutArrow = callout;

    },

        
    	callout:function(element, contentElement, position){
    	  	element = $(element); 
			    	
    	  	element.createCallout(contentElement, position);

    	  	if(position == "top"){
    			element.insert({before: element.calloutContainer});
    			
    		}else{
    			element.insert({after: element.calloutContainer});
    		}
    		element.setCalloutVisible(true);
    		
    	
    	},

    	hasPoint:function(element, pointX, pointY){
    		element = $(element); 
    		var _p = element.getOffsetParent();
    		_ptop = _p.viewportOffset ()["top"];
    		_pleft = _p.viewportOffset ()["right"];
    		var _top = element.positionedOffset()["top"] - _ptop;
    		var _left = element.positionedOffset()["left"] - _pleft;
        	if(_top > pointY || _top + element.getHeight() < pointY){
    				
        			return false;
        	}
    		
        	if(_left > pointX || _left + element.getWidth() < pointX){
        		
    			return false;
        	}
        
    		return true;
    	},

    	
    	addTooltip:function(element, contentElement, position){
    		
    	  	element = $(element); 
    	
    	  	element.createCallout(contentElement, position);

    	  
    		
    	  	element.observe('mouseover', function(event){
    	  		if(element.calloutContainer.ancestors().length == 0){
    				document.body.appendChild(element.calloutContainer);
        		}

        	  	element.setCalloutVisible(true);
        	  	
    			        		
            	var position = element.calloutContainer.position;
        	 

        		var arrowOffset = element.calloutArrow.positionedOffset()["left"] + element.calloutArrow.getWidth()/2 - element.calloutContainer.positionedOffset()["left"] ;
        		
    	   	  	var _top = element.viewportOffset ()["top"] - (element.cumulativeOffset ()["top"]  - event.pointerY()) ;
    	   	  
    	  	  	var _left = event.pointerX() - arrowOffset;
    	  	 
    	  	  	if(position == "top"){
    				_top = _top - element.calloutContainer.getHeight() - 15;
    	  	  	}else{
    				_top = _top + 15;
    		    	
    	  	  	}
    	  	  
    	  		element.calloutContainer.setStyle(
    	  			{ "position":'fixed',
    					"top": _top + "px",
    					"left":_left + "px"
    				}

    			   	);

    	  		
    	  		element.setCalloutVisible(true);
    	  	} );


    	  	element.observe('mouseout',element.mouseOutHandler);
    	  	
    		
    	},

	     mouseOutHandler:function(element, event){
    	    
    		element = $(element);  

        	if(!element.calloutContainer){
    			return;
        	}
        
        	var _repeat_time = 0;
        	new PeriodicalExecuter(function(pe) 
        	{   
        		
        		if(_repeat_time >= 1 || (element.hasPoint(_mouseX, _mouseY) == false &&
        				element.calloutContainer.hasPoint(_mouseX, _mouseY) == false
        				)){
        			
        			element.setCalloutVisible(false);
        			pe.stop(); 
        		//	_doc.stopObserving('mousemove', updateMousePosition);
        			 
        		}
        		_repeat_time++;

        	}, 0.5); 
        	
        	
        },

        
    	setCalloutVisible:function(element, visible){
    		element = $(element); 
    		
    		if(visible == false){
				
    			element.calloutContainer.fade({ duration: 0.5 });
    			
    		}else{

        	  	element.calloutContainer.appear({ duration: 0.5 });
    		}
    	}

    });

    var _mouseX;
    var _mouseY;

    _doc.observe('mousemove', updateMousePosition);
    function updateMousePosition(event){
    	_mouseX = event.pointerX();
    	_mouseY = event.pointerY();
    }

    function bubbledFromChild(element, event)  { 
    	  var target = event.element(); 
    	  if (target === element) target = event.relatedTarget; 
    	  return (target && target.descendantOf(element)); 



  } 



///end of callout
    
function wait(millis) 
{
    var date = new Date();
    var curDate = null;

    do { curDate = new Date(); } 
    while(curDate-date < millis);
} 


    	
//ajax
function fill_container(containerid, remotePage, parameters){

	new Ajax.Updater(
			containerid,
			remotePage,
			parameters);
}
//end of ajax
