﻿/*
 * jQuery UI cgToolTip' üzerinden Cüneyt AYSAN tarafından yazıldı. Eylul 2009
 *
 * Depends:
 *	    ui.core.js
 */

(function($) {
		
		var rootPath = "/";
		$.widget("ui.cgToolTip", {
			
			_init: function() {
				this.element.css("display","inline-block");
				this.options.cgToolTip = '#cgToolTip';

				//cgToolTip alaninin olusturulmasi
				if( $('#cgToolTip').attr('id') == null){
					var tipC = '<div id="cgToolTip" class="cgtooltiparea">   <div class="cgtooltiptextleft"> '
							+' 		<div class="cgtooltiptext2"> '
							+' 			<div class="cgtooltiptext3"> '
							+' 				<p class="cgimage"> '
							+' 					<img src="'+rootPath+'global/cgTooltip/comment_warning_48.png" alt="avatar" /></p> '
							+' 				<p id="cgcontent"> '		
							+' 				</p> '
							+' 			</div> '
							+' 		</div> '
							+' 		</div> '
							+' 	<div class="cgpointer"> '
							+' 			<img class="cgtooltiparrowleft" src="'+rootPath+'global/cgTooltip/comment-arrow-flip.gif" alt=" " align="bottom" style="border-width: 0px;" /> '
							+' 	</div> </div>';
					$('body').append(tipC);
				}
				
				
				
				
				if(this.options.mode == 'hover'){
					$(this.element).hover(hoverHandler,outHandler);
					//altindaki diger form alanlarinda focus durumlari icin
					var _area = '#' + this.element.attr("id");
					$('#' + this.element.attr("id") + ' input').cgToolTip({area:_area,mode:'focus',onShow:this.options.onShow,tid:this.options.tid});
					$('#' + this.element.attr("id") + ' textarea').cgToolTip({area:_area,mode:'focus',onShow:this.options.onShow,tid:this.options.tid});
					$('#' + this.element.attr("id") + ' select').cgToolTip({area:_area,mode:'focus',onShow:this.options.onShow,tid:this.options.tid});
				}
				else if(this.options.mode == 'focus'){
					$(this.element).focus(hoverHandler);
					$(this.element).blur(outHandler);
				}
				else if(this.options.mode == 'manual'){
				}
				
				
		
				
			},
			
			
	
			_show: function(){
				
				$('#cgToolTip #cgcontent').html('');
				var o = this.options;
				
				if(o.mode=='manual'){
					prepare(this.element,o);
				}
				
				//$(o.cgToolTip).show();
				$(o.cgToolTip).fadeIn("fast");
			},
			
			_hide: function(){
				var o = this.options;
				$(o.cgToolTip).hide();
			}
		});    
		
		$.extend($.ui.cgToolTip, {
			defaults: {
				cgToolTip: '',
				onShow: undefined,
				onHide: undefined,
				mode: 'hover',
				// provide a speed for the animation
				speed: 1000,
				// provide a period for the popup to keep showing
				period: 2000, 
				// default the animation algorithm to the basic slide
				animation:'slide'
			},
			animations: {
				slide: function(e, options) {
					
				},
				fade: function(e, options) {
					
				}
			}
		});
		
		function hoverHandler(event)
		{
			//Fetch Options
			var o = $.data(this,'cgToolTip').options;
			
			//Element who raised the event
			var $this = $(this);
			
			//Helper functon for Positioning and Calling Callback function
			prepare($this,o);
			
			//Call Show method of the cgToolTip Widget,
			//Show method should play on any required animations
			$.data(this,'cgToolTip')._show();
		};
		function outHandler(event)
		{
			//Fetch Options
			var o = $.data(this,'cgToolTip').options;
			
			//Get tooptip Element
			var $cgToolTip =  $(o.cgToolTip);
			
			//If call back method defined, initiate the call
			if($.data(this,'cgToolTip').options.onHide){
				$.data(this,'cgToolTip').options.onHide.call(this, {target:$(this)});
			}
			
			//Call Hide method of the cgToolTip Widget,
			//Hide method should play on any required animations
			$.data(this,'cgToolTip')._hide();
		};
		function prepare(jObj, options)
		{
			var $cgToolTip =  $(options.cgToolTip);
			
		
			if (options.area == null){
				options.area = jObj[0];
			};
			
		
			var element = jObj[0];
			//var offset = jObj.offset();
			
			var offset = $(options.area).offset();
		
			
			//var left = offset.left + jObj.width();
			var left = offset.left + $(options.area).width();
			var top = offset.top-5;
			
			if(options.onShow){
				options.onShow.call(this, {target:jObj});
			}
			
			if($(window).width()-offset.left <= $cgToolTip.width()) {
				left = offset.left - $cgToolTip.width();
			}	
			else{
				left += 5;
			}
			$cgToolTip.css({position:'absolute', top:top+'px', left:left+'px'});
			
		

			//icerigin yazilmasi//////////////
			if(options.tid != null){
				$('#cgToolTip #cgcontent').load(rootPath + 'modul/ShowTooltip/tooltip.aspx?id=' + options.tid);
				$("#cgToolTip #cgcontent").ajaxComplete(function(event, request, settings){
					//$(this).html(options.tid);
				});
				$("#cgToolTip #cgcontent").ajaxError(function(event, request, settings){
					//hata oldu
					$(this).html("!!!yardım bilgisi açılamadı");// + settings.url
				});			
			}else{
				
			}
		
		
		};

})(jQuery);
