﻿/// <reference path="http://ajax.Microsoft.com/ajax/jQuery/jquery-1.3.2.min-vsdoc.js" />
// Core functions

var sda_cid = 'en-GB';

function wa_msg(t, s)
{
  t.blur();
  alert(s);
}

// Main init function - called when page is fully loaded
function wa_ready(d)
{
  $(document).ajaxError(function(event, request, settings)
  {
    if (d == 1)
    {
      wa_errorhandler_debug(event, request, settings);
    }
    else
    {
      wa_errorhandler(event, request, settings);
    }
  });

  $(document).ready(function()
  {
    // toggle help panel
//    $('#hlppnl').expandable("duration: 50");  // TEMP disabled

    // tab section id
    var i = $('#hfS')[0].value;
    
    // show
    wa_maintab(i);
  });
}

function wa_errorhandler_debug(event, request, settings)
{
  var x = wa_jsonp_dec(request.responseText);
  $.modaldialog.error('Error:<br/>'+x.Message+'<br/><br/>Stack Trace:<br/>'+x.StackTrace, { title: x.ExceptionType });
}

function wa_errorhandler(event, request, settings)
{
  $.modaldialog.error(jsr_Error, { title: jsr_ErrorTitle });
}

function wa_jsonp_dec(x)
{
  var p = x.indexOf('(');
  x = x.substr(p);
  p = x.lastIndexOf(')');
  x = x.substr(0, p + 1);
  return eval(x);
}

function wa_sid()
{
  return $('#hfK')[0].value;
}

// append contents
function wa_jsonws(aId, p, fn)
{
  $(p).addClass("wait");
  $.ajax({ url: "ScriptService.asmx/" + fn,
  data: { aKey: JSON.stringify(wa_sid()), aId : JSON.stringify(aId) },
    dataType: "jsonp",
    success:
   function(m)
   {
     $(p).removeClass("wait");
     $(p).append(m.d);
   }
   ,
    error:
   function(XMLHttpRequest, textStatus, errorThrown)
   {
     $(p).removeClass("wait");
   }
  });
}

// clear and replace if not empty, else leave alone
function wa_jsonwsne(aId, p, fn)
{
  $(p).addClass("wait");
  $.ajax({ url: "ScriptService.asmx/" + fn,
  data: { aKey: JSON.stringify(wa_sid()), aId : JSON.stringify(aId) },
  dataType: "jsonp",
    success:
   function(m)
   {
     $(p).removeClass("wait");
     if (m)
     {
       $(p).empty();
       $(p).append(m.d);
     }
   },
    error:
   function(XMLHttpRequest, textStatus, errorThrown)
   {
     $(p).removeClass("wait");
   }
  });
}

// Append contents and call a function
function wa_jsonwsf2(aId, p, fn, f)
{
  $(p).addClass("wait");
  $.ajax({ url: "ScriptService.asmx/" + fn,
  data: { aKey: JSON.stringify(wa_sid()), aId : JSON.stringify(aId) },
  dataType: "jsonp",
    success:
   function(m)
   {
     $(p).removeClass("wait");
     $(p).append(m.d);
     f();
   },
    error:
   function(XMLHttpRequest, textStatus, errorThrown)
   {
     $(p).removeClass("wait");
   }
  });
}

// just call function on success. return string to throw error
function wa_jsonwsf(aId, fn, f)
{
  $.ajax({ url: "ScriptService.asmx/" + fn,
  data: { aKey: JSON.stringify(wa_sid()), aId : JSON.stringify(aId) },
  dataType: "jsonp",
    success:
   function(msg)
   {
     if (msg.d)
     {
       wa_error(msg.d);
     }
     else
     {
       f();
     }
   },
    error:
   function(XMLHttpRequest, textStatus, errorThrown)
   {
   }
  });
}

// load an ASCX dynamically using JSON webservice into jquery specified by 'p'
function wa_get(aId, p)
{
  wa_jsonws(aId, p, 'GetControlHtml');
}

// load an ASCX dynamically using JSON webservice into jquery specified by 'p'
function wa_getclr(aId, p)
{
  $(p).empty();
  wa_jsonws(aId, p, 'GetControlHtml');
}

// load an ASCX dynamically using JSON webservice into jquery specified by 'p' calling 'f' on success
function wa_jsonwsclr_f(aId, p, f)
{
  $(p).empty();
  wa_jsonwsf2(aId, p, 'GetControlHtml', f);
}

function wa_jsonwsclr(aId, p, fn)
{
//  $(p).empty();
  wa_jsonws(aId, p, fn);
}

function wa_maintab(i)
{
  wa_chelp(i);
  wa_detail(i);
}

function wa_chelp(i)
{
  $('#hlppnli').empty();
  if (i != '')
  {
    wa_jsonws(i, '#hlppnli', 'GetContextHelp');
    wa_jsonwsne(i, '#headingpnl', 'GetSectionHeading');
  }
}

// detail section
function wa_detail(i)
{
  $('#detailpnl').empty();
  switch (i)
  {
    case '1':
      wa_myhome_init(); break;
    case '2':
      wa_makebooking_init(); break;
    case '3':
      wa_mybookings_init(); break;
    case '4':
      wa_atc_init(); break;
    case '5':
      wa_stmt_init(); break;
    case '6':
      wa_md_init(); break;
    case '8':
      wa_pwdch_init(); break;
  }
}

// change tabs
function wa_nav(i)
{
  document.location = 'frmMain.aspx?p=' + i;
}

// My Home
function wa_myhome_init()
{
  wa_getclr('~/Home/Home.ascx', '#detailpnl');
}

function wa_error(msg)
{
  $.modaldialog.error(msg, { title: 'Error' });
}

function wa_errortitle(ttl,msg)
{
  $.modaldialog.error(msg, { title: ttl });
}

function wa_banner(a,t,p)
{
  wa_getclr('~/Controls/SummaryBanner.ascx?a='+a+'&t='+t, p);
}

function wa_r2_10(x)
{
  return $(x)[0].checked ? '1' : '0';
}

// disable all input controls
function wa_hidipt() 
{
  $(':input').addClass('hid');
}

// disable all button controls
function wa_hidbtn()
{
  $(':button').addClass('hid');
}

// enable all button controls
function wa_showbtn()
{
  $(':button').removeClass('hid');
}

// autoscroll
function wa_pnlr(pnl, hd)
{
  var y = $(pnl)[0];
  $(hd)[0].value = y.scrollTop;
}

function wa_pnls(pnl, hd)
{
  var y = $(pnl)[0];
  y.scrollTop = $(hd)[0].value;
}

// attendance
function wa_atc_init()
{
  wa_getclr('~/AttendanceOverviewChart.ascx', '#detailpnl');
}

function wa_atc_render(y)
{
  wa_getclr('~/AttendanceOverviewChart.ascx?y=' + y.value, '#detailpnl');
}

// Statement
function wa_stmt_init()
{
  wa_getclr('~/Statement/Statement.ascx', '#detailpnl');
}

function wa_stmt_cmd(c)
{
  wa_getclr('~/Statement/Statement.ascx?cmd='+c, '#detailpnl');
}

function wa_rcpt_get(r)
{
  wa_getclr('~/Statement/ReceiptDetail.ascx?r=' + r, '#detailpnl');
}

// My Details
function wa_md_init()
{
  wa_getclr('~/MyDetails/MyDetailsTabs.ascx', '#tbaralt');
  wa_getclr('~/MyDetails/MyDetailsMain.ascx', '#detailpnl');
}

function wa_md_radc(x)
{
  $('#md_rpSave')[0].disabled = x;
}

function wa_md_save()
{
  var q =
  "?e=" + wa_r2_10('#md_rbEmailYes') +
  "&c=" + wa_r2_10('#md_rbCampYes') +
  "&s=" + wa_r2_10('#md_rbSMSYes') +
  "&bs=" + wa_r2_10('#md_rbBSMSYes') +
  "&p=" + wa_r2_10('#md_rbPhoneYes') +
  "&l=" + wa_r2_10('#md_rbLetterYes');
  wa_getclr('~/MyDetails/MyDetails.ascx'+q, '#detailpnl');
}

function wa_md_loaddetail(p,x,n)
{
  $('#mdmain_personal span a').addClass('tbarnavmydetails');
  $('#mdmain_socialtabs span a').addClass('tbarnavmydetails');
  $('#mdmain_personal span a').removeClass('tbarnavmydetails_s');
  $('#mdmain_socialtabs span a').removeClass('tbarnavmydetails_s');
  switch (x)
  {
    case 0:
      $('#mdmain_personal span a').addClass('tbarnavmydetails_s');
      wa_getclr('~/MyDetails/MyDetails.ascx', '#mdmain_detail'); break;
    default:
      p.className = 'tbarnavmydetails_s';
      wa_getclr('~/MyDetails/SocialNetworks/SocialNetworkUI.ascx?n=' + n, '#mdmain_detail'); break;
  }
}

function wa_md_socialtabs()
{
  wa_getclr('~/MyDetails/SocialNetworks/Tabs.ascx', '#mdmain_socialtabs');
}

function wa_md_socialsave(n)
{
//  var q = '?s=1&n=' + n;
//  var v = $('#snui_ctlAccountSettingsUI_chkIsActive')[0].checked;
//  if (v == true) q += '&a=1';
//  q += '&sn=' + $('#snui_ctlAccountSettingsUI_txtScreenName')[0].value;
//  q += '&u=' + $('#snui_ctlAccountSettingsUI_txtUserName')[0].value;
//  q += '&p=' + $('#snui_ctlAccountSettingsUI_txtPassword')[0].value;
  //  v = $('.sn-event-container input');
  //  wa_setvs('snui_ctlAccountSettingsUI_');
  var s = wa_ctl_qs('snui_ctlAccountSettingsUI') + '&' + wa_ctl_qss('snui_ctlEventRulesUI', '_chkSubscribed');
  wa_getclr('~/MyDetails/SocialNetworks/SocialNetworkUI.ascx?s=1&n=1&' + s, '#mdmain_detail');
}

// Change pwd
function wa_pwdch_init()
{
  $('#headingpnl').empty();
  wa_getclr('~/Controls/SummaryBanner.ascx?a=0&t=2', '#detailpnl');
}

function wa_cpwd_save()
{
  wa_getclr('~/MyDetails/ChangePassword.ascx?s=1', '#detailpnl');
}

function wa_cpwd_k(e)
{
  if (!e) e = window.event;
  if (e.keyCode == 13)
    document.all["rp2_b"].click();
}
function wa_cpwd_l()
{
  document.all["edCurrent"].focus();
}

// state
function wa_vs()
{
  return $('#hfD')[0].value;
}

function wa_setvs(p)
{
  $('#hfD')[0].value = wa_ctl_qs(p);
}

function wa_ctl_qss(v,suff)
{
  var d = typeof (v) == "string" ? (v.length > 0 ? v + "_" : v) : "";
  var sel = d.length > 0 ? ":input[id^='" + d + "']" : ":input";
  var s = "";
  $(sel).each(function(i)
  {
    s += wa_ctl_ids(this, d, suff) + '=' + wa_ctl_val(this) + '&';
  });
  return s.substr(0, s.length - 1);
}

function wa_ctl_qs(v)
{
  var d = typeof (v) == "string" ? (v.length > 0 ? v + "_" : v) : "";
  var sel = d.length > 0 ? ":input[id^='" + d + "']" : ":input";
  var s = "";
  $(sel).each(function(i)
  {
    s += wa_ctl_id(this, d) + '=' + wa_ctl_val(this) + '&';
  });
  return s.substr(0, s.length - 1);
}

function wa_ctl_id(ctl, d)
{
  var id = $(ctl).attr("id");
  return id.substr(d.length, id.length - d.length);
}

function wa_ctl_ids(ctl, d, suff)
{
  var id = $(ctl).attr("id");
  return id.substr(d.length, id.length - d.length).replace(suff,'');
}

function wa_ctl_val(ctl)
{
  var type = $(ctl).attr("type");
  var val;
  switch (type)
  {
    case "radio":
    case "checkbox":
      val = ($(ctl).attr("checked") == true) ? '1' : '0';
      break;

    default:
      val = $(ctl).val();
      break;
  }
  return val;
}

function wa_show_hide(id, x)
{
  var y = $(id)[0];
  if (y)
  {
    if (x)
      $(y).removeClass("hid");
    else
      $(y).addClass("hid");
  }
}

var wa_menuYloc = null;

function wa_floatpanel(name)
{

  wa_menuYloc = parseInt($(name).css("top").substring(0, $(name).css("top").indexOf("px")))
  $(window).scroll(function()
  {
    offset = wa_menuYloc + $(document).scrollTop() + "px";
    $(name).animate({ top: offset }, { duration: 500, queue: false });
  });
}