var vrTipOver;
var vrTipOut;

var vrtip = {
	tid: 0,
	isinit: 0,
	init: function(){
		if(this.isinit++) return;
		
		vrtip.element = $('<div class="vrtip"><div class="vrtip-container"><div class="vrtip-wrapper"><div class="vrtip-content"></div></div></div><div class="vrtip-background"></div></div>')
		
		$('body').append(vrtip.element); 
		
		vrtip.content = $('.vrtip-content');
		
		vrtip.wrapper = $('.vrtip-wrapper');		
		
		var over = function(){
			if(vrtip.tid){clearTimeout(vrtip.tid); vrtip.tid = 0; }
			vrtip.button = $(this);
			var offset = vrtip.button.offset();
			
			var vrXY = vrtip.button.position();//ashley added ...Get the coordinates of the vrtip
			var vrposition = vrXY.left + 220;//ashley added ...Get the vrtip's position
			
			var tipWidth = vrtip.button.width(); //ashley added ...Find width of vrtip
	        var tipVisX = $(window).width() - (vrposition + tipWidth);//ashley added ...Distance of element from the right edge of viewport
			
			vrtip.element.css({top: offset.top - 32, left: offset.left + vrtip.button.width() + 3}); 
			
			//ashley added ...If vrtip exceeds the X coordinate of viewport
			if ( tipVisX < 220 || vrtip.button.attr('tipAlign') == 'right') { 
				vrtip.element.css({top: offset.top - 32, left: offset.left -313});
				vrtip.wrapper.css({paddingRight: '38px', paddingLeft: '26px'}); 
				$('.vrtip-container').addClass('vrtip-container-right');
				$('.vrtip-background').addClass('vrtip-background-right');
	        }
	        else {
		        vrtip.element.css({top: offset.top - 32, left: offset.left + vrtip.button.width() + 3});
		        vrtip.wrapper.css({lineHeight: 'normal', textAlign: 'left', paddingRight: '26px', paddingLeft: '38px'});
		        $('.vrtip-container').removeClass('vrtip-container-right');
				$('.vrtip-background').removeClass('vrtip-background-right');
		        $('.vrtip-container').addClass('vrtip-container');
				$('.vrtip-background').addClass('vrtip-background');
	        } 
	        //********* End ashley's additions

			/*
if(vrtip.button.attr('tipAlign') == 'right'){
				//To show tooltip on left side of element
				vrtip.element.css({top: offset.top - 32, left: offset.left -313});
				vrtip.wrapper.css({paddingRight: '38px', paddingLeft: '26px'}); 
				$('.vrtip-container').addClass('vrtip-container-right');
				$('.vrtip-background').addClass('vrtip-background-right');
			}
*/
						
			vrtip.content.html(vrtip.button.attr('title')); 
			vrtip.button.attr('title', ''); // remove it so it doesn't display along side the tooltip
			vrtip.wrapper.css({lineHeight: 'normal', textAlign: 'left'}); // in order calculating the text height accurately
			vrtip.element.show();
			if(!vrtip.button[0].h)vrtip.button[0].h = vrtip.content.height();
			if(vrtip.button[0].h<20) vrtip.wrapper.css({lineHeight: '31px', textAlign: 'center'});
		};
		
		vrTipOver = over;
		
		vrtip.timeout = function(){
			if(vrtip.tid) clearTimeout(vrtip.tid);
			vrtip.tid = 0;
			vrtip.element.hide();
		}
		
		var out = function(){
			if (vrtip.button) {
				vrtip.button.attr('title', vrtip.content.html());
			}
			if(vrtip.tid){clearTimeout(vrtip.tid); vrtip.tid = 0; }
			vrtip.tid = setTimeout(vrtip.timeout, 1000);
		};
		
		vrTipOut = out;
		
		$('.tooltip').each(function(){
			var ThisObj = $(this);
			ThisObj.mouseover(over); 
			ThisObj.mouseout(out); // this works better than hover(over, out)
		});
		$('.inputtip').each(function(){
			var ThisObj = $(this);
			vrtip.clearField(ThisObj);
		});
	},
		
	faceboxclick: function(ele){ // for facebox inputs
		if(ele.isactive) return;
		ele.isactive = true;
		var input = $(ele);
		vrtip.clearField($(ele));
		var input_empty = input.attr('title');
		if((typeof(input_empty)!='string') || (input_empty=='')) input_empty = vrtip.defaultText;
		if (input.val() === input_empty) {
				input.val("").css(vrtip.clearStyleOff); //input.val("").removeClass('off');
				}
		return false;
	},
	
	defaultText: 'enter text',
	clearStyleOn: {color: '#333'},
	clearStyleOff: {color: '#777777'},
	clearField: function(input){
		var input_empty = input.attr('title');
		if((typeof(input_empty)!='string') || (input_empty=='')) input_empty = vrtip.defaultText;
		
		if (input.val() === "") { // init setting
			input.css(vrtip.clearStyleOff);
			input.val(input_empty);
		}
		
		input.keyup( 
			function (e) {
				if (input.val().length > 0) {
					input.css(vrtip.clearStyleOn); //input.removeClass();
				}else{
					input.css(vrtip.clearStyleOff); //input.addClass('off');
				}
			}
		);
		input.focus(
			function (e) {
				if (input.val() === input_empty) {
					input.val("").css(vrtip.clearStyleOff); //input.val("").removeClass('off');
				}
			}
		);
		input.blur(
			function (e) {
				if (input.val() === "") {
					input.val(input_empty).css(vrtip.clearStyleOff); //input.val(input_empty).addClass('off');
				}
			}
		);
	
	},
	retip : function(){
			$('.inputtip').each(function(){
				var ThisObj = $(this);
				vrtip.clearField(ThisObj);
			});
	},
	
	remove : function(selector){
		if (selector.hasClass("tooltip")) {
			selector.removeClass("tooltip");
		}
		selector.unbind('mouseover').unbind('mouseout');
	},
	
	readd : function(selector){
		if (!selector.hasClass("tooltip")) {
			selector.addClass("tooltip");
		}
		selector.mouseover(vrTipOver)
		selector.mouseout(vrTipOut)		
	},
	
	endofclass: 0
};


	

$(document).ready(function(){
	vrtip.init();	
});

