  function openModal(element)
  {
    var old = element.href;
    var settings = $('setup_'+element.parentNode.parentNode.id+'_settings').value;
    
    element.href+='?category_id='+category_id+'&box_id='+element.parentNode.parentNode.id;
    if ($('setup_'+element.parentNode.parentNode.id+'_settings'))
      element.href+='&settings='+urlEncode($('setup_'+element.parentNode.parentNode.id+'_settings').value);
    myModalbox.start(element);
    element.href=old;
    return false;
  }
  
  function urlDecode(str){
      str=str.replace(new RegExp('\\+','g'),' ');
      return unescape(str);
  }
  
  function urlEncode(str){
      str=escape(str);
      str=str.replace(new RegExp('\\+','g'),'%2B');
      return str.replace(new RegExp('%20','g'),'+');
  }
  
  var END_OF_INPUT = -1;
  
  var base64Chars = new Array(
      'A','B','C','D','E','F','G','H',
      'I','J','K','L','M','N','O','P',
      'Q','R','S','T','U','V','W','X',
      'Y','Z','a','b','c','d','e','f',
      'g','h','i','j','k','l','m','n',
      'o','p','q','r','s','t','u','v',
      'w','x','y','z','0','1','2','3',
      '4','5','6','7','8','9','+','/'
  );
  
  var reverseBase64Chars = new Array();
  for (var i=0; i < base64Chars.length; i++){
      reverseBase64Chars[base64Chars[i]] = i;
  }
  
  var base64Str;
  var base64Count;
  function setBase64Str(str){
      base64Str = str;
      base64Count = 0;
  }
  function readBase64(){    
      if (!base64Str) return END_OF_INPUT;
      if (base64Count >= base64Str.length) return END_OF_INPUT;
      var c = base64Str.charCodeAt(base64Count) & 0xff;
      base64Count++;
      return c;
  }
  function encodeBase64(str){
      setBase64Str(str);
      var result = '';
      var inBuffer = new Array(3);
      var lineCount = 0;
      var done = false;
      while (!done && (inBuffer[0] = readBase64()) != END_OF_INPUT){
          inBuffer[1] = readBase64();
          inBuffer[2] = readBase64();
          result += (base64Chars[ inBuffer[0] >> 2 ]);
          if (inBuffer[1] != END_OF_INPUT){
              result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
              if (inBuffer[2] != END_OF_INPUT){
                  result += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
                  result += (base64Chars [inBuffer[2] & 0x3F]);
              } else {
                  result += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
                  result += ('=');
                  done = true;
              }
          } else {
              result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
              result += ('=');
              result += ('=');
              done = true;
          }
          lineCount += 4;
          if (lineCount >= 76){
              result += ('\n');
              lineCount = 0;
          }
      }
      return result;
  }
  
    Object.extend(Object,{
          toPHP: function(object) {
                  var type = typeof object;
                  switch (type) {
                          case 'undefined':
                          case 'function':
                          case 'unknown': return 'N;';
                          case 'boolean': return 'b:'+(object?'1':'0')+';';
                  }
                  if (object === null) return 'N;';
                  if (object.toPHP) return object.toPHP();
                  if (Object.isElement(object)) return null;
                  var ret = [];
                  for (var property in object) {
                          var value = Object.toPHP(object[property]);
                          if (value !== undefined)
                                  ret.push(property.toString().toPHP() + value);
                  }
                  return 'a:'+ret.length+':{'+ ret.join('')+'}';
          }
  });
  Date.prototype.toPHP = function() {
    return 'i:'+this.getTime()+';';
  };
  Object.extend(String.prototype,{
          toPHP: function () {
                  var s=this.escapeUTF();
                  return 's:'+s.length+':"'+s+'";';
          },
          escapeUTF: function  () {
                  var charCode,ret = '';
                  for (i=0; i<this.length; i++) {
                          charCode = this.charCodeAt(i);
                          ret+=((charCode <= 127) && (charCode >=32))?
                                  this.charAt(i):
                                  ('&#x' + charCode.toString(16).toUpperCase() + ';');
                  }
                  return ret;
          }
  });
  Array.prototype.toPHP = function () {
          var ret=[];
          this.each(function (v,i) {
                  ret.push(i.toPHP()+(!!v.toPHP?v.toPHP():Object.toPHP(v)));
          });
          return 'a:'+ret.length+':{'+ret.join('')+'}';
  }
  Number.prototype.toPHP = function () {
          return (parseInt(this)==parseFloat(this)?'i':'d')+':'+this.toString()+';';
  }