var adminarea = false;
var maxfriends = 4;
var isMySpace = false;
var BrowserDetect = {
  init: function () {
    this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
    this.version = this.searchVersion(navigator.userAgent)
      || this.searchVersion(navigator.appVersion)
      || "an unknown version";
    this.OS = this.searchString(this.dataOS) || "an unknown OS";
  },
  searchString: function (data) {
    for (var i=0;i<data.length;i++)	{
      var dataString = data[i].string;
      var dataProp = data[i].prop;
      this.versionSearchString = data[i].versionSearch || data[i].identity;
      if (dataString) {
        if (dataString.indexOf(data[i].subString) != -1)
          return data[i].identity;
      }
      else if (dataProp)
        return data[i].identity;
    }
  },
  searchVersion: function (dataString) {
    var index = dataString.indexOf(this.versionSearchString);
    if (index == -1) return;
    return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
  },
  dataBrowser: [
    {
      string: navigator.userAgent,
      subString: "Chrome",
      identity: "Chrome"
    },
    { 	string: navigator.userAgent,
      subString: "OmniWeb",
      versionSearch: "OmniWeb/",
      identity: "OmniWeb"
    },
    {
      string: navigator.vendor,
      subString: "Apple",
      identity: "Safari"
    },
    {
      prop: window.opera,
      identity: "Opera"
    },
    {
      string: navigator.vendor,
      subString: "iCab",
      identity: "iCab"
    },
    {
      string: navigator.vendor,
      subString: "KDE",
      identity: "Konqueror"
    },
    {
      string: navigator.userAgent,
      subString: "Firefox",
      identity: "Firefox"
    },
    {
      string: navigator.vendor,
      subString: "Camino",
      identity: "Camino"
    },
    {		// for newer Netscapes (6+)
      string: navigator.userAgent,
      subString: "Netscape",
      identity: "Netscape"
    },
    {
      string: navigator.userAgent,
      subString: "MSIE",
      identity: "Explorer",
      versionSearch: "MSIE"
    },
    {
      string: navigator.userAgent,
      subString: "Gecko",
      identity: "Mozilla",
      versionSearch: "rv"
    },
    { 		// for older Netscapes (4-)
      string: navigator.userAgent,
      subString: "Mozilla",
      identity: "Netscape",
      versionSearch: "Mozilla"
    }
  ],
  dataOS : [
    {
      string: navigator.platform,
      subString: "Win",
      identity: "Windows"
    },
    {
      string: navigator.platform,
      subString: "Mac",
      identity: "Mac"
    },
    {
      string: navigator.platform,
      subString: "Linux",
      identity: "Linux"
    }
  ]
};
BrowserDetect.init();

function moPicSwap(id, pic) {
  $(id).src = pic;
}

function clearField(id, fieldtype) {
  switch (id) {
    case 'umail':
      if ($F(id) == globalvalues.new_user_text) {
        $(id).clear();
      }
      break;
    case 'commentfield':
      if ($F(id) == globalvalues.messages_text) {
        $(id).clear();
      }
      break;
    case 'ptitel':
      if ($F(id) == globalvalues.titel_text) {
        $(id).clear();
      }
      break;
    case 'pdesc':
      if ($F(id) == globalvalues.desc_text) {
        $(id).clear();
      }
      break;
    case 'uname':
      if ($F(id) == globalvalues.name_text) {
        $(id).clear();
      }
      break;
    default:
      switch (fieldtype) {
        case 'mail':
          if ($F(id) == globalvalues.new_user_text) {
            $(id).clear();
          }
          break;

        case 'hour':
          if ($F(id) == 'HH') {
            $(id).clear();
          } else {
            $(id).select();
          }
          break;

        case 'minute':
          if ($F(id) == 'MM') {
            $(id).clear();
          } else {
            $(id).select();
          }
          break;
      }
      break;
  }
}

function defaultField(id, fieldtype) {
  var nval = '';
  if ($F(id).blank()) {
    switch (id) {
      case 'ptitel':
        nval = globalvalues.titel_text;
        break;
      case 'commentfield':
        nval = globalvalues.messages_text;
        break;
      case 'pdesc':
        nval = globalvalues.desc_text;
        break;
      case 'uname':
        nval = globalvalues.name_text;
        break;
      case 'umail':
        nval = globalvalues.new_user_text;
        break;
      default:
        switch (fieldtype) {
          case 'mail':
            nval = globalvalues.new_user_text;
            var realid = id.split('_')[1];
            if (friends.last() != realid) {
              delFriend(realid);
              return false;
            }
            break;

          case 'hour':
            nval = 'HH';
            break;

          case 'minute':
            nval = 'MM';
            break;
        }
        break;
    }
    $(id).value = nval;
  }
}

// Checks if all current friends are used up and adds a new one
function checkForNewFriend() {
  for (var i = 0; i < friends.length; ++i) {
    var id = 'user_'+friends[i];
    if ($F(id) == globalvalues.new_user_text) {
      return false;
    }
  }
  addFriend();
}

// Toggle own yes/no selection
function toggleOwn(num) {
  var field = 'own_'+num+'_field';
  var container = 'own_'+num+'_container';
  if ($F(field) == '1') {
    $(field).value = '0';
    $(container).update(
      Builder.node(
        'a', {
          href: 'javascript:;',
          title: 'change to YES',
          onmouseover: 'javascript:moPicSwap(\'own_'+num+'_pict\', \'http://images.xihit.com/tt/en/option_responder_nein1.png\');',
          onmouseout: 'javascript:moPicSwap(\'own_'+num+'_pict\', \'http://images.xihit.com/tt/en/option_responder_nein.png\');',
          onclick: 'javascript:toggleOwn('+num+');'
        }, [
          Builder.node(
            'img', {
              className: 'w90 h50 NoBo',
              name: 'own_'+num+'_pict',
              id: 'own_'+num+'_pict',
              src: 'http://images.xihit.com/tt/en/option_responder_nein.png'
            }
          )
        ]
      )
    );
  } else {
    $(field).value = '1';
    $(container).update(
      Builder.node(
        'a', {
          href: 'javascript:;',
          title: 'change to no',
          onmouseover: 'javascript:moPicSwap(\'own_'+num+'_pict\', \'http://images.xihit.com/tt/en/option_responder_ja1.png\');',
          onmouseout: 'javascript:moPicSwap(\'own_'+num+'_pict\', \'http://images.xihit.com/tt/en/option_responder_ja.png\');',
          onclick: 'javascript:toggleOwn('+num+');'
        }, [
          Builder.node(
            'img', {
              className: 'w90 h50 NoBo',
              name: 'own_'+num+'_pict',
              id: 'own_'+num+'_pict',
              src: 'http://images.xihit.com/tt/en/option_responder_ja.png'
            }
          )
        ]
      )
    );
  }
}

function toggleChooser(num) {
  var field = 'chooser_'+num+'_field';
  var container = 'chooser_'+num+'_container';
  if ($F(field) == '1') {
    $(field).value = '0';
    $(container).update(
      Builder.node(
        'a', {
          href: 'javascript:;',
          title: 'change to YES',
          onmouseover: 'javascript:moPicSwap(\'own_'+num+'_pict\', \'http://images.xihit.com/tt/en/option_responder_nein1.png\');',
          onmouseout: 'javascript:moPicSwap(\'own_'+num+'_pict\', \'http://images.xihit.com/tt/en/option_responder_nein.png\');',
          onclick: 'javascript:toggleChooser('+num+');'
        }, [
          Builder.node(
            'img', {
              className: 'w90 h50 NoBo',
              name: 'own_'+num+'_pict',
              id: 'own_'+num+'_pict',
              src: 'http://images.xihit.com/tt/en/option_responder_nein.png'
            }
          )
        ]
      )
    );
  } else {
    $(field).value = '1';
    $(container).update(
      Builder.node(
        'a', {
          href: 'javascript:;',
          title: 'change to no',
          onmouseover: 'javascript:moPicSwap(\'own_'+num+'_pict\', \'http://images.xihit.com/tt/en/option_responder_ja1.png\');',
          onmouseout: 'javascript:moPicSwap(\'own_'+num+'_pict\', \'http://images.xihit.com/tt/en/option_responder_ja.png\');',
          onclick: 'javascript:toggleChooser('+num+');'
        }, [
          Builder.node(
            'img', {
              className: 'w90 h50 NoBo',
              name: 'own_'+num+'_pict',
              id: 'own_'+num+'_pict',
              src: 'http://images.xihit.com/tt/en/option_responder_ja.png'
            }
          )
        ]
      )
    );
  }
}

// Remove a friend
function delFriend(num) {
  var id = 'user_'+num+'_container';
  if (friends.length > 1) {
    Effect.SlideUp(id, {
      duration: 0.5,
      beforeStart: function() {
        var tmpfriends = new Array();
        for (var i = 0; i < friends.length; i++) {
          if (friends[i] != num) {
            tmpfriends.push(friends[i]);
          }
        }
        friends = tmpfriends;
        numberFriends();
      },
      afterFinish: function() {
        $(id).remove();
        lastfriend = parseInt($('users_container').childElements().last().id.split('_')[1], 10);

        if (friends.length == 1) {
          $('user_'+lastfriend+'_minus').style.visibility = 'hidden';
        }
      }
    });
  }
}

// Add a new friend
function addFriend() {
  var newid = lastfriend + 1;

  var sels = '';
  for (var i = 0; i < maxfriends; ++i) {
    var ml = 3;
    if (i === 0) {
      ml = 3;
    }

    sels += templates.new_user_sel.interpolate({ 'ml': ml, 'nr': newid, 'f': termine[i] });
  }

  var container = templates.new_user.interpolate({ 'nr': newid, 'sels': sels, 'new_user_text': globalvalues.new_user_text });
  $('users_container').insert(container);
  $('user_'+newid+'_container').hide();
  $('user_'+newid+'_minus').style.visibility = 'hidden';
  Effect.BlindDown('user_'+newid+'_container', { duration: 0.5 });

  friends.push(newid);
  if (lastfriend != 1) {
    $('user_'+lastfriend+'_minus').style.visibility = 'visible';
  }
  lastfriend = parseInt(newid, 10);
  numberFriends();
}

// Recalculate the friend numbers
function numberFriends() {
  for (var i = 0; i < friends.length; i++) {
    $('user_'+friends[i]+'_number').update((i+1));
  }
}

// Add new termin
function addTermin() {
  var newid = lasttermin + 1;
  var effects = new Array();

  var ownsel = templates.new_ownsel.interpolate({ 'nr': newid });
  $('ownselection_container').insert(ownsel);
  $('own_'+newid+'_container').hide();
  effects.push(new Effect.BlindLeft('own_'+newid+'_container', { sync: true }));

  // Termin node
  var tnid = 'termin_'+newid+'_container';
  var tnode = templates.new_termin.interpolate({ 'nr': newid, 'dropdown': templates.termine_dropdown, 'am_pm_default': ampmdefault });

  $('termin_container').insert(tnode);
  $(tnid).hide();
  effects.push(new Effect.BlindLeft(tnid, { sync: true }));

  // Finally add the termin
  termine.push(newid);
  lasttermin = parseInt(newid, 10);

  new Effect.Parallel(effects, { duration: 0.5 });
  numberTermine();
}

// Remove a termin
function delTermin(num) {
  var id = 'termin_'+num+'_';

  var dfval = $F(id+'datefield');
  if (dfval != '0') {
    // Just replace it with the blank template
    $(id+'datefield').remove();

    var tnode = templates.new_termin.interpolate({ 'nr': num, 'dropdown': templates.termine_dropdown, 'am_pm_default': ampmdefault });
    $(id+'td').replace(tnode);

    numberTermine();
  } else {
    if (termine.length > 1) {
      var effects = new Array();

      effects.push(
        new Effect.BlindRight(
          $(id+'container'),
          {
            sync: true,
            beforeStart: function() {
              var tmptermine = new Array();
              for (var i = 0; i < termine.length; i++) {
                if (termine[i] != num) {
                  tmptermine.push(termine[i]);
                }
              }
              termine = tmptermine;
              numberTermine();
            },
            afterFinish: function() {
              $(id+'container').remove();
              $(id+'datefield').remove();
              if (num == lasttermin) {
                lasttermin = parseInt($('termin_container').childElements().last().id.split('_')[1], 10);
              }
              numberTermine();
            }
          }
        )
      );

      /*for (var i = 0; i < friends.length; ++i) {
        var fsid = 'user_'+friends[i]+'_sel_'+num;
        effects.push(
          new Effect.BlindRight(
            $(fsid), {
              sync: true,
              afterFinish: function(effect) {
                $(effect.element).remove();
              }
            }
          )
        );
      }*/

      var onid = 'own_'+num+'_container';
      effects.push(
        new Effect.BlindRight(
          $(onid),
          {
            sync: true,
            afterFinish: function(effect) {
              $(effect.element).remove();
            }
          }
        )
      );
      $('own_'+num+'_field').remove();

      new Effect.Parallel(effects, { duration: 0.5 });
    }
  }
}

// Recalculate the termin numbers
function numberTermine() {
  if (adminarea == true) { return false; }
  if (termine.length > 4) {
    if (BrowserDetect.browser == 'Explorer' && $('scrollbar_container_fix').getHeight() == 144) {
      $('scrollbar_container_fix').style.height = ($('scrollbar_container_fix').getHeight() + 18) + 'px';
    }
  } else {
    if (BrowserDetect.browser == 'Explorer' && $('scrollbar_container_fix').getHeight() > 144) {
      $('scrollbar_container_fix').style.height = '144px';
    }
  }

  for (var i = 0; i < termine.length; i++) {
    var sid = 'termin_'+termine[i];

    if ((termine.length > 4 && termine[i] != lasttermin) || $F('termin_'+termine[i]+'_datefield') != 0) {
      $(sid+'_minus').style.visibility = 'visible';
    } else {
      $(sid+'_minus').style.visibility = 'hidden';
    }

    if ($(sid+'_number')) {
      $(sid+'_number').update((i+1));
    }
  }
}

// Checks if all current termine are used up and adds a new one
function checkForNewTermin() {
  for (var i = 0; i < termine.length; ++i) {
    var id = 'termin_'+termine[i]+'_datefield';
    if ($F(id) == '0') {
      return false;
    }
  }
  addTermin();
}


// Convert inactive termin to active
function makeTerminActive(num, check) {
  var id = 'termin_'+num;
  var tst = $F(id+'_datefield');
  var state = $F(id+'_ampm');

  var day = $P.date('d', tst);
  var daytext = calendar.txt_weekdays[$P.date('w', tst)];
  var month = calendar.txt_months[$P.date('n', tst)];
  var year = $P.date('Y', tst);

  var ml = 3;
  if (num == 1) { ml = 1; }

  var tnode = templates.new_termin_active.interpolate({ 'nr': num, 'ml': ml, 'day_name': daytext, 'day': day, 'month': month, 'year': year, 'am_pm_default': state });
  $(id+'_container').replace(tnode);

  if (tst <= calendar.today) { $(id+'_left_container').style.visibility = 'hidden'; }

  if (!check) {
    checkForNewTermin();
    numberTermine();
  }
}

// Next day via termin
function terminNextDay(num) {
  var id = 'termin_'+num;
  var hour = $F(id+'_h');
  var minute = $F(id+'_m');
  var oldtst = $F(id+'_datefield');

  var oday = parseInt($P.date('j', oldtst), 10);
  var omonth = parseInt($P.date('n', oldtst), 10);
  var oyear = parseInt($P.date('Y', oldtst), 10);
  var odays = parseInt($P.date('t', oldtst), 10);

  var nday = oday + 1;
  var nmonth = omonth;
  var nyear = oyear;
  if (nday > odays) {
    nday = 1;
    nmonth++;
    if (nmonth > 12) {
      nmonth = 1;
      nyear++;
    }
  }
  var tst = $P.mktime(4, 0, 0, nmonth, nday, nyear);

  $(id+'_datefield').value = tst;
  makeTerminActive(num);
  $(id+'_h').value = hour;
  $(id+'_m').value = minute;
}

// Previous day via termin
function terminPrevDay(num) {
  var id = 'termin_'+num;
  var hour = $F(id+'_h');
  var minute = $F(id+'_m');
  var oldtst = $F(id+'_datefield');

  var oday = parseInt($P.date('j', oldtst), 10);
  var omonth = parseInt($P.date('n', oldtst), 10);
  var oyear = parseInt($P.date('Y', oldtst), 10);
  var odays = parseInt($P.date('t', oldtst), 10);

  var nday = oday - 1;
  var nmonth = omonth;
  var nyear = oyear;
  if (nday < 1) {
    nmonth--;
    if (nmonth < 1) {
      nmonth = 12;
      nyear--;
    }
    nday = parseInt($P.date('t', $P.mktime(4, 0, 0, nmonth, 1, nyear)), 10);
  }
  var tst = $P.mktime(4, 0, 0, nmonth, nday, nyear);

  if (tst >= calendar.today) {
    $(id+'_datefield').value = tst;
    makeTerminActive(num);
    $(id+'_h').value = hour;
    $(id+'_m').value = minute;
  } else {
    $(id+'_left_container').style.visibility = 'hidden';
  }
}

// Choose date via calendar
function calChooseDate(num, day) {
  if ($('kalender')) { $('kalender').remove(); }

  var tst = $P.mktime(4, 0, 0, calendar.month, day, calendar.year);
  $('termin_'+num+'_datefield').value = tst;

  if (num != 0) {
    makeTerminActive(num);
  } else {
    addTerminAdmin();
  }
}

// Choose date via dropdown
function terminChooseDate(num) {
  if ($('kalender')) { $('kalender').remove(); }

  var tst = $F('termin_'+num+'_select');
  if (tst && tst != 0) {
    $('termin_'+num+'_datefield').value = tst;

    if (num != 0) {
      makeTerminActive(num);
    } else {
      addTerminAdmin();
    }
  }
}

// Show new calendar
function showNewCalendar(num) {
  if ($('kalender')) { $('kalender').remove(); }
  calendar.month = parseInt($P.date('n', calendar.basetst), 10);
  calendar.year = parseInt($P.date('Y', calendar.basetst), 10);
  showCalendar(num);
}

// Create and show calendar
function showCalendar(num) {
  var tst = $P.mktime(4, 0, 0, calendar.month, 1, calendar.year);
  var month = $P.strtoupper(calendar.txt_months[$P.date('n', tst)]);
  var year = $P.date('Y', tst);

  var caldata = new Hash({ 'num': num, 'year': year, 'month': month });

  var d = 1;
  for (var r = 1; r < 7; ++r) {
    for (var c = 1; c < 8; ++c) {
      var cid = 'cal_'+r+'_'+c;
      var cname = 'cal_'+r+'_'+c+'_class';

      // Date calc
      var tmptst = $P.mktime(4, 0, 0, calendar.month, d, calendar.year);
      var tmpmnth = $P.date('n', tmptst);
      var dnum = $P.date('w', tmptst);
      if (dnum == '0') { dnum = 7; }

      if (dnum == c && tmpmnth == calendar.month) {
        if (tmptst < calendar.today) {
          caldata.set(cid, $P.date('d', tmptst));
          caldata.set(cname, 'closedday');
        } else {
          if (tmptst == calendar.today) {
            var tclass = 'today';
          } else {
            var tclass = 'openday';
          }
          caldata.set(cid, templates.calendar_link.interpolate({ 'day': $P.date('d', tmptst), 'nr': num, 'class': tclass }));
          caldata.set(cname, '');
        }
        d++;
      } else {
        caldata.set(cid, '');
        caldata.set(cname, 'closedday');
      }
    }
  }

  var thecal = templates.calendar_base.interpolate(caldata);
  $('insertCalHere').insert(thecal);
}

// Previous calendar month
function calPrevMonth(num) {
  $('kalender').remove();
  if (calendar.month == 1) {
    calendar.month = 12;
    calendar.year -= 1;
  } else {
    calendar.month -= 1;
  }
  showCalendar(num);
}

// Next calendar month
function calNextMonth(num) {
  $('kalender').remove();
  if (calendar.month == 12) {
    calendar.month = 1;
    calendar.year += 1;
  } else {
    calendar.month += 1;
  }
  showCalendar(num);
}

// time entry field - hour
function checkHour(num) {
  var id = 'termin_'+num+'_h';
  $(id).value = $F(id).gsub(/[^0-9]/, '');
  var hour = $F(id);
  var hourval = parseInt(hour, 10);

  if (hour.length == 1) {
    if (hourval < 0) {
      $(id).value = '';
    } else {
      if (parseInt($F('termin_'+num+'_ampm'), 10) == 3) {
        if (hourval > 2) {
          $(id).value = '0' + hourval;
          $('termin_'+num+'_m').focus();
        }
      } else {
        if (hourval > 1) {
          $(id).value = '0' + hourval;
          $('termin_'+num+'_m').focus();
        }
      }
    }
  } else if (hour.length == 2) {
    if (parseInt($F('termin_'+num+'_ampm'), 10) == 3) {
      if (hourval < 0 || hourval > 23) {
        $(id).value = '';
      } else {
        $('termin_'+num+'_m').focus();
      }
    } else {
      if (hourval < 0 || hourval > 11) {
        $(id).value = '';
      } else {
        $('termin_'+num+'_m').focus();
      }
    }
  }
}

// time entry field - minutes
function checkMinute(num) {
  var id = 'termin_'+num+'_m';
  $(id).value = $F(id).gsub(/[^0-9]/, '');
  var min = $F(id);
  var minval = parseInt(min, 10);

  if (min.length == 1) {
    if (minval < 0) {
      $(id).value = '';
    } else if (minval > 5) {
      $(id).value = '0' + minval;
    }
  } else if (min.length == 2) {
    if (minval < 0 || minval > 59) {
      $(id).value = '';
    }
  }
}

// addTerminAdmin - new termin for admin field
function addTerminAdmin() {
  var newid = lasttermin + 1;
  var effects = new Array();

  // Termin node
  var tnid = 'termin_'+newid+'_container';
  var tnode = templates.new_termin.interpolate({ 'nr': newid, 'dropdown': templates.termine_dropdown, 'am_pm_default': ampmdefault });

  $('termin_container').insert(tnode);
  $(tnid).hide();
  effects.push(new Effect.BlindLeft(tnid, { sync: true }));

  // Own selection
  var ownsel = templates.new_ownsel.interpolate({ 'nr': newid });
  $('ownsel_container').insert(ownsel);
  $('own_'+newid+'_container').hide();
  effects.push(new Effect.BlindLeft('own_'+newid+'_container', { sync: true }));

  // Friends
  for (var i = 0; i < adminfriends.length; ++i) {
    var newsel = templates.new_newsel.interpolate({ 'nr': newid });
    $('friend_'+adminfriends[i]+'_sels_container').insert(newsel);
  }

  // Amounts
  var amountsel = templates.new_amountsel.interpolate({ 'nr': newid });
  $('amount_container').insert(amountsel);

  // Finally add the termin
  termine.push(newid);
  lasttermin = parseInt(newid, 10);

  new Effect.Parallel(effects, { duration: 0.5, afterFinish: function() { makeTerminActive(newid, true); } });
  $('termin_'+newid+'_datefield').value = $F('termin_0_datefield');
  $('termin_0_datefield').value = '';
}

// Admin submit
function adminSubmitA() {
  var own = [];
  var trm = [];
  for (var i = 0; i < termine.length; ++i) {
    if ($F('termin_'+termine[i]+'_datefield') != '0') {
      own.push($F('own_'+termine[i]+'_field'));

      var tst = parseInt($F('termin_'+termine[i]+'_datefield'), 10);
      var year = $P.date('Y', tst);
      var month = $P.date('n', tst);
      var day = $P.date('j', tst);
      var hour = parseInt($F('termin_'+termine[i]+'_h'), 10);
      var minute = parseInt($F('termin_'+termine[i]+'_m'), 10);
      var state = parseInt($F('termin_'+termine[i]+'_ampm'), 10);

      if (isNaN(hour)) {
        hour = 0;
      }
      if (isNaN(minute)) {
        minute = 0;
      }
      if (state == 2) { hour += 12; if (hour >= 24) { hour = 0; } }

      trm.push($P.base64_encode($P.serialize( {'tst': $P.mktime(hour, minute, 0, month, day, year), 'ampm': state } )));
    }
  }

  if (trm.length != 0) {
    $('sfield_termine').value = trm.join(';');
  }
  if (own.length != 0) {
    $('sfield_own_sels').value = own.join(';');
  }

  $('sfield').submit();
}

// Submit the event creation form, finally
function submitNewEvent(checkOnly) {
  var error = false;
  if ($F('ptitel') == globalvalues.titel_text) {
    // Error
    error = showError();
    $$('.titleErrorGrey').invoke('removeClassName', 'bgGrey1').invoke('addClassName', 'bgRed');
  } else {
    $('sfield_title').value = $F('ptitel');
    $$('.titleErrorGrey').invoke('addClassName', 'bgGrey1').invoke('removeClassName', 'bgRed');
  }

  if ($F('pdesc') != globalvalues.desc_text) {
    $('sfield_description').value = $F('pdesc');
  }

  if ($F('uname') == globalvalues.name_text) {
    // Error
    error = showError();
    $$('.unameErrorOrange').invoke('removeClassName', 'bgOrange').invoke('addClassName', 'bgRed');
  } else {
    $('sfield_own_name').value = $F('uname');
    $$('.unameErrorOrange').invoke('removeClassName', 'bgRed').invoke('addClassName', 'bgOrange');
  }

  var own = [];
  var trm = [];
  for (var i = 0; i < termine.length; ++i) {
    if ($F('termin_'+termine[i]+'_datefield') != '0') {
      own.push($F('own_'+termine[i]+'_field'));

      var tst = parseInt($F('termin_'+termine[i]+'_datefield'), 10);
      var year = $P.date('Y', tst);
      var month = $P.date('n', tst);
      var day = $P.date('j', tst);
      var hour = parseInt($F('termin_'+termine[i]+'_h'), 10);
      var minute = parseInt($F('termin_'+termine[i]+'_m'), 10);
      var state = parseInt($F('termin_'+termine[i]+'_ampm'), 10);

      if (isNaN(hour)) {
        hour = 0;
      }
      if (isNaN(minute)) {
        minute = 0;
      }
      if (state == 2) { hour += 12; if (hour >= 24) { hour = 0; } }

      trm.push($P.base64_encode($P.serialize( {'tst': $P.mktime(hour, minute, 0, month, day, year), 'ampm': state } )));
    }
  }

  if (trm.length == 0) {
    // Error
    error = showError();
    $$('.termin_error1').invoke('removeClassName', 'bgGrey3').invoke('addClassName', 'bgRed');
    $$('.termin_error2').invoke('removeClassName', 'calpageBG').invoke('addClassName', 'calpageBGErr');
    $$('.termin_error3').invoke('removeClassName', 'tGrey1').invoke('addClassName', 'tWhite').invoke('addClassName', 'tFett');
  } else {
    $('sfield_termine').value = trm.join(';');
    $$('.termin_error1').invoke('addClassName', 'bgGrey3').invoke('removeClassName', 'bgRed');
    $$('.termin_error2').invoke('addClassName', 'calpageBG').invoke('removeClassName', 'calpageBGErr');
    $$('.termin_error3').invoke('addClassName', 'tGrey1').invoke('removeClassName', 'tWhite').invoke('removeClassName', 'tFett');
  }

  if (own.length == 0) {
    // Error
    error = showError();
  } else {
    $('sfield_own_sels').value = own.join(';');
  }

  if (isMySpace) {
    var usr = [];
    myspace_friends_selected_names.each(function(pair) {
      usr.push($P.base64_encode(pair.key + ' ' + $P.base64_encode(pair.value)));
    });
    $('sfield_users').value = usr.join(';');
  } else {
    var usr = [];
    for (var i = 0; i < friends.length; ++i) {
      if ($F('user_'+friends[i]) != globalvalues.new_user_text) {
        if ($F('user_'+friends[i]).search(/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i) == -1) {
          // Error
          error = showError();
          $('user_'+friends[i]+'_error_1').removeClassName('bgGrey1').addClassName('bgRed');
          $('user_'+friends[i]+'_error_2').removeClassName('bgGrey1').addClassName('bgRed');
          $('user_'+friends[i]+'_error_3').removeClassName('tBlack').addClassName('tWhite');
          $('user_'+friends[i]+'_minus').removeClassName('bgGrey1').addClassName('bgRed');
        } else {
          usr.push($F('user_'+friends[i]));
          $('user_'+friends[i]+'_error_1').addClassName('bgGrey1').removeClassName('bgRed');
          $('user_'+friends[i]+'_error_2').addClassName('bgGrey1').removeClassName('bgRed');
          $('user_'+friends[i]+'_error_3').addClassName('tBlack').removeClassName('tWhite');
          $('user_'+friends[i]+'_minus').addClassName('bgGrey1').removeClassName('bgRed');
        }
      }
    }
    if (usr.length == 0) {
      // Error
      error = showError();
      $('user_'+friends[0]+'_error_1').removeClassName('bgGrey1').addClassName('bgRed');
      $('user_'+friends[0]+'_error_2').removeClassName('bgGrey1').addClassName('bgRed');
      $('user_'+friends[0]+'_error_3').removeClassName('tBlack').addClassName('tWhite');
      $('user_'+friends[0]+'_minus').removeClassName('bgGrey1').addClassName('bgRed');
    } else {
      $('sfield_users').value = usr.join(';');
    }
  }

  if (!error && !checkOnly) {
    $('sfield').submit();
  }
  return !error;
}

// Show error field
function showError() {
  if (!$('error').visible()) {
    new Effect.BlindDown('error', { duration: 0.5, afterFinish: function() { $('error').style.height = '60px'; } });
  }
  return true;
}

// Phase 2 submit
function submit2ndForm() {
  var error = false;

  if (!$('chklaw').checked) {
    error = showError();
    $('check_error_1').removeClassName('bgGrey4').addClassName('bgRed');
    $('check_error_2').removeClassName('tGrey1').addClassName('tWhite');
    $('check_error_3').removeClassName('lOrange').addClassName('lWhite').addClassName('tFett');
  } else {
    $('check_error_1').addClassName('bgGrey4').removeClassName('bgRed');
    $('check_error_2').addClassName('tGrey1').removeClassName('tWhite');
    $('check_error_3').addClassName('lOrange').removeClassName('lWhite').removeClassName('tFett');
  }

  if ($F('umail') != globalvalues.new_user_text) {
    if ($F('umail').search(/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i) == -1) {
      // Error
      error = showError();
      $('umail_error_1').removeClassName('bgGrey1').addClassName('bgRed');
      $('umail_error_2').removeClassName('bgGrey1').addClassName('bgRed');
      $('umail_error_3').removeClassName('tBlack').addClassName('tWhite');
    } else {
      $('umail_error_1').removeClassName('bgRed').addClassName('bgGrey1');
      $('umail_error_2').removeClassName('bgRed').addClassName('bgGrey1');
      $('umail_error_3').removeClassName('tWhite').addClassName('tBlack');
    }
  } else {
    // Error
    error = showError();
    $('umail_error_1').removeClassName('bgGrey1').addClassName('bgRed');
    $('umail_error_2').removeClassName('bgGrey1').addClassName('bgRed');
    $('umail_error_3').removeClassName('tBlack').addClassName('tWhite');
  }

  if (!error) {
    $('sfield').submit();
  }
  return !error;
}

// Response Page 1 stuff
function rspChooser(id, stat) {
  if (stat === true) {
    $('chooser_'+id).src = 'http://images.xihit.com/tt/en/option_responder_chooser_ja.png';
    $('chooser_'+id+'_field').value = '1';
  } else {
    $('chooser_'+id).src = 'http://images.xihit.com/tt/en/option_responder_chooser_nein.png';
    $('chooser_'+id+'_field').value = '0';
  }
}

// Response Page 1 mouseover/out
function rspMOSwap(id, stat, out) {
  if ($F('chooser_'+id+'_field') == '0') {
    if (out === true) {
      $('chooser_'+id).src = 'http://images.xihit.com/tt/en/option_responder_chooser_nein.png';
    } else {
      if (stat === true) {
        $('chooser_'+id).src = 'http://images.xihit.com/tt/en/option_responder_chooser_ja.png';
      } else {
        $('chooser_'+id).src = 'http://images.xihit.com/tt/en/option_responder_chooser_nein.png';
      }
    }
  } else if ($F('chooser_'+id+'_field') == '1') {
    if (out === true) {
      $('chooser_'+id).src = 'http://images.xihit.com/tt/en/option_responder_chooser_ja.png';
    } else {
      if (stat === true) {
        $('chooser_'+id).src = 'http://images.xihit.com/tt/en/option_responder_chooser_ja.png';
      } else {
        $('chooser_'+id).src = 'http://images.xihit.com/tt/en/option_responder_chooser_nein.png';
      }
    }
  } else {
    if (out === true) {
      $('chooser_'+id).src = 'http://images.xihit.com/tt/en/option_responder_chooser.png';
    } else {
      if (stat === true) {
        $('chooser_'+id).src = 'http://images.xihit.com/tt/en/option_responder_chooser_ja.png';
      } else {
        $('chooser_'+id).src = 'http://images.xihit.com/tt/en/option_responder_chooser_nein.png';
      }
    }
  }
}

// Response page 1 submit
function rspSubmit() {
  var error = false;

  if (!$('chklaw').checked) {
    error = showError();
    $('check_error_1').removeClassName('bgGrey4').addClassName('bgRed');
    $('check_error_2').removeClassName('tGrey1').addClassName('tWhite');
    $('check_error_3').removeClassName('lOrange').addClassName('lWhite').addClassName('tFett');
  } else {
    $('check_error_1').addClassName('bgGrey4').removeClassName('bgRed');
    $('check_error_2').addClassName('tGrey1').removeClassName('tWhite');
    $('check_error_3').addClassName('lOrange').removeClassName('lWhite').removeClassName('tFett');
  }

  if ($F('uname') != globalvalues.name_text) {
    $('uname_error_1').removeClassName('bgRed').addClassName('bgOrange');
    $('uname_error_2').removeClassName('bgRed').addClassName('bgOrange');
    $('uname_error_3').removeClassName('tWhite').addClassName('tBlack');
  } else {
    // Error
    error = showError();
    $('uname_error_1').removeClassName('bgOrange').addClassName('bgRed');
    $('uname_error_2').removeClassName('bgOrange').addClassName('bgRed');
    $('uname_error_3').removeClassName('tBlack').addClassName('tWhite');
  }

  if (!error) {
    $('sfield').submit();
  }
  return !error;
}

// Admin invite submit
function submitAdminInvite() {
  var error = false;
  if (!$('chklaw').checked) {
    error = true;
    $('check_error_1').removeClassName('bgGrey4').addClassName('bgRed');
    $('check_error_2').removeClassName('tGrey1').addClassName('tWhite');
    $('check_error_3').removeClassName('lOrange').addClassName('lWhite').addClassName('tFett');
  } else {
    $('check_error_1').addClassName('bgGrey4').removeClassName('bgRed');
    $('check_error_2').addClassName('tGrey1').removeClassName('tWhite');
    $('check_error_3').addClassName('lOrange').removeClassName('lWhite').removeClassName('tFett');
  }

  if (!error) {
    var usr = [];
    for (var i = 0; i < friends.length; ++i) {
      if ($F('user_'+friends[i]) != globalvalues.new_user_text) {
        if ($F('user_'+friends[i]).search(/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i) != -1) {
          usr.push($F('user_'+friends[i]));
        }
      }
    }
    if (usr.length != 0) {
      $('ifield_users').value = usr.join(';');
    }

    if (!error) {
      $('ifield').submit();
    }
  }
  return !error;
}

// Admin event finishing
function adminSelectFinish() {
  var tst = $P.unserialize($P.base64_decode($F('finish_select'))).tst;
  var mtext = templates.textarea.interpolate({
    'wday': calendar.txt_weekdays[$P.date('w', tst)],
    'day': $P.date('d', tst),
    'month': calendar.txt_months[$P.date('n', tst)],
    'h': $P.date('H', tst),
    'm': $P.date('i', tst)
  });

  $('mailtxt').enable().value = mtext;
  $('hideme').show();
}

// Show invite friends on responder and admin page
function showInviteFriends() {
  $('invitefriends_button').hide();
  new Effect.BlindDown('invitefriends_div', { duration: 0.5 });
}

// Event detail invite submit
function evDetSubmit() {
  var error = false;

  var usr = [];
  for (var i = 0; i < friends.length; ++i) {
    if ($F('user_'+friends[i]) != globalvalues.new_user_text) {
      if ($F('user_'+friends[i]).search(/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i) != -1) {
        usr.push($F('user_'+friends[i]));
      }
    }
  }
  if (usr.length != 0) {
    $('sfield_users').value = usr.join(';');
  }

  if (!error) {
    $('sfield').submit();
  }
}

function showLawstuff() {
  if (!$('lawstuff').visible()) {
    new Effect.BlindDown('lawstuff', { duration: 0.5, afterFinish: function() { $('lawstuff').style.height = '100px'; $('chklaw').enable(); } });
  }
}

// Longtext description
function makeLongDesc() {
  $('description_longtext_1').removeClassName('h48').addClassName('h88');
  $('description_longtext_2').removeClassName('h16').addClassName('h76').removeClassName('overhide').addClassName('overauto');
  $('description_longtext_link').hide();
}

// Toggle admin menu tabs
function toggleAdminTab(num) {
  switch (num) {
    case 2:
      $('admin_menu_1').removeClassName('lAdminMenuActive').addClassName('lAdminMenu');
      $('admin_menu_2').removeClassName('lAdminMenu').addClassName('lAdminMenuActive');
      $('make_green_not_white').removeClassName('bgWhite').addClassName('bgGreen');
      $('admin_tab_1').hide();
      $('admin_tab_2').show();
      break;
    case 1:
      $('admin_menu_1').removeClassName('lAdminMenu').addClassName('lAdminMenuActive');
      $('admin_menu_2').removeClassName('lAdminMenuActive').addClassName('lAdminMenu');
      $('make_green_not_white').removeClassName('bgGreen').addClassName('bgWhite');
      $('admin_tab_1').show();
      $('admin_tab_2').hide();
      break;
  }
}

// New admin page 3 functions to finish the event
function selectAdmin3Termin() {
  var tst = $P.unserialize($P.base64_decode($F('finish_select'))).tst;
  var state = $P.unserialize($P.base64_decode($F('finish_select'))).ampm;
  $('ticket_stuff').update('');
  $('ticket_select').value = '';
  $('step_2_container').hide();
  $('step_3_container').hide();
  $('hideme').hide();

  if (tst != '') {
    if (state == '3') {
      mailtextvalues = {
        'wday': calendar.txt_weekdays[$P.date('w', tst)],
        'day': $P.date('d', tst),
        'month': calendar.txt_months[$P.date('n', tst)],
        'h': $P.date('H', tst),
        'm': $P.date('i', tst) + 'h'
      };
    } else {
      var add = ' AM';
      if (state == '2') { add = ' PM' };
      mailtextvalues = {
        'wday': calendar.txt_weekdays[$P.date('w', tst)],
        'day': $P.date('d', tst),
        'month': calendar.txt_months[$P.date('n', tst)],
        'h': $P.date('h', tst),
        'm': $P.date('i', tst) + add
      };
    }

    var ttst = $P.mktime(4, 0, 0, $P.date('m', tst), $P.date('d', tst), $P.date('Y', tst));
    var ctst = $P.mktime(4, 0, 0, $P.date('m'), parseInt($P.date('d'), 10)+1, $P.date('Y'));
    if (ttst <= ctst) {
      $('one_for_all').remove();
    }

    $('step_2_container').show();
  }
}

function selectAdmin3Ticket() {
  var ticktype = $F('ticket_select');
  switch (ticktype) {
    case '1':
      // One for all,
      $('ticket_stuff').update(templates.tickets_group);
      mailtextvalues.tickets = templates.tickets_group_mailtext;
      tempmailtext = templates.textarea.interpolate(mailtextvalues);
      $('hideme').hide();
      $('step_3_container').hide();
      break;
    case '2':
      // all for one?
      $('ticket_stuff').update(templates.tickets_self);
      mailtextvalues.tickets = templates.tickets_self_mailtext;
      $('mailtxt').value = templates.textarea.interpolate(mailtextvalues);
      $('hideme').show();
      $('step_3_container').show();
      break;
    default:
      // No, we don't care. :(
      $('ticket_stuff').update('');
      mailtextvalues.tickets = '';
      $('mailtxt').value = templates.textarea.interpolate(mailtextvalues);
      $('hideme').show();
      $('step_3_container').show();
      break;
  }
}

function admin3CheckTP() {
  $('ticket_price').value = $F('ticket_price').gsub(/[^0-9]/, '');
  if ($F('ticket_price') != '') {
    $('step_2_2_hide').show();
    if (buy_dates == false) {
      admin3GenerateDates('buy_date');
      buy_dates = true;
    }
  }
}

function admin3CheckBD() {
  if ($F('buy_date') != '') {
    $('step_2_3_hide').show();
    if (deadline_dates == true) {
      $('deadline_date').update('<option value="">&nbsp;select...</option>');
      deadline_dates = false;
      $('step_3_container').hide();
      $('hideme').hide();
    }
    admin3GenerateDates('deadline_date');
    deadline_dates = true;
  } else {
    $('step_2_3_hide').hide();
    $('step_3_container').hide();
    $('hideme').hide();
    $('deadline_date').update('<option value="">&nbsp;select...</option>');
    deadline_dates = false;
  }
}

function admin3CheckDD() {
  if ($F('deadline_date') != '') {
    $('step_3_container').show();
    $('hideme').show();
    $('mailtxt').value = tempmailtext.interpolate({
      'price': $F('ticket_price'),
      'buy_day': $P.date('d', $F('buy_date')),
      'buy_mon': $P.date('m', $F('buy_date')),
      'dead_day': $P.date('d', $F('deadline_date')),
      'dead_mon': $P.date('m', $F('deadline_date'))
    });
  } else {
    $('step_3_container').hide();
    $('hideme').hide();
  }
}

function admin3GenerateDates(mode) {
  var tpl = '';
  var ttst = parseInt($P.unserialize($P.base64_decode($F('finish_select'))).tst, 10);
  //var ttst = $P.mktime(4, 0, 0, $P.date('m', tst), $P.date('d', tst), $P.date('Y', tst));
  var ctst = $P.mktime(4, 0, 0, $P.date('m'), parseInt($P.date('d'), 10)+1, $P.date('Y'));

  switch (mode) {
    case 'buy_date':
      for (var i = ctst; i < ttst; i += 86400) {
        tpl = templates.tickets_group_option;
        $(mode).insert(tpl.interpolate({ 'value': i, 'title': $P.date('d.m.Y', i) }));
      }
      $(mode).value = '';
      break;
    case 'deadline_date':
      ttst = parseInt($F('buy_date'), 10);
      //ttst = $P.mktime(4, 0, 0, $P.date('m', tst), $P.date('d', tst), $P.date('Y', tst));
      for (var i = ctst; i <= ttst; i += 86400) {
        tpl = templates.tickets_group_option;
        $(mode).insert(tpl.interpolate({ 'value': i, 'title': $P.date('d.m.Y', i) }));
      }
      $(mode).value = '';
      break;
  }
}

function admin3CheckDateValidity() {
  var mon = parseInt($F('buy_month'), 10);
  var day = parseInt($F('buy_day'), 10);
  var maxday = 31;

  if (!mon || !day) {
   return false;
  }

  switch (mon) {
    case 2:
      // account for leap years, oh my
      if ($P.date('L') == '1') {
        maxday = 29;
      } else {
        maxday = 28;
      }
      break;
    case 4:
      maxday = 30;
      break;
    case 6:
      maxday = 30;
      break;
    case 9:
      maxday = 30;
      break;
    case 11:
      maxday = 30;
      break;
  }

  if (day > maxday) {
    $('buy_day').value = maxday;
    day = maxday;
  }
  return true;
}

function updateTicketCount() {
  var count = parseInt($F('own_tickets'), 10);
  for (var i = 0; i < ticketfields; ++i) {
    count += parseInt($F('ticket_amount_'+i), 10);
  }
  $('ticket_amounts').update(count);
}

// Ajax function to count ticket link clicks
// I really hope that works as intended
function countTicketClick(rspURL) {
  new Ajax.Request(rspURL, {
    method: 'post',
    parameters:  { 'countTicketLink': true }
  });
}

// Toggles the AM/PM picture and handling at creation
function toggleAMPM(num) {
  var state = parseInt($F('termin_'+num+'_ampm'), 10);
  var val = parseInt($F('termin_'+num+'_h'), 10);
  if (++state > 3) { state = 1; }
  $('termin_'+num+'_ampm').value = state;
  $('termin_'+num+'_ampm_image').src = 'http://images.xihit.com/tt/switch_'+state+'.png';
  if (val >= 12 && state != 3) { var val2 = val - 12; $('termin_'+num+'_h').value = (val2 < 9 ? '0'+val2 : val2); }
  if (val < 12 && val != 0 && state == 3) { var val2 = val + 12; $('termin_'+num+'_h').value = val2; }
}

// Myspace stuff - new1
function ms_friends_update(letter, offset) {
  var str = '<tr>';
  var sel;
  var tmp;
  for (var i = offset; i < (offset + 10); ++i) {
    if (myspace_friends.get(letter)[i]) {
      sel = '';
      if (myspace_friends_selected.include(myspace_friends.get(letter)[i].userid)) {
        sel = ' checked="checked"';
      }
      tmp = myspace_templates.friend.interpolate({
        'id': myspace_friends.get(letter)[i].userid,
        'image': myspace_friends.get(letter)[i].imageuri,
        'displayname': myspace_friends.get(letter)[i].displayname,
        'displayname_enc': $P.base64_encode(myspace_friends.get(letter)[i].displayname),
        'uri': myspace_friends.get(letter)[i].weburi,
        'checked': sel
      });
    } else {
      tmp = myspace_templates.friend_empty;
    }
    str = str + tmp;
    if ((i % 2) != 0) {
      str = str + '</tr><tr>';
    }
  }
  $('insert_myspace_friends_here').update(str);
}

function ms_friends_update_summary() {
  $('myspace_friends_show').update(myspace_templates.summary.interpolate({ 'offset': (1 + myspace_friends_page * 10), 'offset_end': ((0 + myspace_friends_page * 10) + 10), 'amount': myspace_friends.get(myspace_friends_selection).length }));
}

function ms_friends_check(id, name) {
  if ($('myspace_friend_'+id+'_checked').checked) {
    myspace_friends_selected.push(id);
    myspace_friends_selected = myspace_friends_selected.uniq();
    myspace_friends_selected_names.set(id, name);
  } else {
    myspace_friends_selected = myspace_friends_selected.without(id);
    myspace_friends_selected_names.unset(id);
  }
}

function ms_friends_letter(letter) {
  if (myspace_friends.get(letter)) {
    ms_friends_update(letter, 0);

    myspace_friends_page = 0;
    myspace_friends_selection = letter;
    ms_friends_update_summary();

    $$('.lMsDarkBlueSel').invoke('removeClassName', 'lMsDarkBlueSel').invoke('addClassName', 'lMsDarkBlue');
    $('myspace_letter_'+letter).removeClassName('lMsDarkBlue').addClassName('lMsDarkBlueSel');
  }
}

function ms_friends_back() {
  var page = myspace_friends_page - 1;
  var offset = 0 + page * 10;
  if (myspace_friends.get(myspace_friends_selection)) {
    if (myspace_friends.get(myspace_friends_selection)[offset]) {
      ms_friends_update(myspace_friends_selection, offset);
      myspace_friends_page = page;
      ms_friends_update_summary();
    }
  }
}

function ms_friends_next() {
  var page = myspace_friends_page + 1;
  var offset = 0 + page * 10;
  if (myspace_friends.get(myspace_friends_selection)) {
    if (myspace_friends.get(myspace_friends_selection)[offset]) {
      ms_friends_update(myspace_friends_selection, offset);
      myspace_friends_page = page;
      ms_friends_update_summary();
    }
  }
}

function ms_friends_confirm() {
  if (myspace_friends_selected.length != 0) {
    myspace_templates.phase1_backup = $('myspace_friends_phase1_container').remove();
    $('myspace_friends_container').update(myspace_templates.phase2_main);
    myspace_friends_selected.each(function(id) {
      var e = myspace_friends.get('all');
      for (var i = 0; i < e.length; ++i) {
        var o = e[i];
        if (o.userid == id) {
          var tmp = {
            'id': o.userid,
            'imageuri': o.imageuri,
            'displayname': o.displayname
          };
          $('myspace_friends_insert_friends_here').insert(myspace_templates.phase2_line.interpolate(tmp));
        }
      }
    });
    $('continue_button').removeClassName('disnone');
  }
}

function ms_friends_toP1() {
  $('myspace_friends_container').update(myspace_templates.phase1_backup);
  $('continue_button').addClassName('disnone');
}

// iframe library, HOOOOOO!
function ms_sendMessageTo(data, message_enc, subject) {
  data = $P.unserialize($P.base64_decode(data));

  var container = MyOpenSpace.MySpaceContainer.get();
  var message = opensocial.newMessage($P.base64_decode(message_enc));
  message.setField(opensocial.Message.Field.TITLE, $P.base64_decode(subject));
  message.setField(opensocial.Message.Field.TYPE, MyOpenSpace.PostTo.Targets.SEND_MESSAGE);

  container.postTo(message, 'undefined', data.id, data.displayname, data.imageuri, data.weburi);
}

// Helper functions and prototype or scriptaculous extensions
Effect.BlindRight = function(element) {
  element = $(element);
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element, 0,
    Object.extend({ scaleContent: true,
      scaleY: false,
      scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
      restoreAfterFinish: true,
      afterSetup: function(effect) {
        effect.element.makeClipping();
        effect.element.setStyle({width: elementDimensions.width+'px'});
        effect.element.show();
      },
      afterFinishInternal: function(effect) {
        effect.element.hide();
        effect.element.undoClipping();
      }
    }, arguments[1] || {})
  );
};

Effect.BlindLeft = function(element) {
  element = $(element);
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element, 100,
    Object.extend({ scaleContent: true,
      scaleY: false,
      scaleFrom: 0,
      scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
      restoreAfterFinish: true,
      afterSetup: function(effect) {
        effect.element.makeClipping();
        effect.element.setStyle({width: '0px'});
        effect.element.show();
      },
      afterFinishInternal: function(effect) {
        effect.element.undoClipping();
      }
    }, arguments[1] || {})
  );
};

Effect.ResizeTo = Class.create();
Object.extend(Object.extend(Effect.ResizeTo.prototype, Effect.Base.prototype), {
  initialize: function(element, toWidth, toHeight) {

    this.element      = $(element);
    this.toWidth      = toWidth;
    this.toHeight     = toHeight;

    this.originalWidth  = parseFloat(Element.getStyle(this.element,'width')  || 0);
    this.originalHeight = parseFloat(Element.getStyle(this.element,'height') || 0);

    this.effectiveWidth = this.toWidth; /*
                        - parseFloat(Element.getStyle(this.element,'margin-left') || 0)
                        - parseFloat(Element.getStyle(this.element,'margin-right') || 0)
                        - (document.compatMode == 'BackCompat' ? 0 : // height includes padding & border in IE BackCompat mode
                            parseFloat(Element.getStyle(this.element,'padding-left') || 0)
                            + parseFloat(Element.getStyle(this.element,'padding-right') || 0)
                            + parseFloat(Element.getStyle(this.element,'border-left-width') || 0)
                            + parseFloat(Element.getStyle(this.element,'border-right-width') || 0));*/

    this.effectiveHeight = this.toHeight; /*
                        - parseFloat(Element.getStyle(this.element,'margin-top') || 0)
                        - parseFloat(Element.getStyle(this.element,'margin-bottom') || 0)
                        - (document.compatMode == 'BackCompat' ? 0 : // height includes padding & border in IE BackCompat mode
                            parseFloat(Element.getStyle(this.element,'padding-top') || 0)
                            + parseFloat(Element.getStyle(this.element,'padding-bottom') || 0)
                            + parseFloat(Element.getStyle(this.element,'border-top-width') || 0)
                            + parseFloat(Element.getStyle(this.element,'border-bottom-width') || 0));*/

    this.options = arguments[3] || {};

    if (this.effectiveWidth < 0) { this.effectiveWidth = 0; }
    if (this.effectiveHeight < 0) { this.effectiveHeight = 0; }

    if (this.originalWidth >= this.effectiveWidth &&
        this.originalHeight >= this.effectiveHeight) {
      //return;
    }
  this.start(this.options);
},
update: function(position) {
  widthd  = this.effectiveWidth * (position) + this.originalWidth * (1 - position);
  heightd = this.effectiveHeight * (position) + this.originalHeight * (1 - position);
  this.setPosition(widthd, heightd);
},
setPosition: function(widthd, heightd) {
  this.element.style.width = widthd+'px';
  //this.element.style.height = heightd+'px';
}});