function deleteBookmark(sender, id){
	var confirmDelete = "<span>Ar tikrai norite ištrinti šią nuorodą? <a href=\"#\" onclick=\"deleteConfirmed(" + id + "); return false;\">Taip</a> - <a href=\"#\" onclick=\"deleteCancelled(this); return false;\">Ne</a></span>";
	$(sender).css("display", "none");
	$(sender).parent().html($(sender).parent().html() + confirmDelete);
}

function deleteCancelled(sender) {
	$(sender).parent().parent().parent().parent().fadeTo(1, 1);
    $(sender).parent().prev().css("display","inline");
    $(sender).parent().remove();
    return false;
}

function deleteConfirmed(id) {
	$("#b"+id).fadeTo(1, 0.6);
	var deleting = id;
	$.getJSON('/ajaxDelete.php', "id="+id, 
		function (data, status){
			data = parseInt(data);
			if (!isNaN(data) && deleting == data){
				data = "#b"+data;
				$(data).fadeOut("slow");
			} else { // in case of error
				$("#b"+id).fadeTo(1, 1);
				console.log(data);
			}
		});
}

function addBookmark(id){
	$.post('/ajaxAdd.php', "id="+id, 
		function (data, status){
			if (typeof data == "object"){
				if (data.type == "success"){
					var id = data.result;
					var o1 = $("#v" + id);
					var o2 = $("#h" + id);
					if (o1 != null && o2 != null){
						o1.addClass("hidden");
						o2.removeClass("hidden");
					}
				} else {
				}
			} else {
			}
		}
		,"json");
}

var cache = Array();
// JQuery object cache. Caution: cache limitter is missing (all objects ar cached) 
function getJQueryObject(name){
	if (typeof cache[name] == "undefined"){
		if (name.indexOf(".") == 0){
			cache[name] = $(name);	
		} else {
			cache[name] = $("#" + name);
		}
		console.log ("Caching object: " + name);
	}
	return cache[name];
}
function showError(name, msg){
	getJQueryObject(name).addClass("err");
	getJQueryObject('t_' + name).addClass("err").text(msg);
}
function showNotice(name, msg){
	getJQueryObject(name).addClass("notice");
	getJQueryObject('t_' + name).addClass("notice").text(msg);
}
function hasNotice(name){
	return getJQueryObject(name).hasClass("notice") || getJQueryObject(name).hasClass("err");
}
function removeAll(name){
	var obj = getJQueryObject(name);
	if (obj.hasClass("notice")) obj.removeClass("notice");
	if (obj.hasClass("err")) obj.removeClass("err");
	getJQueryObject('t_' + name).removeAttr("class").text('');
}

function validate(str){
	return main_validate(str, /[A-Za-z0-9 ,\.ąčęėįšųūžĄČĘĖĮŠŲŪŽ]+/gi, /[^A-Za-z0-9 ,\.ąčęėįšųūžĄČĘĖĮŠŲŪŽ]+/gi);
}
function validate_title(str){
	return main_validate(str, /[A-Za-z0-9\sąčęėįšųūžĄČĘĖĮŠŲŪŽ'`"-_:.,(|)&]+/gi, 
							/[^A-Za-z0-9\sąčęėįšųūžĄČĘĖĮŠŲŪŽ'`"-_:.,(|)&]+/gi);
}
function main_validate(str, reg, oposite_reg){
	var val = $.trim(str);
	var invalid = val.replace(reg,"");
  	if (invalid.length == 0) {
    	return val;
  	} else {
  		if (invalid.length > 10) invalid = invalid.substring(0,9) + "...";
  		var s = "Aptikti neleistini simboliai: `" + invalid;
		  s = s + "`\nPrašome naudoti TIK Lietuviškus rašmenis!";
  		
	  	alert(s);
	  	return val.replace(oposite_reg,"");
	}
}

function isValidURL(str){
	var reg = /(http|https|ftp):\/\/[A-Za-z]{1}([A-Za-z0-9\-]+\.){1,}([A-Za-z]){2,4}(\/.{0,}){0,1}$/gi
	var val = $.trim(str);
	var invalid = val.replace(reg,"");
	if (invalid.length == 0) {
    	return true;
  	} else {
  		return false;
	}
}
var last_response = "whaiting";
function getTitle(url){
	getJQueryObject("address").css('backgroundImage','url(/img/loading.gif)');
	last_response = "whaiting";
    $.getJSON('/ajaxGetTitle.php', "url="+url, 
				function (data, status){
					if (typeof data == "object"){
						if (data.type == "success"){
								last_response = "success";
								removeAll("address");
								if (getJQueryObject("titleField").val() == ''){
									removeAll("titleField");
		            				getJQueryObject("titleField").val(data.result);
								}
						} else {
							last_response = data.type;
							showNotice("address", data.result);
						}
					} 
					getJQueryObject("address").css("backgroundImage", 'none');
				});
}

// Array.indexOf( value, begin, strict ) - Return index of the first element that matches value
Array.prototype.indexOf = function( v, b, s ) {
	for( var i = +b || 0, l = this.length; i < l; i++ ) {
		if( this[i]===v || s && this[i]==v ) { return i; }
	}
	return -1;
};

function in_array(needle, haystack, strict) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
 
    var found = false, key, strict = !!strict;
 
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
    return found;
}

$().ready(function() {
	
	if(!window.console) {
		window.console = {
			log: function(){}
		};
	}
	
	// IE interface fix	
	if ($.browser.msie && ($.browser.version == '6.0' || $.browser.version == '7.0')){
		var fields = $("input[type=text], input[type=password], textarea");
		//console.log(fields);
		//fields.addClass("input");
		fields.focus(function(){
			$(this).addClass("focus");
		});
		fields.blur(function(){
			$(this).removeClass("focus");
		});		
		if ($.browser.version == '6.0'){
			var buttons = $("input[type=submit]");
			console.log(fields);
			buttons.mouseover(function(){
				$(this).addClass("hover");
			});
			buttons.mouseout(function(){
				$(this).removeClass("hover");
			});	
		}
		console.log("IE interface fix done");
	}
	//end IE interface fix
	
	jQuery.fn.charLimit = function(options){
			var defaults = {
				limit: 500,
				speed: "normal",
				descending: true,
				allowedKeys : ["8","9","46","35","36", "16", "17", "18", "37", "38", "39", "40"]
			}
			var o = jQuery.extend(defaults,options);
			
			return this.each(function(i) {
				var obj = jQuery(this);
				if(!obj.next().hasClass("countBox"))
					obj.after("<span class='countBox box"+ i +"' style='display:none;padding:1px 2px;font-size: 13px;border:1px solid #aaa;'></span>");
				
				function countChars(){
					var value = (o.descending) ? o.limit - obj.val().length : obj.val().length;
					$(".box"+i).text(value);
				}
				countChars();
				
				obj
					.keydown(function(e){
						if(obj.val().length  >= o.limit){
							if (!in_array(e.keyCode, o.allowedKeys)){
								e.preventDefault(); // cancel event
							}
						}
						countChars();
					})
					.keyup(function(e){
						if(obj.val().length >= o.limit){
							obj.val(obj.val().substr(0,o.limit))
						}
						countChars();
					})
					.focus(function(){
						obj.next().fadeIn(o.speed);
						countChars();
					})
					.blur(function(){
					 	obj.next().fadeOut(o.speed);
					});
			});
		};
});
