$(document).ready(function() { $('.scriptonly').removeClass('scriptonly') })
function parseUrlParams(url) {
    var params = url.split('?')[1].split('&')
    var rv = {}
    for(var i = 0; i < params.length; i++) {
        var kv = params[i].split('=')
        rv[kv[0]] = kv[1]
    }
    return rv

}
function getCookies() {
    var c = document.cookie.split('; ')
    var cookies = {}
    for(i = 0; i<c.length; i++) {
        var kv = c[i].split('=')
        cookies[kv[0]] = kv.slice(1, kv.length).join('=')
    }
    return cookies
}
function getCookie(name) {
    return getCookies()[name] || '"{}"' //HACK
}

clipboard = {
    defaultAction: null,
    items: {},
    asyncEdit: true,
    init: function() {
        clipboard.parseCookie()
        $('.clipboard-status .counter').each(clipboard.showCounter)
        $('.clipboard-actions a').each(clipboard.showAction)
        clipboard.initForm()
        clipboard.attachPost()
    },
    initForm: function() {
		if ($('#clipboard-form').length > 0){
			clipboard.form = $('#clipboard-form');
		}else{
		    clipboard.form = $('<form id="clipboard-form" method="post"/>').appendTo('body').get(0);
		}
	},
    showCounter: function() {
        var classes = this.className.split(/\s+/);
        var type;
        for(var i=0; i<classes.length; i++) {
			try{
                if (classes[i].indexOf('clipboard-count-') <= -1) {
                    continue;
                }
                type = classes[i].substring(16, classes[i].length);
                var itemsCount = clipboard.items[type].length;
                if (type == 'query' && clipboard.defaultAction == 'delete') {
                    var itemsCount = itemsCount - 1;
                    if (itemsCount < 0) {
                        itemsCount = 0;
                    }
                }
    	        $(this).text(itemsCount);
			} catch(err){
            }
        }
    },
    extractItemFromUrl: function(url) {
        return parseUrlParams(url)
    },
    parseCookie: function() {
        //fix safari cookie handling (comma breaks it)
        eval('clipboard.items = (' + getCookie("clipboard").substring(1, getCookie("clipboard").length-1).replace(/\|/g,',') + ');')
        var defaultActionToken = $('#default\-clipboard\-query\-action');
        var defaultActionTokenRx = /(.*)-(\d+)/.exec(defaultActionToken.attr('value') || '');
        if (defaultActionTokenRx) {
            clipboard.defaultAction = defaultActionTokenRx[1];
            if (defaultActionTokenRx[1] == 'delete') {
                var queries = clipboard.items['query'];
                if ($.inArray(defaultActionTokenRx[2], queries)) {
                    queries.push(defaultActionTokenRx[2]);
                }
            }
        };
        // use default value only once
        defaultActionToken.remove();
    },
    isActionEnabled: function(action, item) {
        var enabled = false
        switch(action) {
            case 'add'   : enabled = !clipboard.containsItem(item); break;
            case 'remove': enabled = clipboard.containsItem(item); break;
            case 'edit'  : break; 
        }
        return enabled
    },
    showAction: function() {
        var item = clipboard.extractItemFromUrl(this.href)
        var action = this.className.split(/\s+/)[0]
        this.title = $(this).text()
        if(clipboard.isActionEnabled(action, item))
            $(this).addClass('enabled')
        else 
            $(this).removeClass('enabled')
    },
    attachPost: function() {
        $('.clipboard-actions a').click(clipboard.doPost) 

    },
    containsItem: function(item) {
        var a = clipboard.items[item.type]
        if(a)
            for(var i=0; i < a.length; i++)
                if(a[i] == item.id)
                    return true;
        return false;

    },
    doPost: function() { 
        clipboard.defaultAction = null;
        clipboard.form.action = this.href
        if(clipboard.asyncEdit)
            $.post(clipboard.form.action, $(clipboard.form).serialize(), clipboard.init)
        else
            clipboard.form.submit()
        return false
        var _this = this
    },
    getItems: function(type) {

    }
}


$(document).ready(clipboard.init)

