﻿
Base.UI.Replies = Class.create();

Base.UI.itemMaskIndex = 0;

Base.UI.itemMask = function(item)
{
   var itemBounds = Sd.Common.getElementPos(item);
   var div = document.createElement('div');
   div.id = '_ItemMask' + Base.UI.itemMaskIndex.toString();
   div.style.height = itemBounds.height + 'px';
   div.style.width = itemBounds.width + 'px';
   div.style.position = 'absolute';
   div.style.left = itemBounds.left + 'px';
   div.style.top = itemBounds.top + 'px';
   div.style.zIndex = Math.max(100, (item.zIndex + 1));
   div.className = 'itemmask';

   document.body.appendChild(div);

   Base.UI.itemMaskIndex ++;
   
   return div.id;
};

Base.UI.killMask = function(maskId)
{
   var mask = $id(maskId);
   if(!mask) return;
   document.body.removeChild(mask);
};

Base.UI.waitMask = function(item, message)
{
   var maskId = Base.UI.itemMask(item);
   var mask = $id(maskId);
   var div = document.createElement('div');
   var img = document.createElement('img');
   var divText = document.createElement('div');
   
   div.className = 'waitmask';
   img.src = '/images/Base/ajax.loading.gif';
   divText.innerHTML = '<br/>Please wait...';
   if(message) divText.innerHTML += '<br/>' + messsage;
      
   div.appendChild(img);
   div.appendChild(divText);
   
   mask.appendChild(div);
   
   var maskBounds = Sd.Common.getElementPos(mask);
   var divBounds = Sd.Common.getElementPos(div);
   
   div.style.marginTop = ((maskBounds.height - divBounds.height) /2) + 'px';
   
   return maskId;
};

Base.UI.fixAvatar = function(img, big)
{
   img.src = '/images/Base/space.gif';
   if(!big) big = false;
   if(big == true)
   {
      img.className += ' juavatarbig';
   }
   else
   {
      img.className += ' juavatar';
   }
};

Base.UI.fixPersonal = function(img)
{
   if(img.src.indexOf('none') > 0)
     img.className = 'noimage';
   else
     img.className = 'imageerror';
     
   img.src = '/images/Base/space.gif';
};

Base.UI.fixDesktop = function(img)
{
   if(img.src.indexOf('none') > 0)
     img.className = 'noimage';
   else
     img.className = 'imageerror';
     
   img.src = '/images/Base/space.gif';
};

Base.UI.sendLost = function()
{
   var nick = $id('_TextNickEmail');
   
   if(nick.value.trim() == '')
   {
      alert('Please enter your Username or Email Address before clicking the button');
      return false;
   }

   $id('_Wait').show();   
   var button = $id('_ButtonSendLost');
   var url = 'http://' + location.hostname + '/';
   var template = url + '/templates/email.html';
   
   Sd.UI.disableButton(button);
   
   LoginService.Base.SendLostPassword(nick.value, 'JoeUser', url, template, Base.UI.sendLostCallback, Base.UI.error);
   
   return false;
};

Base.UI.sendLostCallback = function(res)
{
   $id('_Wait').hide();
   
   if(res == 1)
      $id('_Success').show();
   else
   {
      $id('_Fail').show();
      var button = $id('_ButtonSendLost');
      button._prev()._parent().removeChild(button._prev());
      button.style.visibility = 'visible';
   }
};

Base.UI.sendActivate = function()
{
   var nick = $id('_TextNickEmail');
   
   if(nick.value.trim() == '')
   {
      alert('Please enter your Username or Email Address before clicking the button.');
      return false;
   }
   
   $id('_Wait').show();
   var button = $id('_ButtonSendAct');
   var url = 'http://' + location.hostname + '/';
   var activateUrl = url + 'login/activate/';
   var template = url + '/templates/email.html';
   var siteTemplate = url + '/templates/newaccount.html';

   LoginService.Base.SendNewAccount(nick.value, activateUrl, 'JoeUser', url, template, siteTemplate, Base.UI.sendActivateCallback, Base.UI.error);
      
   return false;
};

Base.UI.sendActivateCallback = function(res)
{
   $id('_Wait').hide();
   
   if(res == 1)
      $id('_Success').show();
   else
   {
      $id('_Fail').show();
      var button = $id('_ButtonSendLost');
      button._prev()._parent().removeChild(button._prev());
      button.style.visibility = 'visible';
   }
};

Base.UI.error = function(res)
{
   alert('An error occurred:\n\n' + res.get_message() + '\n\n' + res.get_stackTrace() + '\n\n' + res.get_statusCode() + '\n\n' + res.get_stackTrace());
};

Base.UI.getEditor = function(partialId)
{
   var textarea = $id(partialId, null, 'textarea');
   if(!textarea) return;
   var editor = tinyMCE.editors[textarea.id];
   if(!editor) return;
   
   return editor;
};

Base.UI.getSelection = function(clear)
{
   var text;
   clear  = clear ? clear : true;
   if (document.getSelection)
   { 
      text = document.getSelection();
      if(text && !(text == '')) window.getSelection().collapseToStart();
   }
   else if (document.selection && document.selection.createRange)
   {
      var range = document.selection.createRange();
      text = range.text;
      range.collapse();
      range = null;
   }
   if(!text) text = '';
   return text;
};

Base.UI.loginFreak = function()
{
   scroll(0, $id('_Login')._bounds().top - 10);
   setTimeout(Base.UI.loginFreakTimeout, 500);
};

Base.UI.loginFreakTimeout = function()
{
   var text = $id('_TextUser');
   
   if(text.className.indexOf('freakout') > -1)
      text.className = text.className.replace(/ freakout/, '');
   else
      text.className += ' freakout';

   if(!text.freakCount) text.freakCount = 0;
   if(text.freakCount <= 10)
   {
      text.freakCount += 1
      setTimeout(Base.UI.loginFreakTimeout, 500);
   }      
};
