function reloadSelectList(formElement, listName, elementID, keyword) {
  try {
    var url = 'internal_request.php?get_list=1&list_name=' + listName + '&element_id=' + elementID + '&keyword=' + keyword;
    http.open('get', url);
    http.onreadystatechange = function(aEvt) {
      if (http.readyState == 4) {
        var response = http.responseText;
        if (response) {
          var jsonTotalResponse = eval('(' + response + ')');
          var destList = formElement.elements[listName];
          destList.disabled = false;

          i = 0;
          destList.options.length = 0;
          destList.options[i++] = new Option('-', 0);
          
          for (o in jsonTotalResponse.list) {
          
            destList.options[i++] = new Option(jsonTotalResponse.list[o], o);
          }
        }
      }
    }

    http.send(null);
  }
  catch (e) { }
}

function reloadSelectList1(formElement, listName, elementID, keyword) {
  try {
    http.open('get', 'internal_request.php?get_list=1&list_name=' + listName + '&element_id=' + elementID + '&keyword=' + keyword);
    http.onreadystatechange = function(aEvt) {
      if (http.readyState == 4) {
        document.body.style.cursor = 'wait';
        formElement.elements['filter_button'].disabled=true;

        var response = http.responseText;
        if (response) {
          var jsonTotalResponse = eval('(' + response + ')');
          var destList = formElement.elements[listName];
          destList.disabled = false;
          destList.options.length = 0;
          /*var len = destList.options.length;
          for (var i = (len-1); i >= 0; i--) {
            destList.options[i] = null;
          }*/
          i = 0;
          for (o in jsonTotalResponse.list) {
            destList.options[i++] = new Option(jsonTotalResponse.list[o], o);
          }
        }
        document.body.style.cursor = 'default';
        formElement.elements['filter_button'].disabled=false;
      }
    }
    http.send(null);
  }
  catch (e) { }
}

function emptySelect(obj) {
  var len = obj.options.length;
  for (var i = (len-1); i >= 0; i--) {
    obj.options[i] = null;
  }
  i = 0;
  obj.options[i++] = new Option('-', 0);
}

function syncSelect(obj, target, keyword) {
  if (keyword == undefined) keyword = '';
  var filterValue = obj.options[obj.selectedIndex].value;
  if (filterValue > 0) {
    reloadSelectList(obj.form, target, filterValue, keyword);
  }
}

function filterSelect1(obj, target, keyword) {
  if (keyword == undefined) keyword = '';
  reloadSelectList1(obj.form, target, 0, keyword);
}

function showCustomCalendar(obj) {
  obj.blur();
  showCalendar('', obj, null, '', obj, 0, 30, 1);
  return false;
}

function openBankOrder(product_sid) {
  return window.open('product_bank_order.php?product_sid='+product_sid, 'product_bank_order'+product_sid, 'height=600,width=600,top=100,left=100,scrollbars=yes,resizable=yes,menubar=yes');
}

function getGenderIcon(profile_composition_sid) {
  var img;

  switch (profile_composition_sid) {
    case 0: img = 'transvestite'; break;
    case 1: img = 'men'; break;
    case 2: img = 'women'; break;
    case 3: img = 'couple'; break;
  }
  return '<img src="/images/icon_'+img+'.gif" />';
}

function setCookie(name, value, expires, path, domain, secure) {
  // set time, it's in milliseconds
  var today = new Date();
  today.setTime( today.getTime() );

  /*
  if the expires variable is set, make the correct
  expires time, the current script below will set
  it for x number of days, to make it for hours,
  delete * 24, for minutes, delete * 60 * 24
  */
  if ( expires ) {
    expires = expires * 1000 * 60 * 60 * 24;
  }
  var expires_date = new Date( today.getTime() + (expires) );

  document.cookie = name + "=" +escape( value ) +
  ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
  ( ( path ) ? ";path=" + path : "" ) +
  ( ( domain ) ? ";domain=" + domain : "" ) +
  ( ( secure ) ? ";secure" : "" );
}

function getCookie( check_name ) {
  // first we'll split this cookie up into name/value pairs
  // note: document.cookie only returns name=value, not the other components
  var a_all_cookies = document.cookie.split( ';' );
  var a_temp_cookie = '';
  var cookie_name = '';
  var cookie_value = '';
  var b_cookie_found = false; // set boolean t/f default f

  for ( i = 0; i < a_all_cookies.length; i++ )
  {
    // now we'll split apart each name=value pair
    a_temp_cookie = a_all_cookies[i].split( '=' );


    // and trim left/right whitespace while we're at it
    cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

    // if the extracted name matches passed check_name
    if ( cookie_name == check_name )
    {
      b_cookie_found = true;
      // we need to handle case where cookie has no value but exists (no = sign, that is):
      if ( a_temp_cookie.length > 1 )
      {
        cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
      }
      // note that in cases where cookie is initialized but no value, null is returned
      return cookie_value;
      break;
    }
    a_temp_cookie = null;
    cookie_name = '';
  }
  if ( !b_cookie_found )
  {
    return null;
  }
}

function toggleStyle(colour) {
  if (document.all)  {
    document.all.customCss.href = '/' + colour + '.css';
  }
  else {
    document.getElementById('customCss').href = '/' + colour + '.css';
  }

  setCookie('style', colour, 365);
}

function print_r(obj) {
  var i=0;
  var s = new String();
  for (o in obj) {
    s += ((i&1)?"    ":"\n") + o + "=>" + obj[o];
    i++;
  }
  window.alert(s);
}

function in_array(needle, haystack, trim) {
  for (var i=0; i<haystack.length; i++)  {
    if (trim)  {
      if (needle.trim() == haystack[i].trim()) return true;
    }
    else {
      if (needle == haystack[i]) return true;
    }
  }

  return false;
}

String.prototype.trim = function() {
  return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

function pad(number, length) {
  var str = '' + number;
  while (str.length < length) {
    str = '0' + str;
  }
   
  return str;
}

function visualise(id) {
  var div = '#' + id;
  $(div).css("visibility", "visible");
}

function dec(s) {
  re = /(\w+)(\.jpg)/;
  re.exec(s);
  s = RegExp.$1;
  var ext = RegExp.$2;

  var n = new String();
  for (var i=s.length; i>0; i--) {
    n += s.charCodeAt(i-1) - 100;
  }
  return '/image_' + (n - 534179) + '_2' + ext;
}

function isVisibleAfterScrolling(elem) {
  var docViewTop = $(window).scrollTop();
  var docViewBottom = docViewTop + $(window).height();

  var elemTop = $(elem).offset().top;
  var elemBottom = elemTop + $(elem).height();

  return ($(elem).is(':visible') && (elemBottom >= docViewTop) && (elemTop <= docViewBottom));
}
