var columnsCookieName = 'lli.columns';


function updateJTableColumns() {
    var columnHeaders = $('#columnHeaders tr');
    var jTableObj = columnHeaders.parent('table').get(0);
    var columnsCookie = $('#columns-cookie');
    var columns = null;
    if(columnsCookie){
        columns = parseCookieToColumnArray($(columnsCookie).val());
    }
    if(columns == undefined || columns == null || columns.length < 1){
        columns = parseCookieToColumnArray($.cookie(getColumnsCookieName()));
    }
    if (columns != undefined && columns != null && columns.length > 0) {
        for (var i = 0; i < columns.length; i++) {
            var title = $('th[title=' + columns[i].name + ']', columnHeaders);
            title.width(columns[i].width);
            var index = $('th', columnHeaders).index(title);
            columnHeaders.append(title);
            $('tbody tr', jTableObj).each(function() {
                $(this).append($('td:eq(' + index + ')', this));
            });
        }
        if(columnsCookie){
            $(columnsCookie).val(parseColumnArrayToCookie(columns));
        }
        setColumnsCookie(parseColumnArrayToCookie(columns));
    }
}

function getColumnsCookieName(){
    var searchTypeCode = $('#search-type-code').val();
    if(searchTypeCode == undefined || searchTypeCode == null || searchTypeCode.length < 1){
        searchTypeCode = 'default';
    }
    return columnsCookieName + "." + searchTypeCode;
}

function setColumnsCookie(value){
    $.cookie(getColumnsCookieName(), value, { expires: 356*5 });    
}

function setCookie(name, value, expires) {
    $.cookie(name, value, { expires:expires });
}

function updateColumnsCookie(e, obj) {
    var columns = [];
    $('#columnHeaders th').each(function() {
        columns.push(new Column($(this).attr('title'), $(this).width()));
    });
    var columnsCookie = $('#columns-cookie');
    if(columnsCookie){
        $(columnsCookie).val(parseColumnArrayToCookie(columns));
    }
    setColumnsCookie(parseColumnArrayToCookie(columns));
}

function parseArrayToCookie(array, delimiter) {
    if (delimiter == undefined) {
        delimiter = ';';
    }
    var cookie = '';
    var delim = '';
    if (array) {
        for (i = 0; i < array.length; i++) {
            cookie += delim + array[i];
            delim = delimiter;
        }
    }
    return cookie;
}

function parseCookieToArray(cookie, delimiter) {
    if (delimiter == undefined) {
        delimiter = ';';
    }
    var array = [];
    if (cookie) {
        array = cookie.split(';');
    }
    return array;
}

function parseColumnArrayToArray(array) {
    var newArray = [];
    if (array) {
        for (i = 0; i < array.length; i++) {
            newArray.push(array[i].name + ":" + array[i].width);
        }
    }
    return newArray;
}

function parseArrayToColumnArray(array) {
    var newArray = [];
    if (array) {
        for (i = 0; i < array.length; i++) {
            var values = array[i].split(':');
            newArray.push(new Column(values[0], parseInt(values[1])));
        }
    }
    return newArray;
}

function parseColumnArrayToCookie(array) {
    return parseArrayToCookie(parseColumnArrayToArray(array));
}

function parseCookieToColumnArray(cookie) {
    return parseArrayToColumnArray(parseCookieToArray(cookie));
}

// Column Class
function Column(name, width) {
    this.name = name;
    this.width = width;
}

