// ==================
// = ERROR LOGGING =
// ==================
if (typeof console == "undefined" || typeof console.log == "undefined"){
  console = { log: function() {} };
}

// ==============================
// = FORMAT NUMBERS WITH COMMAS =
// ==============================
pretty_numbers = function(v) {
  v = String(v);
  var ps = v.split('.');
  var whole = ps[0];
  var sub = ps[1] ? '.'+ ps[1] : '';
  var r = /(\d+)(\d{3})/;
  while (r.test(whole)) {
      whole = whole.replace(r, '$1' + ',' + '$2');
  }
  v = whole + sub;
  if(v.charAt(0) == '-'){
      return '-' + v.substr(1);
  }
  if(v == 'null'){
    v = 0;
  }
  return v;
};

// =========================
// = INTERNAL CPA TRACKING =
// =========================
function cpaTrack(type){
  var trkDiv=document.getElementById('trackers_div');
  var baseurl='/exchange/trackers/';
  var trkstr = "";
  trkstr += "<iframe width=0 height=0";
  trkstr += " border=0 src='"+baseurl+type+".html'><\/iframe>";
  trkDiv.innerHTML=trkstr;
}

// ==============================
// = REDIRECT USERS TO EXCHANGE =
// ==============================
function send_to_exchange() {
  // waiting 500 ms to make sure events get tracked by KM
  setTimeout(function(){
    window.location = '/exchange/';
  },50);
}

// ================================================
// = BUILDS TEMPLATE ON PRESS PAGE & TESTIMONIALS =
// ================================================
function template_builder(s,d){
 for(var p in d)
   s=s.replace(new RegExp('{'+p+'}','g'), d[p]);
 return s;
}

function is_paid_tsid(tsid){
  //list of old tsid we used when we didnt really have a system or for them
  var legacy_paid_tsids = [
    'ms_ba_plain','goog_patd','ms_ba_sum41','ms_ba_panic','fb_promo2','fb_fp_ba','google_adwords_1',
    'hypebot_ba','sb_eb_d','jan_db','c2cmt_eb_10k','ms_ba','google_adwords_1','c2c_ba','hlfm_panic',
    'googl_hl','sb_ba','google_adwords_300250_1','ms_300x250','jan_eb','google_adwords_1',
    'sonicbids','fb_ba_sum41','goog10k','fb_promo','goog_sum','ms_300x250_1_unt','ms_ba_sum41'];

  if($.inArray(tsid,legacy_paid_tsids) !== -1){
    return true;
  } else if(tsid.split("_")[0] === 'pd'){
    return true;
  } else {
    return false;
  }
}

$(document).ready(function(){

  // =========================================
  // = RANDOM IMAGE ROTATOR ON LANDING PAGES =
  // =========================================
  var featurespot= new Array(5);
  featurespot[0]="images/featuredartists_1.png";
  featurespot[1]="images/featuredartists_2.png";
  featurespot[2]="images/featuredartists_3.png";
  featurespot[3]="images/featuredartists_4.png";
  featurespot[4]="images/featuredartists_5.png";

  var randomnumber=Math.floor(Math.random()*5);
  $('#featuredimage').attr('src', featurespot[randomnumber]);

  // ===========================
  // = SET FOCUS TO NAVIGATION =
  // ===========================
  var sPath = window.location.pathname;
  var sPage = sPath.substring(sPath.lastIndexOf('/') + 1, sPath.length - 4);
  if(sPage == "/"){
    $('#index').addClass('selected');
  }else{
    $('#' + sPage).addClass('selected');
  }

  // ===================
  // = FACEBOOK CONNECT=
  // ===================
  //SET CALLBACK URL FOR FACEBOOK CONNECT SO TSID REMAINS IN URL
  var fbPath = window.location.toString();
  if(fbPath.indexOf("tsid") != -1){
    fbPath += "&fbsetup=";
  } else {
    fbPath += "?fbsetup=";
  }
  $('#fb_callback_url').attr("href", "http://www.headliner.fm/exchange/fbsignup?callback=" + escape(fbPath));

  //Show all pages on facebook connect when link is clicked.
  $("#show_allpages").click(function () {
    $('#apages').height(Math.ceil(fbsetup_apages_cnt/4)*126);
    $('#apages').removeClass('hidden').addClass('visible');
    $("#show_allpages").html('&nbsp;');
    return false;
  });

	// ==============
	// = TOTAL FANS =
	// ==============
  $.ajax({
    type: "GET", url: '/exchange/global_static/total_fans.json', data: '', dataType: "json",
    success: function(data) { $('#total_fans').html(pretty_numbers(data.total_fans)); }
  });

	// ===========
	// = TICKER =
	// ===========
  $.ajax({
    type: "GET", url: '/exchange/global_static/total_fans.json', data: '', dataType: "json",
    success: function(data) {

      var tickerdata = pretty_numbers(data.total_fans);
      var tickersplit = tickerdata.split("");
      var tickerhtml = '';
      for ( var i=0; i<tickersplit.length; i++ ){
        if (tickersplit[i] == ",") {
          tickerhtml += "<div class=\"comma\">" + tickersplit[i] + "</div>";
        } else {
          tickerhtml += "<div class=\"digit\">" + tickersplit[i] + "</div>";
        }
      }
      $('#ticker').html(tickerhtml);
    }
  });

  // =============
  // = FORM CRAP =
  // =============
  var texttypes = 'input[type="text"], textarea, input[type="password"]';
  $(texttypes).addClass("idleField");

  //input box focused
  $(texttypes).focus(function() {
    $(this).removeClass("idleField").addClass("focusField");
    if (this.value == this.defaultValue){
      this.value = '';
    }
  });

  //input box unfocused
  $(texttypes).blur(function() {
    $(this).removeClass("focusField").addClass("idleField");
    if ($.trim(this.value) === ''){
      this.value = (this.defaultValue ? this.defaultValue : '');
    }
  });

  $("#invited_by").click(function(){
    $("#inviter_div").show(500);
  });

  //START GENRE DROPDOWN
  $.getJSON('/exchange/music_genres.json', function(data){
    var options_genres = '<option value="false" disabled="disabled" selected>Please Select a Genre...</option>';
    $.each(data, function(i,d){
      if(d.name !== 'All' && d.name !== 'Other'){
        options_genres += '<option value="' + d.id + '">' + d.name + '<\/option>';
      }
    });
    $("#music_genres").html(options_genres);
  });
  //END GENRE DROPDOWN

  //START SUBMITTING SIGNUP
  var allow_submit = true;
  $("#submit_signup").bind('click', function(){
    var artist_name = $("input#artist_name").val();
    var email = $("input#email").val();
    var zipcode = $("input#zipcode").val();
    var pwd = $("input#pwd").val();
    var tos = $("input#tos").val();
    var tsid = $("input#tsid").val() || 'none';
    var sid  = $("input#sid").val() || 0;
    var newsletter = $("input#newsletter").val();

    $("#signup_form").validate({
      rules: {
        artist_name   : {required:true},
        music_genres  : {required:true, digits:true},
        email         : {required:true, email:true},
        zipcode       : {required:true, minlength:3},
        pwd           : {required:true, minlength:5}
      },
      messages: {
         artist_name    : "<b>Artist Name</b> is required.<br/>",
         email          : "<b>Valid Email</b> is required.<br/>",
         music_genres   : "<b>Genre</b> is required.<br/>",
         zipcode        : "<b>Valid Zip Code</b> is required.<br/>",
         pwd            : "<b>Password</b> must be at least 5 Characters.<br/>"
      },
      errorLabelContainer: $("#signup_results"),
      submitHandler: function(form) {
        var data = {
          "s_name"          : $("input#artist_name").val(),
          "s_login"         : $("input#email").val(),
          "s_password"      : $("input#pwd").val(),
          "zipcode"         : $("input#zipcode").val(),
          "tsid"            : $("input#tsid").val(),
          "sid"             : $("input#sid").val(),
          "s_inviter"       : $("input#inviter_email").val(),
          "utype"           : "band",
          "music_genre_id"  : $("select#music_genres").val(),
          "optin_headliner" : $("input#optin_headliner").is(':checked'),
          "optin_others"    : $("input#optin_others").is(':checked')
        };

        if($("input#fbsetup").length > 0){
          data.fbsetup    = $("input#fbsetup").val();
          data.fbselected = $("input#fbselected").val();
        } else if($("input#scdata").length > 0){
          data.scdata = $("input#scdata").val();
        }
        if(allow_submit === true){
          $.ajax({
            type: "POST", url: "/exchange/users", data: data, dataType: "json",
            beforeSend: function() {
              allow_submit = false;
              $('#loader').css("display","block");
            },
            success: function(rdata) {
              allow_submit = false;
              var success = rdata.success;
              $('#loader').css("display","none");

              if(success) {
                var email = $("input#email").val();
                var email_append = "";
                //send email to corresponding email list, if need be
                if(tsid.indexOf('contest_blg') != -1 && newsletter == 'true') {
                  email_append="<img height='0' width='0' src='includes/sonic_email.php?email="+email+"'>";
                 }

                // =======================
                // = Paypal 14-day Trial =
                // =======================
                var code = $("input#start_trialcode").val();
                if (code !== undefined){
                  $('#signup_results')
                    .css("background-color","#afe4ff")
                    .css("border","1px solid #018cd2")
                    .html("<span class='bold'>Success!</span>")
                    .append(" Redirecting to paypal ...")
                    .append(email_append)
                    .show(500);
                  window.location = '/exchange/subscription/create?level=pro&promocode='+code;
                }
                else{
                  cpaTrack('signup');
                  send_to_exchange();
                }
              } else {
                allow_submit = true;
                $("#submit_signup").show();
                $('#signup_results')
                .css("background-color","#ffebe8")
                .css("border","1px solid #dd3c10")
                .html("<span class='bold'>Email address already exists!, sending password reset email to "+email+"</span>")
                .show();
                $.ajax({ type: "POST", url: "/exchange/password_resets/", data: {login:email}});
                $("input#email").focus();
              }
            },
            error: function() {
              allow_submit = true;
              $('#loader').css("display","none");
              $('#signup_results')
              .css("background-color","#ffebe8")
              .css("border","1px solid #dd3c10")
              .html("<span class='bold'>Server Error!</span><br/>Please try again later!<br>")
              .show(500);
            }
          });//END .ajax
        }
      }//END submitHandler
    });//END .validate
  });//END .click

});


  $.ajax({
    url:'/exchange/user_sessions/current',
    dataType:'json',
    success: function(data){
      if (data.success) {
        $('#userLoggedIn').append("<div class='login_true'>You are currently logged in as "+data.user.name+" - <a href='/exchange/'>Go to Your Account</a></div>");

        if (typeof olark != 'undefined'){

          olark('api.chat.updateVisitorNickname', {snippet: data.user.name+" id:"+data.user.id+" pro:"+data.user.subscribed }) ;
          olark('api.chat.onBeginConversation', function(){
              if ($.browser.msie){
                browser="msie "+$.browser.version;
              }else if ($.browser.webkit){
                browser="webkit "+$.browser.version;
              } else if ($.browser.mozilla){
                browser="mozilla "+$.browser.version;
              } else if ($.browser.opera){
                browser="opera "+$.browser.version;
              } else if ($.browser.chrome){
                browser="chrome "+$.browser.version;
              } else if ($.browser.safari){
                browser="safari "+$.browser.version;
              } else { browser="other"; }

              olark('api.chat.sendNotificationToOperator', {body: "browser: "+browser});
              if (current_user.subscribed) {
                  olark('api.chat.sendNotificationToOperator', {body: "this is a premium customer"});
              }
              olark('api.box.onHide', function() {
                  olark('api.chat.sendNotificationToOperator', {body: "visitor hid the chatbox"});
              });
              olark('api.box.onExpand', function() {
                  olark('api.chat.sendNotificationToOperator', {body: "visitor expanded the chatbox"});
              });
              olark('api.box.onShrink', function() {
                olark('api.chat.sendNotificationToOperator', {body: 'visitor shrank the chatbox'});
              });
          });

        }
      }
    }});

