
function GigaWidget(){
    this.config = ____gigawidget_config;
    this.container = $("#____gigawidget");
    this.init();
};

GigaWidget.prototype.init = function() {
    this.config = ____gigawidget_config;
    this.container.html("<iframe border='0' id='____gigawidgetiframe' frameBorder='0' style='width:100%;' />");
    this.client = this.config.client
    this.id = this.config.id
    this.ca = this.config.ca
    this.cb = this.config.cb
    this.cc = this.config.cc
    
    this.maxrows = this.config.maxrows;
    if (this.maxrows && typeof(this.maxrows)=="string") {
        this.maxrows = Number(this.maxrows);
    }
    
    var that = this;
    $.getJSON("http://gigs.gigatools.com/"+this.client+"/" + this.id + ".json?callback=?",
                function(data){that.build(data);}          
    );
}



GigaWidget.prototype.build = function(data) {
    
    var html = []
    html.push("<div class='GigaToolsWidget'style='background-color:" +  this.ca + ";'>");
    
    var widgetname = ""
    var clientname = ""
    var client_url = ""
    var xtras_url = "http://gigs.gigatools.com/"
    var months = ["", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
    
    if(this.client == "user"){
      clientname = data[0]["user"].artistname
      widgetname = data[0]["user"].widgetname
      client_url = data[0]["user"].url
      xtras_url += "user/"+this.id 
    } else {
      clientname = data[0]["group"].groupname
      widgetname = data[0]["group"].widgetname
      client_url = data[0]["group"].url
      xtras_url += "group/"+this.id 
    }
    
    if(widgetname.length == 0){
       widgetname = clientname+"'s upcoming shows"
    }
    
    
    html.push("<h1><a href='"+client_url+"' style='color:"+this.cb+";'>" + widgetname + "</A></h1>");
    
    var rowCount = 0;
    
    for (var x in data[1]) {
    
        rowCount++;
        if (this.maxrows && rowCount > this.maxrows) { // if not null (a limit is specified) AND greater than limit, break out of loop.
            break;
        }
      
        var dstring = data[1][x]["event"].eventdate
        var nicedate = dstring.charAt(8)+dstring.charAt(9)
        var m1 = dstring.charAt(5)
        if(m1 == 0){
          nicedate += " "+months[dstring.charAt(6)]
        } else {
          nicedate += " "+months[dstring.charAt(5)+""+dstring.charAt(6)]
        }

        html.push("<div class='date' style=color:"+this.cc+";>"+nicedate+"</div>");
        
        var myEventString = "";
        
        // Artistname
        if(this.client == "group"){
          myEventString += data[2][x] + " @ ";       
        }

        // Name
        if(data[1][x]["event"].name){
          myEventString += data[1][x]["event"].name +", ";       
        }
        // Venue
        if(data[1][x]["event"].venue){
          myEventString += data[1][x]["event"].venue +", ";       
        }
        // Event
        myEventString += data[1][x]["event"].city +", "+ data[1][x]["event"].country+" ";
        //showtime
        if(data[1][x]["event"].showtime){
          var showtime = data[1][x]["event"].showtime
          showtime = showtime.charAt(11)+showtime.charAt(12)+showtime.charAt(13)+showtime.charAt(14)+showtime.charAt(15)
          //myEventString += " <I> "+showtime + "</I>";       
        }
        
        // URL
        if(data[1][x]["event"].url){
          html.push("<div class='event' style=color:"+this.cc+";><a href='"+data[1][x]["event"].url+"' target='_new' style=color:"+this.cc+";>"+myEventString+"</a></div>")          
        } else {
          html.push("<div class='event' style=color:"+this.cc+";>"+myEventString+"</div>")          
        }
        
        
        
        
    }
      
    // Booking Contact
    
    if(this.client == "user" && data[0]["user"].bookingcontact){
      html.push("<div class='date'> </div><div class='booking'><a href='"+data[0]["user"].bookingcontact+"' target='_new' style=color:"+this.cc+"; >Click here to book "+clientname+"</a></div>")          
    } 
                   
    html.push("<div class='sublinks' style=color:"+this.cb+";>Subscribe via <a href='"+xtras_url+".rss' target='_new' style=color:"+this.cb+";>RSS</a> or <a href='"+xtras_url+"show.ics' target='_new'  style=color:"+this.cb+";>iCal</a></div>");
    html.push("<div class='powered'></div>");
    
    //    GigaTools :: Loading

    html.push(this.generateCSS());
    
    this.iframe = this.container.find('iframe');
    html.push("</div>")
    this.iframebody = this.iframe.contents().find('body');
    
    this.iframebody.append(html.join(""));
    
    this.iframe.css("height",this.iframe.contents().find('.GigaToolsWidget')[0].clientHeight + 25);

}

GigaWidget.prototype.generateCSS = function() {
    var css = [];
    css.push("<style>");
    css.push("body, p, ol, ul, td {font-family:'Lucida Grande',helvetica,verdana,arial,sans-serif;font-size:12px;}");
    css.push("pre {padding: 2px;font-size: 11px;}");
    css.push("a {text-decoration:none;}");
    css.push("a:visited {text-decoration: none;}");
    css.push(".GigaToolsWidget { position:relative; -moz-border-radius:8px;-webkit-border-radius:8px;padding:10px;}");
    css.push(".GigaToolsWidget h1 {margin-top:-4px;font-weight: bold;font-size:16px;}");
    css.push(".date {width:56px;line-height: 140%;margin-bottom:6px;font-weight: bold;float:left;}");
    css.push(".booking {line-height: 140%;font-size:10px;font-weight:bold;}");
    css.push(".event {line-height: 140%;margin-bottom:6px;}");
    css.push(".event a {text-decoration:underline;}");
    css.push(".sublinks {margin-top:12px;font-weight:bold;}");
    css.push(".powered{text-align:right;margin-top:10px;position:absolute;font-weight: bold;bottom:10px;right:10px;}");
    css.push("</style>")    
    return css.join("");
}


/*******************/
$(document).ready(function(){
        new GigaWidget();
})
