tl_widget = (function(){

    var update_widget = function(url, data) {
        var custom_data = document.getElementById('tl-custom-data');
        var callback = 'json'+(Math.random()*100).toString().replace(/\./g,'');
        if (data) {
            data = data.replace(/,/g, '&events=');
            data = data.replace(/ /g, '');
            data = data.replace(/event=/g, 'events=');
            data = data.replace(/#/g, '%23');
        }
        if (custom_data) {
            if (data) {
                data = data + "&" + custom_data.innerHTML;
            } else {
                data = custom_data.innerHTML;
            }
            data = data.replace(/&amp;/g, '&');
        }
        if (data) {
            data = data + "&callback=" + callback;
        } else {
            data = "callback=" + callback;
        }
        url = url + "?" + data;

        window[callback]= function(o){
            var wrap = document.getElementById('tl-widget-wrapper');
            wrap.innerHTML = o.html;
        };

        document.getElementsByTagName('head')[0].appendChild((function(){
            var s = document.createElement('script');
            s.type = 'text/javascript';
            s.src = url;
            return s;
        })());

        return false;
    };

    var proceed_to_checkout = function() {
        f = document.getElementById('tl-tickets-form');
        f.submit();
        return false;
    };

    var more_info_click = function(x) {
        var e, nodes = x.parentNode.childNodes;
        for( e in x.parentNode.childNodes ) {
            if ( nodes[e].className == 'tl-more-info' ) {
                if ( !(nodes[e].style.display) || nodes[e].style.display == 'none' ) {
                    nodes[e].style.display = 'block';
                } else {
                    nodes[e].style.display = 'none';
                }
            }
            else if ( nodes[e].className == 'tl-more-info-link' ) {
                if ( nodes[e].innerHTML == 'More Info' ) {
                    nodes[e].innerHTML = 'Hide Info';
                } else {
                    nodes[e].innerHTML = 'More Info';
                }
            }
        }
    };

    return {
        update_widget: update_widget,
        proceed_to_checkout: proceed_to_checkout,
        more_info_click: more_info_click
    };

}());


