(function ($) {
   var navDefaults = {
     inactiveTabClass: "off",
     activeTabClass:   "on"
   };

   var SummitNav = function (element, options) {
     var self = this;

     this.init = function (element, options) {
       this.options = $.extend({}, navDefaults, options);
       this.element = $(element);
       this.switchTab(this.element.children("a:eq(0)").get(0));
       this.element.children("a").click(function () {self.switchTab(this);});
     };

     this.activateTab = function (element) {
       var e = $(element);
       var section = $('#' + e.attr("data-section"));
       e.removeClass(self.options.inactiveTabClass);
       e.addClass(self.options.activeTabClass);
       section.show();
     };

     this.deactivateTabs = function () {
       this.element.children("a").each(function (i) {
         var section = $('#' + $(this).attr("data-section"));
         $(this).removeClass(self.options.activeTabClass);
         $(this).addClass(self.options.inactiveTabClass);
         section.hide();
       });
     };

     this.switchTab = function (element) {
       self.deactivateTabs();
       self.activateTab(element);
     };

     this.init(element, options);
   };

   $.fn.summitNav = function (options) {
     this.each(function () {
       new SummitNav(this, options);
     });
   };

   var inviteDefaults = {
     url: "invite.php",
     resultElement: "#inviteResults",
     reshowElement: "inviteShowForm",
     reshowText: "Invite Someone Else"
   };

   var SummitInvite = function (element, options) {
     var self = this;

     this.init = function (element, options) {
       this.options = $.extend({}, inviteDefaults, options);
       this.element = $(element);
       this.element.submit(this.submit);
     };

     this.submit = function () {
       var data = $(this).serialize();
       $.post(self.options.url, data, self.update, "html");
       return false;
     };

     this.update = function (data, status) {
       var results = $(self.options.resultElement);
       data += '<br/><a href="#" id="' + self.options.reshowElement + '">' + self.options.reshowText + '</a>';
       results.html(data);
       $('#' + self.options.reshowElement).click(self.reshow);
       self.element.hide();
       results.show();
     };

     this.reshow = function () {
       var results = $(self.options.resultElement);
       results.hide();
       self.element.show();
       return false;
     };

     this.init(element, options);
   };

   $.fn.summitInvite = function (options) {
     this.each(function () {
       new SummitInvite(this, options);
     });
   };

   var videoDefaults = {
     width:   "480",
     height:  "290",
     bgcolor: "#ffffff",
     version: "8"
   };

   $.fn.summitVideo = function (name) {
     var so = new SWFObject("player.swf", "innerplayer",
                            videoDefaults.width,   videoDefaults.height,
                            videoDefaults.version, videoDefaults.bgcolor);

     so.addParam("allowScriptAccess", "always");
     so.addParam("allowFullScreen",   "true");
     so.addParam("wmode",             "transparent");
     so.addParam("quality",           "high");

     so.addVariable("autostart",      "true");
     //so.addVariable("streamer",       "rtmp://sevendesig.fcod.llnwd.net/a3770/o33/");
     so.addVariable("backcolor",      "dbd7c2");
     so.addVariable("frontcolor",     "3f3e38");
     so.addVariable("lightcolor",     "4f0e0e");
     so.addVariable("screencolor",    "e6e3d2");
     so.addVariable("stretching",     "exactfit");
	 so.addVariable("plugins",		  "viral");
	so.addVariable("file",           "flvs/" + name + ".mov");

     so.write(this.get(0).id);
     return false;
   };

   var helpDefaults = {
     questionClass: 'helpquestion',
     answerClass:   'helpanswer'
   };

   $.summitHelp = function (element) {
     if (element) {
       $('#' + element).show("slow");
     } else {
       $('.' + helpDefaults.questionClass).click(function() {
         $(this).next('.' + helpDefaults.answerClass).eq(0).toggle("slow");
       });
     }
   };
})(jQuery);

