
function StripTags (text) {
	var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi;
	text = text.replace(tags, '');
	
	return text;
}

function isValidURL (url) {
	var RegExp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
	
	if (RegExp.test (url)){
		return true;
	}else{
		return false;
	}
}

function AutocompleteKeyWord (id, url)
{
	$("#" + id).autocomplete(url, {
		select: function(event, ui) { alert(ui.item); },
		minChars: 3,
		//highlight: true
		/*formatResult: function (row) {
			return row[0].replace("<em>", "").replace("</em>", "");
		}*/
		formatResult: function(row) {
			return StripTags(row[0]);
		}
	});
	
	$("#" + id).result(function(event, data, formatted) {
		if (data) {
			$("#" + id + "_id").val(data[1]);
		}
		else {
			$("#" + id + "_id").val(0);
		}
	});
	
	$("#" + id).keypress(function() {
		$("#" + id + "_id").val(0);
	});
}


function AutocompleteKeyWordNew (id, url)
{
	var obj = (typeof(id) == 'object') ? $(id) : $("#" + id);
	
	obj.autocomplete(url, {
		select: function(event, ui) { alert(ui.item); },
		minChars: 3,
		//highlight: true
		/*formatResult: function (row) {
			return row[0].replace("<em>", "").replace("</em>", "");
		}*/
		formatResult: function(row) {
			return StripTags(row[0]);
		}
	});
	
	var objId = obj.next();
	
	obj.result(function(event, data, formatted) {
		
		if (data) {
			objId.val(data[1]);
		}
		else {
			objId.val(0);
		}
	});
	
	obj.keypress(function() {
		objId.val(0);
	});
}


function capitalize (obj) {
	obj.value = obj.value.toLowerCase();
}

function DisableTableCell (td, enable)
{
	var tdObject = $("#" + td);
	var htmlControlsArray = $(":input", tdObject);
	
	if (enable) {
		
		tdObject.removeClass("disabled");
		
		for (var i = 0; i < htmlControlsArray.length; i++) {
			$(htmlControlsArray[i]).attr("disabled", false);
		}
	}
	else {
		
		tdObject.addClass("disabled", true);
		
		for (var i = 0; i < htmlControlsArray.length; i++) {
			$(htmlControlsArray[i]).attr("disabled", "disabled");
		}
	}
	
}

function InitFilterForm(form)
{
	form = $("#" + form);
	var action = form.attr("action");
	
	$("select", form).change(function() {
		
		form.submit();
		//window.location.href = action + "&" + form.serialize();
	});
	
	$(":radio", form).change(function() {
		
		form.submit();
		//window.location.href = action + "&" + form.serialize();
	});
}

function showAjaxPopup ()
{
	alert(this);
	id = $('#id');
	if (link) {
		var offset = $(link).offset();
		
		alert(offset.left);
		alert(offset.top);
	}
}

function closeAjaxPopup ()
{
	$ ('.ajax-edit-container').hide();
	clearOverlay ();
}

function openPopupWindow (link, element, mode)
{
	if (mode == 'absolute') {
		positionPopupByLink (link, element);
		element.show();
	}
	else if (mode == 'relative') {
		positionRelativePopupByLink (link, element);
		element.show();
	}
	createOverlay ();
}

function closePopupWindow (link)
{
	link.closest('div.ajax-edit-container').hide();
	
	// check if has parent opened
	if (link.parents('div.ajax-edit-container').length < 2) {
		clearOverlay();
	}
}

function showBusinessCard (e, userId)
{
	var div = $('#business_card_popup_container');
	
	// create DOM container if not wet created
	if(!div.length) {
		div = $('<div id="business_card_popup_container" class="ajax-edit-container" style="display: none;"></div>');
		div.css('position', 'absolute');
		$('body').append (div);
	}
	
	// ajax call to get data
	$.ajax({
		url: '/ajax/business-card/' + userId,
		type: 'GET',
		success: function (result) {
			// create div element for business card
			div.html (result);
			positionPopupByEvent (e, div);
			div.show();
		}
	});
}

function popupBusinessCard (link, userId, userType)
{
	var div = $('#business_card_popup_container');
	
	// if there is old DOM container for BC - remove it
	if(div.length) {
		div.remove();
	}
	
	// create new container in the context of current link
	div = $('<div id="business_card_popup_container" class="ajax-edit-container" style="display: none;"></div>');
	div.css('position', 'absolute');
	link.after (div);
	
	// ajax call to get data
	$.ajax({
		url: '/ajax/business-card/' + userId,
		data: {type : userType},
		type: 'GET',
		success: function (result) {
			// create div element for business card
			div.html (result);
			openPopupWindow (link, div, 'relative');
		}
	});
}

function hideBusinessCard (userId)
{
	$('#business_card_' + userId).remove();
}

function positionPopupByEvent (e, element)
{
	// wrap event in jQuery event object
	e = $.event.fix (e);
	element.css('top', '0px');
	element.css('left', '0px');
	element.offset({ top: e.pageY, left: e.pageX });
}

function positionPopupByLink (link, element)
{
	//var position = link.position();
	var position = link.offset();
	var top = position.top;
	var left = position.left;
	
	var windowObject = $(window);
	var border_bottom = windowObject.scrollTop() + windowObject.height();
	var border_right = windowObject.scrollLeft() + windowObject.width();
	
	var left_pos;
	var top_pos;
	var offset = 15;
	var elementWidth = element.width();
	var elementHeight = element.height();
	
	if (border_right - (offset *2) >= left + elementWidth) {
		left_pos = left + offset;
	} 
	else {
		left_pos = border_right - offset - elementWidth;
	}
	
	if (border_bottom - (offset *2)>= top + elementHeight) {
		top_pos = top + offset;
	}
	else {
		top_pos = border_bottom - offset - elementHeight;
	}
	element.css ({left:left_pos, top:top_pos});
}

function positionRelativePopupByLink (link, element)
{
	var relPosition = link.position();
	var relTop = relPosition.top;
	var relLeft = relPosition.left;
	
	var absPosition = link.offset();
	var absTop = absPosition.top;
	var absLeft = absPosition.left;
	
	var windowObject = $(window);
	var border_bottom = windowObject.scrollTop() + windowObject.height();
	var border_right = windowObject.scrollLeft() + windowObject.width();
	
	var left_pos = null;
	var top_pos = null;
	var offset = 15;
	var elementWidth = element.width();
	var elementHeight = element.height();
	
	if (relLeft == absLeft) {
		if (border_right - (offset *2) >= absLeft + elementWidth) {
			left_pos = absLeft + offset;
		} 
		else {
			left_pos = border_right - offset - elementWidth;
		}
	}
	else {
		if (border_right - (offset *2) >= elementWidth + absLeft) {
			left_pos = relLeft+offset;
		} 
		else {
			left_pos = relLeft + border_right - absLeft - elementWidth - offset;
		}
	}
	
	if (relTop == absTop) {
		if (border_bottom - (offset *2)>= absTop + elementHeight) {
			top_pos = absTop + offset;
		}
		else {
			top_pos = border_bottom - offset - elementHeight;
		}
	}
	else {
		if (border_bottom - (offset *2)>= absTop + elementHeight) {
			top_pos = relTop + offset;
		}
		else {
			top_pos = relTop + border_bottom - absTop - elementHeight - offset;
		}
	}
	element.css ({left:left_pos, top:top_pos});
}

function createOverlay ()
{
	var overlay = $('#overlay');
	
	if (!overlay.length) {
		overlay = $('<div id="overlay">&nbsp;</div>');
		$('body').append (overlay);
		
		// set width and height (if scrolls)
		var visibleDocument = $(document);
		var height = visibleDocument.height();
		var width = visibleDocument.width();
		overlay.css ('height', height + 'px');
		overlay.css ('width', width + 'px');
		overlay.click (function() {
			$('div.ajax-edit-container').hide();
			clearOverlay ();
		})
	}
	else {
		overlay.click (function() {
			$('div.ajax-edit-container').hide();
			clearOverlay ();
		})
		overlay.show();
	}
}

function unbindOverlay ()
{
	var overlay = $('#overlay');
	overlay.unbind ('click');
	overlay.attr ("unbinded", true);
}

function clearOverlay ()
{
	var overlay = $('#overlay');
	overlay.hide ();
	
	if (overlay.attr ("unbinded")) {
		
		overlay.click (function() {
			$('div.ajax-edit-container').hide();
			clearOverlay ();
		})
		
		overlay.attr ("unbinded", false);
	}
}

function showMutualFriends (link, url)
{
	var ajaxPopup = $('#ajax_edit_container_0');
	
	$.ajax({
		url: url,
		type: 'POST',
		success: function (result) {
			$("div", ajaxPopup).html(result);
			openPopupWindow (link, ajaxPopup, 'absolute');
		}
	});
}

function deleteElement (element, url, title)
{
	if (!title) title = 'item';
	if (confirm ('Наистина ли искате да изтриете този ' + title + '?')) {
		$.ajax({
			url: url,
			type: 'POST',
			success: function (result) {
				element.remove();
			}
		});
	}
}

function showCreateDiv(parent){
	parent.empty();
	parent.append('<div id="new_c_g_div_error" style="display:none;padding-bottom:5px;"></div>');
	parent.append('<div id="new_c_g_div"></div>');
	$('#new_c_g_div').append('<input type="text" id="new_contact_group_name" name="new_contact_group_name" style="width:160px;" onkeypress="if (event.keyCode == 13) {return false;}">&nbsp;<input type="button" value="  Запиши  " onclick="saveGroup($(\'#' + parent.attr('id') +'\'));" id="btn_n_g" name="btn_n_g">&nbsp;&nbsp;&nbsp;<a href="javascript:hideCreateDiv($(\'#' + parent.attr('id') +'\'));">Откажи</a>');
}
function hideCreateDiv(parent){
	parent.empty().append('<a href="javascript:showCreateDiv($(\'#' + parent.attr('id') +  '\'));">Създай нова Група контакти</a>').show(300) ;
}
function saveGroup (parent){
	if($('#new_contact_group_name').val()){
			$("#new_c_g_div_error").empty().hide();
			$.ajax({
			   type: "POST",
			   url: "/ajax/save_contact_group",
			   cache: false,
			   data: "cgrname=" + $("#new_contact_group_name").val(),
			   error: function(){
				    $("#new_c_g_div_error").empty().append('<span class="error">(!)Грешка: Заявката не може да бъде изпълнена в момента. Моля, опитайте по-късно!</span><br>').show();
			   },
			   success: function(html){
				   if(html == 'ERROR_1') {
					    $("#new_c_g_div_error").empty().append('<span class="error">(!)Грешка: Име на гупата контакти липсва!"</span><br>').show();
				   }else if(html == 'ERROR_2') {
					    $("#new_c_g_div_error").empty().append('<span class="error">(!)Грешка: Вече имате група контакти с това име!"</span><br>').show();
				   }else if(html == 'ERROR_3') {
					    $("#new_c_g_div_error").empty().append('<span class="error">(!)Грешка: Заявката не може да бъде изпълнена в момента. Моля, опитайте по-късно!"</span><br>').show();
				   }else if(html == 'ERROR_4') {
					    $("#new_c_g_div_error").empty().append('<span class="error">(!)Грешка: Достигнали сте максималния брой от 10 контакт групи"</span><br>').show();
				   } else {
					 $('#new_c_g_div_error').empty().hide();
					 $("#inv_opt_cnt_gr").append('<div class="div_chbx"><input type="checkbox" value="' + html + '" name="contact_group[]" style="margin:5px;padding:0px;">' + $('#new_contact_group_name').val() + '</div>');
					 $("#new_inv_cnt_gr").append('<div class="div_chbx"><input type="checkbox" value="' + html + '" name="new_inv_contact_group[]" style="margin:5px;padding:0px;">' + $('#new_contact_group_name').val() + '</div>');
					 hideCreateDiv(parent);
				   }
			   }
			 });
	}else{
	    $("#new_c_g_div_error").empty().append('<span class="error">(!)Грешка: Име на гупата контакти липсва!"</span><br>').show();
	}
}
var sell_u_id = 0;
function showInvForm(o, i_id, name) {
	$("#inv_opt_error").empty().hide();
	$("#inv_opt_cnt_gr").empty();
	$('#inv_opt_name').empty().append(name);
	$("#inv_opt_div_cont").show();
	sell_u_id = i_id;
	$.ajax({
		   type: "POST",
		   url: "/ajax/get_my_cgs/')",
		   cache: false,
		   data: "",
		   dataType: 'json',
		   error: function(){
			$("#inv_opt_error").empty().append('<span class="error">(!)Грешка: Проблем при визуализирането на Вашите контакт групи. Моля, опитайте по-късно!</span><br>').show();
		   },
		   success: function(result){
			   for(var i in result){
				   $("#inv_opt_cnt_gr").append('<div class="div_chbx"><input type="checkbox" value="' + result[i].contact_group_id + '" name="contact_group[]" style="margin:5px;padding:0px;">' + result[i].name + '</div>');
			  }
		   }
	});
	if ($("#inv_frm_stat").length) {$("#inv_frm_stat").remove();}
	
    $("input:[name='contact_group[]']:checked").attr("checked",false);
    $("input:[name='inv_link_str_opt']:checked").attr("checked",false);
   
    openPopupWindow ($(o), $('#inv_opt_div'), 'relative');
}

function showActInvForm(o, name, inv_id, view_int) {
	if ($("#inv_acc_div").length) {$("#inv_acc_div").remove();}
	
	$.ajax({
		   type: "POST",
		   url: "/ajax/show_inv_act_frm/"+inv_id+"/",
		   cache: false,
		   data: "",
		   error: function(){
			alert('(!)Грешка: Проблем при визуализирането на поканта. Моля, опитайте по-късно!');
		   },
		   success: function(result){
			   if(result == 'ERROR'){
				   alert('(!)Грешка: Проблем при визуализирането на поканта. Моля, опитайте по-късно!'); 
			   }else{
				 
				   if(view_int == 1 &&  $('#business_card_popup_container').length > 0){
					   $('#business_card_popup_container').append (result); 
				   }else{
					   $('body').append (result);
				   }
				  
				   if ($("#inv_acc_name").length) {
					   $('#inv_acc_name').empty().append(name);
				   }
				   openPopupWindow ($(o), $('#inv_acc_div'), 'relative');
			   }
		   }
	});
	
}

/*ver 0.1
function showActInvForm(o, name) {
	$("#inv_acc_error").empty().hide();
	$("#inv_acc_cnt_gr").empty();
	$('#inv_acc_name').empty().append(name);
	$("#inv_acc_div_cont").show();
	$.ajax({
		   type: "POST",
		   url: "/ajax/get_my_cgs/')",
		   cache: false,
		   data: "",
		   dataType: 'json',
		   error: function(){
			$("#inv_acc_error").empty().append('<span class="error">(!)Грешка: Проблем при визуализирането на Вашите контакт групи. Моля, опитайте по-късно!</span><br>').show();
		   },
		   success: function(result){
			   for(var i in result){
				   $("#inv_acc_cnt_gr").append('<div class="div_chbx"><input type="checkbox" value="' + result[i].contact_group_id + '" name="acc_contact_group[]" style="margin:5px;padding:0px;">' + result[i].name + '</div>');
			  }
		   }
	});
	if ($("#inv_frm_stat").length) {$("#inv_frm_stat").remove();}
	
    $("input:[name='acc_contact_group[]']:checked").attr("checked",false);
    $("input:[name='inv_acc_link_str_opt']:checked").attr("checked",false);
   
    openPopupWindow ($(o), $('#inv_acc_div'), 'relative');
}
*/
function sendInv (){
	$("#inv_opt_error").empty().hide();
	frmErrorStr = '';
	if(!$("input:[name='inv_link_str_opt']:checked").is(':checked')){
		frmErrorStr += '<b>Степен на познатост</b> не е избрана<br>';
	}

	if(frmErrorStr != '') {
	    $("#inv_opt_error").append('<span class="error">' + frmErrorStr + '</span>').show();
		
	} else {
		$.ajax({
			   type: "POST",
			   url: "/ajax/user_send_inv/",
			   cache: false,
			   data: $("#frm_inv_opt_div").serialize()+"&u_id="+sell_u_id,
			   error: function(){
				    $("#inv_opt_error").empty().append('<span class="error">(!)Грешка: Заявката не може да бъде изпълнена в момента. Моля, опитайте по-късно!</span><br>').show();
			   },
			   success: function(result){
				   if(result == 'OK') {
				   	   $("#inv_opt_error").empty().hide();
					   $("#inv_opt_div_cont").hide();
					   $("#inv_opt_div").append('<div id="inv_frm_stat" style="margin:10px;text-align:center;font-weight:bold;">Поканата беше изпратена успешно!<br><div class=buttons><span class="btn-left">&nbsp;</span><span class="btn-center"><a href="javascript:;" onclick="closePopupWindow ($(this));">Затвори</a></span><span class="btn-right">&nbsp;</span></div></div>');
				   } else if(result == 'EXST'){
					    $("#inv_opt_error").empty().append('<span class="error">Този потребител вече е добавен във Вашите контакти!</span><br>').show();
				   } else{
					    $("#inv_opt_error").empty().append('<span class="error">(!)Грешка: Заявката не може да бъде изпълнена в момента. Моля, опитайте по-късно!</span><br>').show();
				   } 
				}
			 });
	}
	
}


function ChangeInvStat (i_id){
	$("#inv_acc_error").empty().hide();
	frmErrorStr = '';
	if(!$("input:[name='inv_acc_act']:checked").is(':checked')) {
		frmErrorStr += 'Не е избрано <b>Действие</b><br>';
	} else if(!$("input:[name='inv_acc_link_str_opt']:checked").is(':checked') && $("input:[name='inv_acc_act']:checked").val() == 1){
		frmErrorStr += '<b>Степен на познатост</b> не е избрана<br>';
	}

	if(frmErrorStr != '') {
	    $("#inv_acc_error").append('<span class="error">' + frmErrorStr + '</span>').show();
		
	} else {
		$.ajax({
			   type: "POST",
			   url: "/ajax/change_inv_stat/",
			   cache: false,
			   data: $("#frm_inv_acc").serialize()+"&i_id="+i_id,
			   error: function(){
				    $("#inv_acc_error").empty().append('<span class="error">(!)Грешка: Заявката не може да бъде изпълнена в момента. Моля, опитайте по-късно!</span><br>').show();
			   },
			   success: function(result){
				   if(result == 'OK') {
					    location.reload(true);
				   } else if(result == 'EXST'){
					    $("#inv_acc_error").empty().append('<span class="error">Този потребител вече е добавен във Вашите контакти!</span><br>').show();
				   } else{
					    $("#inv_acc_error").empty().append('<span class="error">(!)Грешка: Заявката не може да бъде изпълнена в момента. Моля, опитайте по-късно!</span><br>').show();
				   } 
				}
			 });
	}

}

function moveToAnchor (anchor)
{
	window.location.hash = '';
	window.location.hash = anchor;
}

jQuery.fn.stripTags = function() { return this.replaceWith( this.html().replace(/<\/?[^>]+>/gi, '') ); };

