/* o2 tv javascript functions */



function switchStrings(eA, eB) { var s = eA.text(); eA.text(eB.text()); eB.text(s); }



function initExpandableLinks() {
  var	pathtokens = document.location.pathname.split("/"),
    mySection = pathtokens[pathtokens.length - 2];
  $('.expandable h3.expand-link a')
    .click(function(event) {
      var vParent = $(this).parents('.expandable');

      if (vParent.data('moving')) return false;
      vParent.data('moving', true);

      var vLink = vParent.find('h3.expand-link');

      if (vParent.hasClass('collapsed')) {
        vParent.find('.expandable-content').slideDown('medium', function() {
          vLink.each(function() { switchStrings($(this).find('em'), $(this).find('span')); });
          vParent.removeClass('collapsed').removeData('moving');
        });
        if (typeof pT != "undefined") {pT._trackEvent(mySection, "expand", vParent[0].id, 0)}
      }
      else {
        vParent.find('.expandable-content').slideUp('medium', function() {
          vLink.each(function() { switchStrings($(this).find('em'), $(this).find('span')); });
          vParent.addClass('collapsed').removeData('moving');
        });
        if (typeof pT != "undefined") {pT._trackEvent(mySection, "collapse", vParent[0].id, 0)}
      }

      event.preventDefault();
    });
}



function initExpandableLinks2(selector, string) {
  var vParent = $(selector);
  var	pathtokens = document.location.pathname.split("/"),
    mySection = pathtokens[pathtokens.length - 2];

  if (vParent.find('.expandable-content').length == 0) return;

  vParent
    .data('heightMax', vParent.find('.box').height())
    .find('.expandable-content').hide().end()

    .find('ul:first li:last-child').addClass('expand-link-container').append('<a href="#" class="plus expand-link-2">' + string + '</a>').end()
    .addClass('collapsed')
    .data('heightMin', vParent.find('.box').height() + 1)

    .find('.expand-link-2').click(function(event) {
      var vParent = $(this).parents('.expandable-2');

      vParent
        .find('.box').animate({ 'height': vParent.data('heightMax') }, 'fast').end()
        .find('.expandable-content').fadeIn().end()
        .removeClass('collapsed');

      if (typeof pT != "undefined") {pT._trackEvent(mySection, "expand", vParent[0].id, 0)}
      event.preventDefault();
    }).end()

    .find('.expand-link').click(function(event) {
      var vParent = $(this).parents('.expandable-2');

      vParent
        .find('.box').animate({ 'height': vParent.data('heightMin') }, 'fast').end()
        .find('.expandable-content').hide().end()
        .addClass('collapsed');

      if (typeof pT != "undefined") {pT._trackEvent(mySection, "collapse", vParent[0].id, 0)}
      event.preventDefault();
    });
}



function initClickPopup( selector, allowOnlyOneInstance, doNotTrackCursor ) {
  $( selector ).click( function( event ) {
    event.stopPropagation();
    event.preventDefault();

    var popup_control = $(this),
      popup = popup_control.data( 'popup' );

    if ( !popup ) {
      popup = popup_control.next( '.popup' );
      popup.addClass( 'shadow' );
      popup.prepend('<a href="#" class="close" onclick="return false;">&times;</a>');
      popup.wrapInner( '<span class="arrow corners-2"><span class="tl"><span class="tr"><span class="br"><span class="bl"><span class="h"><span class="v"><span class="content"></span></span></span></span></span></span></span></span>' );
      popup.appendTo( $( document.body ) );
      popup_control.data( 'popup', popup );
    }

    if ( popup_control.data( 'active' ) == true ) {
      if ( allowOnlyOneInstance ) {
        window.activePopupControl = null;
      }

      popup_control.data( 'active', false );
      popup.fadeOut( 'fast' );
    }
    else {
      if ( allowOnlyOneInstance ) {
        if ( window.activePopupControl ) {
          window.activePopupControl.click();
        }
        window.activePopupControl = popup_control;
      }

      popup_control.data( 'active', true );
      popup.fadeIn( 'fast' );

      if (doNotTrackCursor) {
        popup.css({
          'top'	: popup_control.offset().top - popup.height() - 10,
          'left'	: popup_control.offset().left - popup.width()/2 + popup_control.width()/2 + 2
        });
      }
      else {
        popup.css({
          'top'	: event.pageY - popup.height() - 10,
          'left'	: event.pageX - popup.width()/2 + 2
        });
      }
    }
  } ).css( { 'outline': 'none' } );
}



function hideActiveElements(event) {
  if (window.activePopupControl) {
    if (event) {
      var target = $(event.target);
      if (!target.is('.popup *') || target.is('a.close')) { window.activePopupControl.click(); }
    }
    else window.activePopupControl.click();
  }
  if (window.activeHoverPopupControl) {
    if (event) {
      var target = $(event.target);
      if (!target.is('.hoverpop *')) { window.activeHoverPopupControl.hover(); }
    }
    else window.activeHoverPopupControl.hover();
  }
  if (window.activeStyledSelectControl) { window.activeStyledSelectControl.click(); }
}



function initPackageTableCell(selector, string, targetSection) {
  var vPackage = $(selector).parents('td:first');
  var expandLinksSelector = (targetSection) ? 'a.expand-link, a.expand-link-2' : 'h3 a, a.expand-link, a.expand-link-2';

  if (string) {
    vPackage
      .find('.channels-hidden:last').append('<a href="#" class="expand-link">' + string + '</a>').end()
      .data('heightMax', vPackage.find('.expandable-content').height())
      .addClass('collapsed')
      .find('.channels-hidden').hide().end()
      .data('heightMin', vPackage.find('.expandable-content').height())
      .find('.expandable-content').height(vPackage.data('heightMin')).end()
      .find(expandLinksSelector).click(function(event) {
        var vParent = $(this).parents('td:first');

        if (vParent.data('moving')) return false;
        vParent.data('moving', true);

        if (vParent.hasClass('collapsed')) {
          vParent
            .find('.channels-hidden').show().end()
            .removeClass('collapsed')
            .find('.expandable-content').animate({ 'height': vParent.data('heightMax') }, 'fast', function() {
              vParent.removeData('moving');
            });
        }
        else {
          vParent
            .find('.expandable-content').animate({ 'height': vParent.data('heightMin') }, 'fast', function() {
              vParent
                .find('.channels-hidden').hide().end()
                .addClass('collapsed').removeData('moving');
            });
        }

        event.preventDefault();
      });
  }

  vPackage
    .mouseenter(function() {
      $(this).addClass('active-package');

      var vId = $(this).find('.package').attr('id');
      var vCells = $(this).parents('table').find('.' + vId);
      vCells.addClass('active-package');
    })
    .mouseleave(function() {
      $(this).removeClass('active-package');
      $(this).parents('table').find('td.active-package').removeClass('active-package');
    });
}



function initStyledSelect(selector) {
  var vSelect = $(selector);
  var vSelectValue = vSelect.val();
  var vSelectEvent = vSelect.get(0).onchange;

  vSelect.clone().insertAfter(vSelect);
  vSelect.hide().attr('id', '');

  vSelect = $(selector);
  vSelect
    .find('option').each(function() {
      var vOptionClass = "option";
      var vText = ($(this).attr('title') != "") ? $(this).attr('title') : $(this).text();

      if ($(this).attr('class')) { vOptionClass = vOptionClass + " " + $(this).attr('class'); }

      if ($(this).val() == vSelectValue) { vSelect.prepend('<span>' + vText + '<\/span>'); vOptionClass += " selected"; }
      if ($(this).attr('disabled')) { vOptionClass += " disabled"; }

      $(this).replaceWith('<li class="' + vOptionClass + '" title="' + $(this).attr('title') + '">' + $(this).text() + '<\/li>');
    }).end()
    .find('li').wrapAll('<ul />').end()
    .replaceWith('<div id="' + vSelect.attr('id') + '" class="styled-select"><div>' + vSelect.html() + '</div></div>');

  vSelect = $(selector);
  vSelect
    .click(function() {
      if ($(this).hasClass('disabled')) return false;

      var vList = $(this).find('ul');
      var vSelected = vList.find('.selected');

      if (vList.hasClass('active')) {
        window.activeStyledSelectControl = null;
        vList.removeClass('active').slideUp('fast', function() {
          vList.parent().removeClass('opened');
          var vCurrent = vList.data('value');
          var vNew = (vSelected.attr('title') != "") ? vSelected.attr('title') : vSelected.text();

          if (vSelectEvent && (vCurrent != vNew)) vSelectEvent();
        });
      }
      else {
        vList.data('value', $(this).find('span').text());
        vList.parent().addClass('opened');
        vList.addClass('active').slideDown('fast', function() {
          window.activeStyledSelectControl = vSelect;
        });
      }
    })
    .find('li')
      .mouseover(function() {
        var vList = $(this).parent('ul');

        if (vSelect.find('li.selected') == $(this) || (!vList.hasClass('active'))) return; 

        vList.find('.selected').removeClass('selected');
        $(this).addClass('selected');
      })
      .click(function() {
        var vSelectOriginal = vSelect.prev('select');

        vSelectOriginal.find('option:eq(' + $(this).index() + ')').attr('selected', 'selected');

	var vText = ($(this).attr('title') != "") ? $(this).attr('title') : $(this).text();
        vSelect.find('span').text(vText);
      });
}



function initLabeledInput(selector) {
  $(selector).each(function() {
    if (!$(this).attr('title')) return;
    if (!$(this).val()) $(this).val($(this).attr('title'));

    $(this)
      .focus(function() {
        if ($(this).val() == $(this).attr('title')) {
          $(this).val("");
        }
      })
      .blur(function() {
        if ($(this).val() == "") {
          $(this).val($(this).attr('title'));
        }
      });
  });

  $(selector).parents('form').submit(function() {
    var vInput = $(selector);
    vInput.each(function() {
      if ($(this).val() == $(this).attr('title')) $(this).val("");
    });
  });
}


jQuery.fn.ajaxSubmit = function(foo, conf) {
    var config = {
        method: false,  // request method (get/post) defaults to form's
        action: false,  // action (url) defaults to form's
        loading: 'Loading...'
    };
    config = jQuery.extend(config, conf);
    var callback = (typeof(foo) === 'string') ? function(data) {jQuery(foo).html(data);} : (typeof(foo) === 'function') ? foo : false;
    return this.each(function() {
        var form = jQuery(this);
        if(form.is('form')) {
            var method = config.method || form.attr('method');
            var action = config.action || form.attr('action');
            var submit = jQuery('input[type="submit"]', form);
            var data = {};

            form.submit(function() {
                jQuery('*[name]', form).each(function() {
                    var t = jQuery(this);
                    var val = (t.attr('type') == 'checkbox') ? (t.attr('checked') == true) ? 1 : 0 : t.val();
                    data[t.attr('name')] = val;
                });

                submit.val(config.loading);

                jQuery[method](action, data, function(data) {
                    callback(data);
                });

                 return false;
            });
        }
    });
};

function showAjax(url, chosenUrl){
  $.ajax({
    url: url,
    cache: false,
    success: function(html){
      $("#lb-content").html(html);
    }
  });
}

function submitFormToAction(id, action) {
    var form = document.getElementById(id);
    form.action = action;
    form.submit();
}
function checkAllCheckboxes(formId,checkboxName)
{
  var searchedForm = document.getElementById(formId);
  for (var i=0; i < searchedForm.elements.length; i++) {
    el = searchedForm.elements[i];
    if (el.type == 'checkbox' && el.name.substr(0,checkboxName.length) === checkboxName)
       el.checked = true;
  }
}


function initOverPopup( selector, allowOnlyOneInstance) {
  $( selector ).hover( function( event ) {
    event.stopPropagation();
    event.preventDefault();

    var popup_control = $(this),
      hoverpop = popup_control.data( 'hoverpop' );

    if ( !hoverpop ) {
      hoverpop = popup_control.next( '.hoverpop' );
      hoverpop.addClass( 'shadow' );
      hoverpop.wrapInner( '<span class="arrow corners-2"><span class="tl"><span class="tr"><span class="br"><span class="bl"><span class="h"><span class="v"><span class="content"></span></span></span></span></span></span></span></span>' );
      hoverpop.appendTo( $( document.body ) );
      popup_control.data( 'hoverpop', hoverpop );
    }

    if ( popup_control.data( 'active' ) == true ) {
      if ( allowOnlyOneInstance ) {
        window.activeHoverPopupControl = null;
      }

      popup_control.data( 'active', false );
      hoverpop.hide();
    }
    else {
      if ( allowOnlyOneInstance ) {
        if ( window.activeHoverPopupControl ) {
          window.activeHoverPopupControl.hover();
        }
        window.activeHoverPopupControl = popup_control;
      }

      popup_control.data( 'active', true );
      hoverpop.show();

      hoverpop.css({
        'top'	: event.pageY - hoverpop.height() - 10,
        'left'	: event.pageX - hoverpop.width()/2 + 2
      });

    }
  } ).css( { 'outline': 'none' } );
}
