﻿var $j = jQuery

//$(document).bind('ajaxComplete', function (e, xhr, options) {
//  if (xhr.getResponseHeader('Content-Type').indexOf('text/javascript') !== -1) {
//    eval(xhr.responseText);
//  }
//});


//$(document).ready(function () {

//  new DropDownMenu('main-navigation-menu', { delay: 400 });

//  if (jQuery('#member-access-menu').length > 0) {
//    new DropDownMenu('member-access-menu', { delay: 400 });
//  }

//  Notification.initialize();

//});

/* Setting up default text */
function SetupDefaultText() {
  var q = jQuery(this);
  var txt = q.attr('title');
  if (!txt) { return; }
  var onFocus = function () { if (q.val() == txt) { q.val('').removeClass('inactive'); } };
  var onBlur = function () { if (q.val() == '' || q.val() == txt) { q.val(txt).addClass('inactive'); } };
  q.focus(onFocus).blur(onBlur);
  onBlur();
}
/*set cookie */
function SetCookie(strName, strValue, intdays) {
    var strExpires;
    if (intdays) {
        var dtExpire = new Date();
        dtExpire.setTime(dtExpire.getTime() + (intdays * 86400000));
        strExpires = "; expires=" + dtExpire.toGMTString();
    }
    else strExpires = "";
    document.cookie = strName + "=" + strValue + strExpires + "; path=/";
}
/*Read cookie */
function ReadCookie(strName) {
    var strCookieName = strName + "=";
    var strCookies = document.cookie.split(';');
    var strValue;
    for (var i = 0; i < strCookies.length; i++) {
        var strCookie = strCookies[i];
        while (strCookie.charAt(0) == ' ') {
          strCookie = strCookie.substring(1, strCookie.length);
        }
        if (strCookie.indexOf(strCookieName) == 0) {
            strValue = strCookie.substring(strCookieName.length, strCookie.length);
            return strValue;
        }
    }
    return null;
}

/* Setting up tabs */
function SetupTabs() {
  var tabs = $j('.tabbed .tab');
  var contents = $j('.tabbed .content');
  tabs.each(function () {
    $j(this).bind('click', function (e) {
      contents.hide();
      contents.eq(tabs.index(this)).show();
      tabs.removeClass('active');
      $j(this).addClass('active');
      e.preventDefault();
    });
    var id = $j(this).attr('id');
    if ((typeof (id) != 'undefined') && ('#' + id == self.document.location.hash)) {
      $j(this).click();
      contents.eq(tabs.index(this)).find('.first-input').focus();
    }
  });
}

jQuery(function () {
  $j('input[type="text"],input[type="password"]').each(SetupDefaultText);
  SetupTabs();
});

function SimpleSubmitForm(form, additionalParams, callback) {

  var f = $j(form);

  var serializedForm = f.serialize();
  if (!serializedForm) serializedForm = '';

  //additionalParams like [['ActionType','DoSomething'],['BatchNumber','1']]
  additionalParamsCount = additionalParams.length;
  for (i = 0; i < additionalParamsCount; i++) {
    a = additionalParams[i][0];
    b = additionalParams[i][1]
    if (serializedForm != '') serializedForm += '&'
    serializedForm += escape(a) + '=' + escape(b);
  }

  jQuery.post(f.attr('action'), serializedForm, callback);
  return false;
}

function SubmitForm(form, callback) {
  var f = $j(form);
  if (f.hasClass('submitting')) return;
  f.addClass('submitting');
  var formClass = 'form' + randomString(8);
  var serializedForm = f.serialize();
  var tagsToReplace = f.find('.button-panel');

  if (tagsToReplace.length == 0) {
    tagsToReplace = f.find('input[type="submit"],button[type="submit"]');
  }

  f.addClass(formClass);
  StartSpinning(formClass, tagsToReplace, f.find('.in-progress-message').val());
  if (serializedForm) {
    serializedForm += '&FormClass=' + formClass;
  }
  else {
    serializedForm = 'FormClass=' + formClass;
  }
  //  if (f.attr('method') == 'get') {
  //    jQuery.get(f.attr('action'), serializedForm);
  //  }
  //  else {
  //    jQuery.post(f.attr('action'), serializedForm);
  //  }
  //jQuery.post(f.attr('action'), serializedForm, callback);

  $.ajax({
    type: 'POST',
    url: f.attr('action'),
    data: serializedForm,
    success: callback,
    error: function (xhr, ajaxOptions, thrownError) {
      StopSpinning(formClass);
    }
  });

  return false;
}


function StartSpinning(formClass, control, customMessage) {
  var DEFAULT_MARGIN_LEFT = 5;
  var DEFAULT_MARGIN_TOP = 4;

  if ($j('.' + formClass).find('.progress-spinner').length == 0) {

    if (customMessage) {
      if (customMessage == 'no-text') customMessage = '';
    } else {
      customMessage = 'In Progress...';
    }

    $j(control).after('<div class="progress-spinner"><img src="/local/css/img/ico-loading.gif" style="vertical-align: middle;"/> ' + customMessage + '</div>');
    var marginLeft = $j('.' + formClass).find('.progress-spinner').css('margin-left');
    var marginTop = $j('.' + formClass).find('.progress-spinner').css('margin-top');

    if (marginLeft == DEFAULT_MARGIN_LEFT + 'px' && marginTop == DEFAULT_MARGIN_TOP + 'px') {
      var sumbitBtnMarginLeft = $j(control).css('margin-left');
      var sumbitBtnMarginTop = $j(control).css('margin-top');

      sumbitBtnMarginLeft = sumbitBtnMarginLeft.substring(0, sumbitBtnMarginLeft.indexOf('px'))
      sumbitBtnMarginTop = sumbitBtnMarginTop.substring(0, sumbitBtnMarginTop.indexOf('px'))

      if (sumbitBtnMarginLeft == '') { sumbitBtnMarginLeft = '0'; }
      if (sumbitBtnMarginTop == '') { sumbitBtnMarginTop = '0'; }

      $j('.' + formClass).find('.progress-spinner').css('margin-left', (parseInt(DEFAULT_MARGIN_LEFT) + parseInt(sumbitBtnMarginLeft)) + 'px');
      $j('.' + formClass).find('.progress-spinner').css('margin-top', (parseInt(DEFAULT_MARGIN_TOP) + parseInt(sumbitBtnMarginTop)) + 'px');
    }

  }
  else {
    $j('.' + formClass).find('.progress-spinner').show();
  }

  $j(control).hide().addClass('in-progress');
  $j('.' + formClass).find('.form-result').empty();
}

function ShowFormMessage(formClass, message) {
  $j('.' + formClass).find('.form-result').html(message).show();
}

function StopSpinning(formClass) {
  $j('.' + formClass).removeClass('submitting');
  $j('.' + formClass).find('.in-progress').show().removeClass('in-progress');
  $j('.' + formClass).find('.progress-spinner').hide();
}


/* Link Spinning */

function AjaxRequestByLink(link, params, customMessage, method) {

  var l = $j(link);

  if (l.hasClass('in-progress')) return;
  var linkClass = 'link' + randomString(8);
  l.addClass(linkClass);

  LinkStartSpinning(linkClass, link, customMessage);

  var invokeUrl = params.InvokeUrl ? params.InvokeUrl : window.location.path;
  delete params.invokeUrl;

  if (!method && method == 'get') {
    jQuery.get(invokeUrl,
              params,
              function () {
                LinkStopSpinning(linkClass);
              });
  }
  else {
    jQuery.post(invokeUrl,
              params,
              function () {
                LinkStopSpinning(linkClass);
              });
  }
}

function AjaxRequestWaitingList(link, params, customMessage, method) {

  var l = $j(link);

  if (l.hasClass('in-progress')) return;
  var linkClass = 'link' + randomString(8);
  l.addClass(linkClass);

  if (confirm("Are you sure you want to join the waiting list?")) {

    LinkStartSpinning(linkClass, link, customMessage);

    var invokeUrl = params.InvokeUrl ? params.InvokeUrl : window.location.path;
    delete params.invokeUrl;

    if (!method && method == 'get') {
      jQuery.get(invokeUrl,
              params,
              function () {
                LinkStopSpinning(linkClass);
              });
    }
    else {
      jQuery.post(invokeUrl,
              params,
              function () {
                LinkStopSpinning(linkClass);
              });
    }

    $j('#waitList').html('<span style=\'font-size:16px; color:#70AE12;font-weight:bold;\'>Joined</span>')

  }

  else {

  }
}

function LinkStartSpinning(linkClass, control, customMessage) {
  var DEFAULT_MARGIN_LEFT = 5;
  var DEFAULT_MARGIN_TOP = 4;

  if (customMessage) {
    if (customMessage == 'no-text') customMessage = '';
  } else {
    customMessage = 'In Progress...';
  }

  var attrClasses = $j(control).attr('class');
  var attrStyles = $j(control).attr('styles');
  $j(control).after('<div class="' + attrClasses + ' ' + linkClass + '-progress-spinner" styles="' + attrStyles + '"><img src="/local/css/img/ico-loading.gif" style="vertical-align: middle;"/> ' + customMessage + '</div>');
  var marginLeft = $j("." + linkClass + "-progress-spinner").css('margin-left');
  var marginTop = $j("." + linkClass + "-progress-spinner").css('margin-top');

  if (marginLeft == DEFAULT_MARGIN_LEFT + 'px' && marginTop == DEFAULT_MARGIN_TOP + 'px') {
    var sumbitBtnMarginLeft = $j(control).css('margin-left');
    var sumbitBtnMarginTop = $j(control).css('margin-top');

    sumbitBtnMarginLeft = sumbitBtnMarginLeft.substring(0, sumbitBtnMarginLeft.indexOf('px'))
    sumbitBtnMarginTop = sumbitBtnMarginTop.substring(0, sumbitBtnMarginTop.indexOf('px'))

    if (sumbitBtnMarginLeft == '') { sumbitBtnMarginLeft = '0'; }
    if (sumbitBtnMarginTop == '') { sumbitBtnMarginTop = '0'; }

    $j("." + linkClass + "-progress-spinner").css('margin-left', (parseInt(DEFAULT_MARGIN_LEFT) + parseInt(sumbitBtnMarginLeft)) + 'px');
    $j("." + linkClass + "-progress-spinner").css('margin-top', (parseInt(DEFAULT_MARGIN_TOP) + parseInt(sumbitBtnMarginTop)) + 'px');
  }

  $j(control).hide().addClass('in-progress');
}

function LinkStopSpinning(linkClass) {
  $j('.' + linkClass).removeClass('in-progress');
  $j('.' + linkClass).show()
  $j('.' + linkClass + '-progress-spinner').remove();
  $j('.' + linkClass).removeClass(linkClass);
}

/***/

//function Post(form, callback) {
//  var f = jQuery(form);
//  jQuery.post(f.attr('action'), f.serialize());
//  return false;
//}

function Update(expression, url, data) {
  jQuery.post(url, data, function (responseText, status) { jQuery(expression).html(responseText); });
}

function Invoke(params, confirmation) {
  if (typeof confirmation === 'string') { if (!confirm(confirmation)) { return; } }
  jQuery.post(params.InvokeUrl ? params.InvokeUrl : window.location.path, params);
}

function randomString(string_length) {
  var randomstring = '';

  for (var i = 0; i < string_length; i++) {
    randomstring += Math.floor(Math.random() * 10); ;
  }

  return randomstring;
}

//**** Utility Functions ****//

function toggleBlock(containerId) {
  if ($j(containerId).hasClass('expanded')) {
    $j(containerId).removeClass('expanded').addClass('collapsed').slideUp('fast');
  } else {
    $j(containerId).removeClass('collapsed').addClass('expanded').slideDown('fast');
  }
}

/*
function toggleBlockWithPicturedState(sender, containerId) {
if ($j(sender).hasClass('expanded')) {
$j(sender).removeClass('expanded').addClass('collapsed');
$j(containerId).slideUp('fast');
} else {
$j(sender).removeClass('collapsed').addClass('expanded');
$j(containerId).slideDown('fast');
}
}
*/

function toggleBlockWithPicturedState(sender, containerId, classNameCollapsed, classNameExpanded) {
  if (typeof (classNameCollapsed) == 'undefined') classNameCollapsed = 'collapsed';
  if (typeof (classNameExpanded) == 'undefined') classNameExpanded = 'expanded';

  if ($j(sender).hasClass(classNameExpanded)) {
    $j(sender).removeClass(classNameExpanded).addClass(classNameCollapsed);
    $j(containerId).slideUp('fast');
  } else {
    $j(sender).removeClass(classNameCollapsed).addClass(classNameExpanded);
    $j(containerId).slideDown('fast');
  }
}

/* toggleDetails already exists
function toggleDetails(sender) {
$j('.toggleable').find('.details-expanded').removeClass('details-expanded').addClass('details-collapsed').slideUp();
$j('.toggleable').find('.toggler').removeClass('toggler-expanded').addClass('toggler-collapsed');
$j(sender).closest('.toggleable').find('.toggleable-details').removeClass('details-collapsed').addClass('details-expanded').slideDown();
$j(sender).closest('.toggleable').find('.toggler').removeClass('toggler-collapsed').addClass('toggler-expanded');
}
*/

/* REMOVE IT?
function BEP_toggleDetails(sender) {

$j('h2.expanded').removeClass('expanded').addClass('collapsed');
$j(sender).parent().removeClass('collapsed').addClass('expanded');
$j('.expandable').removeClass('expanded');
$j(sender).parent().parent().children('.expandable').addClass('expanded').slideDown();
$j('.expandable').each(function() {
if (!($j(this).hasClass('expanded'))) {

$j(this).slideUp();
}

});
}
*/
function getParam(paramName, reqStr) {
  var res = '';
  var indOfQ;
  indOfQ = reqStr.indexOf('?');
  if (indOfQ != -1) {
    reqStr = reqStr.substring(indOfQ + 1);
    var paramsAr = reqStr.split('&');
    var ind;
    for (var i = 0; i < paramsAr.length; i++) {
      ind = paramsAr[i].indexOf('=');
      if (paramsAr[i].substring(0, ind) == paramName) {
        res = paramsAr[i].substring(ind + 1);
        break;
      }
    }
  }
  return res;
}

function trim(str) {
  return str.replace(/^\s+|\s+$/g, '');
}


function updateCharacterCounterUniversal(sender, characterCounter, maxCharacterCount) {
  var count = maxCharacterCount - $j(sender).val().length;
  $j(characterCounter).html('<strong>' + count + '</strong> characters remaining');
  if (count < 0) {
    $j(characterCounter).addClass('overflown');
  } else {
    $j(characterCounter).removeClass('overflown');
  }
}


//***//


//**** Custom Functions ****//

//checklist
function toggleDetails(sender) {
  if ($j(sender).hasClass('expanded')) {
    $j(sender).removeClass('expanded').addClass('collapsed').html('Expand');
    $j(sender).parent().parent().children('.expandable').removeClass('expanded').addClass('collapsed').slideUp();
  }
  else {
    $j(sender).removeClass('collapsed').addClass('expanded').html('Collapse');
    $j(sender).parent().parent().children('.expandable').removeClass('collapsed').addClass('expanded').slideDown();
  }
}

function toggleDetailsWithHideAndShow(sender) {
  if ($j(sender).hasClass('expanded')) {
    $j(sender).removeClass('expanded').addClass('collapsed').html('Expand');
    $j(sender).parent().parent().children('.expandable').removeClass('expanded').addClass('collapsed').hide();
  }
  else {
    $j(sender).removeClass('collapsed').addClass('expanded').html('Collapse');
    $j(sender).parent().parent().children('.expandable').removeClass('collapsed').addClass('expanded').show();
  }
}

function customizedToggleWithHideAndShow(sender, target) {
  if ($j(sender).hasClass('expanded')) {
    $j(sender).removeClass('expanded').addClass('collapsed');
    $j(target).removeClass('expanded').addClass('collapsed').hide();
  }
  else {
    $j(sender).removeClass('collapsed').addClass('expanded');
    $j(target).removeClass('collapsed').addClass('expanded').show();
  }
}

function refreshHrsBetweenProgramSteps(categorySelectorId) {
  $j(categorySelectorId + ' .program-steps .program-steps-separator').remove();
  $j(categorySelectorId + ' .program-steps .program-step:last').prevAll().after('<div class="hr program-steps-separator"></div>');
}

function refreshLightBoxes() {
  jQuery('a.lightboxed').lightBox(); // Select all links that contains class "lightboxed"
}


/*** Controls js ****/


  














