function checkURL(url) {
    return url.match(/^(https?:\/\/[a-z0-9\.\-]{2,}\.[a-z]{2,6}\/)([a-z 0-9\.\-_%&$?=!#:@\/\(\)]*)?$/i);
}

function checkLink() {
    var l = $("#link");
    var v = l.val();
    var c = checkURL(v);
    var t = $("input[rel='tag']").val();
    var k = $("#con").val();
    var n = $("#name").val();
    if(document.getElementById("duplicateError")) {
	return false;
    }
    if(c && t && k && n) {
	return true;
    } else {
	var e = $("#tagsAdded");
	e.css("border-color", "#1f9aff");
	if(!t) {
    	    e.css("border-color", "#f00");
	}
	var e = $("#con");
	e.css("border-color", "#1f9aff");
	if(!k) {
    	    e.css("border-color", "#f00");
	}
	var e = $("#name");
	e.css("border-color", "#1f9aff");
	if(!n) {
    	    e.css("border-color", "#f00");
	}
	return false;
    }    
}

function tagSearch() {
    var q = escape($('#tagSearch').val());
        $('#tags').html('<img src="/images/load.gif" alt=""/>');
        $('#tags').load("/a/", { 'method': 'getTags', 'q': q }, function() {
    });
}
	
function untag(id) {
    $("#" + id).remove();
}

function tag(id, tag) {
    var t = $("#tagsAdded");
    var id = id;
    var string = '<div id="t' + id + '"><input type="hidden" rel="tag" name="tag[]" value="' + id + '"/><a href="javascript:void(0)" onclick="untag(\'t' + id + '\')">' + tag + '</a></div>';
    if(!document.getElementById(id)) {
        t.append(string);
    }
}

function addTag() {
    var t = escape($("#tagSearch").val());
    $.post("/a/", { 'method': 'addTag', 'q': t }, function(data) {
	if(data != '') {
	    var t = $("#tagsAdded");
            t.append(data);
	}
    });
    $("#tagSearch").val("");
    tagSearch(); 
}	

function setTag(id) {
    $("#tagID").val(id);
    browse();
    var d = $("#linkDetails");
    d.slideUp("fast");
}

function browse() {
    var tagID = $("#tagID").val();
    var t = $("#linkBrowser");
    t.html('<img src="/images/load.gif"/>');
    t.load("/a/", { 'method': 'getLinks', 'tagID': tagID } );
}

function getLinkDetails(id) {
    var d = $("#linkDetails");
    d.slideDown("fast");
    $.getJSON("/a/", { 'method': 'getLinkDetails', 'id': id }, function(j) {
	$("#dURL").html(j.domain + j.path);
	$("#dDomain").html(j.domain);
	$("#dName").html(j.name);
	$("#dDatum").html(j.datum);
	$("#dUser").html(j.username);
    });
}

$(function() {
    $("#link").keyup(function() {
	var l = $("#link");
	var e = $("#notice");
	var d = $("#domain");
	var p = $("#path");
	var i = $("#info");
	var v = l.val();
	if(v) {
	    var c = checkURL(v);
	    if(!c) {
		e.html('Die eingegebene URL ist ung&uuml;ltig. Eine URL beginnt immer mit http:// oder https://<br/>Nach dem Domainname folgt immer ein &quot;/&quot;, z.B. http://www.domain.de/<br/>Sollte eine URL trotz Fehlermeldung korrekt sein, bitte Mail an <a href="mailto:tech@gjuce.com">tech@gjuce.com</a>');
		l.css("background-image", "url(/images/error.png)");
		i.hide();
	    } else {
		d.val(c[1]);
		var path = '';
		if(c[2]) {
		    path = '<br/>Pfad: ' + c[2];
		    p.val(c[2]);	    
		}
		e.html('Die eingegebene URL ist g&uuml;ltig<br/>Domain: ' + c[1] + path + '<br/><span id="checkURL"><img src="/images/load.gif" alt="Lade..."/> Pr&uuml;fe auf Duplikate...</span>' );
		$.getJSON("/a/", { 'method': 'checkDuplicates', 'url': escape(c[1]) }, function(j) {
		    if(j) {
			$("#checkURL").html(j.domain + ' ist bereits in der Datenbank vorhanden!<span id="duplicateError"></span>');
		    } else {
			$("#checkURL").html("");
		    }
		});		
		l.css("background-image", "url(/images/good.png)");
		i.show();
	    }
	}
    });
    
    $('#tagSearch').keyup(function(e) {
        tagSearch();
    });
	
    $('#tagSearch').keypress(function(e) {
	if (e.keyCode == 13) {
	    addTag();
	    return false;
	}		    
    });
	
    if(document.getElementById("tagCloud")) {
	var t = $("#tagCloud");
	t.html('<img src="/images/load.gif"/>');
	t.load("/a/", { 'method': 'getTagCloud' } );
    }			    

    if(document.getElementById("linkBrowser")) {
	browse();
    }			    
});

