var form_tooltip;

function hideFormTooltip(){
	form_tooltip.hide();
}

function showFormTooltip(obj){
	var text = obj.html();
	var content; 
	var vp;
	
	if(text == null)
		return false;
	
	if((vp = text.indexOf('-')) != -1){
		var title = $.trim(text.substr(0, vp-1));
		content = $.trim(text.substr(vp+1, text.length));
	}
	else{
		content = text;
	}
	
	
	content = '<strong class="site-form-tooltip-title">' + title + "</strong>" + content;
	
	form_tooltip.find('.tooltip-body').html(content);
	
	obj.show();
	var pos_top = obj.offset().top;
	var pos_left = obj.offset().left;	
	obj.hide();
	
	form_tooltip.show();
	
	if(pos_top + form_tooltip.height() - $(window).scrollTop() > $(window).height() + 15)	
		pos_top -= (pos_top + form_tooltip.height() - $(window).scrollTop() - $(window).height() + 15);
	
	form_tooltip.css({
		top: pos_top + 'px',
		left: (pos_left + 25) + 'px'
	});
	
	
}

$.fn.setCursorPosition = function(pos) {
  this.each(function(index, elem) {
    if (elem.setSelectionRange) {
      elem.setSelectionRange(pos, pos);
    } else if (elem.createTextRange) {
      var range = elem.createTextRange();
      range.collapse(true);
      range.moveEnd('character', pos);
      range.moveStart('character', pos);
      range.select();
    }
  });
  return this;
};


$(document).ready(function(){
	
	form_tooltip = $('.site-form-tooltip');
	form_tooltip.css({opacity: 0.95});
	
	$('.site-pattern-input input').keydown(function(event){
		event.stopPropagation();
		var text = $(this).attr('value');
		
		var text_len = text.length;
		var code = parseInt(event.which);
		
		if(event.keyCode == 46){// delete
			code = 8;
		}
		
		if($.inArray(parseInt(event.keyCode), [35,36,37,38,39,40]) != -1){ // strzałki i home end
			return false;
		}
		
		var number = code - 48;
		var new_text = new String();
		var changed = false;
		var pos;
		
		// ie7 hack
		var old_text = [];
		
		var jocker = '_';
		var separator = '-';
		
		if((code < 48 || code > 57) && code != 8 && code != 13 && code != 0){
			return false;
		}
		

		if(code == 8){
			for(i = text_len - 1; i >= 0; i--){
				old_text[i] = text.substring(i, i+1);
				if(old_text[i] != separator && old_text[i] != jocker && !changed){
					new_text = jocker + new_text;
					changed = true;
					pos = i;
				}
				else{
					new_text = old_text[i] + new_text;
				}
			}
			
			$(this).attr('value', new_text);
			$(this).setCursorPosition(pos);			
			
			return false;
		}
		
		if(code == 0 || code == 13){
			return true;
		}				
		
		// ie7 hack
		old_text = [];
		
		for(i = 0; i < text_len; i++){
			// ie7 hack
			old_text[i] = text.substring(i, i+1);
			
			
			if(old_text[i] == jocker && !changed){				
				new_text += number;
				changed = true;
				pos = i+1;
				if(old_text[pos] == separator)
					pos++;
			}
			else{
				new_text += old_text[i];
			}
		} 	
		
		
		$(this).attr('value', new_text);
		
		if(pos < text_len)
			$(this).setCursorPosition(pos);
		

		return false;
	})
	.bind('focus click',function(event){
		var jocker = '_';
		var separator = '-';
		event.stopPropagation();
		var text = $(this).attr('value');		
		var pos = 0;
		
		// ie7 hack
		var old_text = [];
		for(var i = text.length - 1; i >= 0; i--){
			old_text[i] = text.substring(i, i+1);
			
			if(old_text[i] != jocker && old_text[i] != separator){
				pos = i+1;
				
				if(old_text[pos] == separator)
					pos++;
				break;
			}
		}
		
		$(this).setCursorPosition(pos);
	});
	
	$('.element input').bind('focus', function(){
		hideFormTooltip();
		var help = $(this).parent().find('.site-input-description');

		showFormTooltip(help);
		
	}).bind('blur', function(){
		hideFormTooltip();
	});
});

