/*
 * common.js
 * Common platform services javascript.
 * By James Chen and Ryan Sandor Richards
 * Copyright 2009 FreeCause, Inc.
 */

$(function(){

  $('#locale_image').click(toggle_locales);
  $('#locale_select').change(select_locale);

  $('#mysites').change(change_site);

  // Sign-in link functionality
  $('#signin_link').click(signin_click);

  $('.request_auth').click(requestModuleAuthorization);

  // Setup the call-back loop for checking authorization requests
  // if needed.
  /*
  if ($('.num-requests-pending').size() > 0) {
    setInterval(update_requests_pending, 15000);   
  }
  */
});

function update_requests_pending() {
  $.get(Site.baseurl + 'admin/ws_get_num_requests_pending', {}, function(response) {
    $('.num-requests-pending').html(response);
  }, 'json');
}

function toggle_locales() {
  $('#locale_select').toggle();
  $('#locale_image').toggle();
}

function select_locale() {
  var locale_id = $(this).val();
  eraseCookie('fclocale');
  createCookie('fclocale', locale_id);
  $('#locale_select').replaceWith('Loading...');
  location.reload(true);
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function eraseCookie(name) {
  createCookie(name,"",-1);
}

function signin_click() {
  $('#signin_link').unbind('click');

  Dialog.show({
    controller:'common',
    dialog:'signin',
    params: 
    {
      redirect_url: $('#redirect_url_after_login').val()
    }
  });
}

function change_site(){
  window.location = $('#mysites').val();
}

function signout_ajax(){
  $.ajax({
    type: "GET",
    url: Site.baseurl + "account/signout",
    success: function(){location.reload();}
  });
}

function signin_ajax(){
  var password = $("#fpassword").val();
  var username = $("#fusername").val();
    $.ajax({
      type: "POST",
      url: Site.baseurl + "account/signin",
      data: "username=" + username + "&password=" + password,
      error: function(XMLHttpRequest, textStatus, errorThrown){
        $('#msg_signin').text('Failed: ' + textStatus);
      },
      success: function(msg){
        if(msg){
          $('#msg_signin').text(msg);
        } else {
          location.reload();
        }
      }
    });
}

function setCookie(c_name,value,expiredays)
{
  var exdate=new Date();
  exdate.setDate(exdate.getDate()+expiredays);
  document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()
      +";path=/"
    );
}

function requestModuleAuthorization() {
  // Fetch authorization information
  var module_id = $(this).attr('class').split(' ')[1].split('_')[2];
  var user_id = $(this).attr('class').split(' ')[2].split('_')[2];

  // Toggle the pending and denied messages
  $(this).parents('.auth-request').children('.pending, .denied').toggle();

  // Perform the service request for authorization
  $.get(Site.baseurl + 'common/ws_request_module_auth/' + module_id + '/' + user_id);
}

