// class
if(!lms.news) lms.news=function() {};

function initPage() {
  var x = dtla.get('news');
  if(null !=x) {
    var obj = x.getElementsByTagName('a');
    
    for(var i=0; i<obj.length; i++) {
      if(obj[i].className == 'submit') {
        dtla.addEvent(obj[i], 'click', onClick, false);
      }else{
        var c = obj[i].className; 
        var cn = c.split(' ');
        if(cn.length == 2) {
          if(cn[0] == 'submit') {
            dtla.addEvent(obj[i], 'click', onClick, false);
          }
        } 
      }
    }   
  }
}

function cleanUp() {
  var x = dtla.get('news');
  if(null !=x) {
    var obj = x.getElementsByTagName('a');
    
    for(var i=0; i<obj.length; i++) {
      if(obj[i].className == 'submit') {
        dtla.removeEvent(obj[i], 'click', onClick, false);
      }else{
        var c = obj[i].className; 
        var cn = c.split(' ');
        if(cn.length == 2) {
          if(cn[0] == 'submit') {
            dtla.removeEvent(obj[i], 'click', onClick, false);
          }
        } 
      }
    }   
  }
}


function onClick(e) {
  var clicked = e.srcElement ? e.srcElement:e.target;
  
  switch (clicked.tagName){
    case 'A':
      var command = clicked.innerHTML;  
      var id = clicked.parentElement ? clicked.parentElement.parentElement.parentElement.id : clicked.parentNode.parentNode.parentNode.id;

      processCommand(command, id);
      break;
  
    case 'INPUT':
      if(clicked.type == 'button'){
      var command = clicked.value;  
      var id = clicked.parentElement ? clicked.parentElement.parentElement.id : clicked.parentNode.parentNode.id;
      
      processCommand(command, id);
      }
    break;
  }
  
  if (e &&e.preventDefault) 
    e.preventDefault();
  else if (window.event)
    e.returnValue = false;
}


function processCommand(command, id) {
  var postData =''; 
  switch(command){
    case 'Approve':
      postData='sender=news&command='+encodeURI(command)+'&id='+encodeURI(id);
      postHTTP(postData); 
      break;
      
    case 'Edit':
      editMessage(id)
      break;
      
    case 'Delete':
      postData='sender=news&command='+encodeURI(command)+'&id='+encodeURI(id);
      postHTTP(postData); 
      break;
      
    case 'Update':
      postData='sender=news&command='+encodeURI(command)+'&id='+encodeURI(id);
      var nd = dtla.get('news-date').value;
      var nt = dtla.get('news-title').value;
      var om = dtla.get('message').value;
      var xx = dtla.get('messageWidgIframe');
      var nm = xx.contentWindow.document.getElementsByTagName("body")[0].innerHTML;
      
      postData+='&date=' + encodeURI(nd) + '&title=' + encodeURI(nt) + '&messageOld=' + encodeURI(om) + '&messageNew=' + encodeURI(nm);
      postHTTP(postData);
      break;
      
    case 'Cancel':
      cancelEdit(id)
      break;
  }
}


function postHTTP(data) {
  xhr = new dtla.XMLHttpRequest();
  if (typeof xhr == 'object')
  {
    xhr.open('post', 'callback.ashx', true);
    xhr.onreadystatechange = newsCallbackHandler;
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send(data);
  }
}

function newsCallbackHandler() {
  if (xhr.readyState == 4) {
  
  //alert(xhr.responseText);
    var args = eval("(" + xhr.responseText + ")");
    var response=args.args;
    //alert(unescape(response.html));
    switch (response.command)
    {
      case 'Approve':
        messageApproved(response);
        break;
        
        case 'Edit':
        editMessage(response);
        break;
        
        case 'Delete':
        messageDeleted(response);
        break;
        
        case 'Update':
          messageUpdated(response)
          break;
    }
  }
}

function messageApproved(response) {
  if (response.error == '') {
    var message = dtla.get(response.message.id);
    if(message != null) {
      var na = dtla.getElementsByClassName('not-approved', message);
      
      if(na !=null) {
        message.removeChild(na);
      }
      
      var al = dtla.getElementsByClassName('admin-links', message);
      var a = dtla.getElementsByClassName('approve-link', al);
      if(null != al && null != a) {
        al.removeChild(a);
      }       
    }
  }else {
    alert(response.error);
  }
}

function messageDeleted(response) {
  if(response.error == '') {
  var message = dtla.get(response.message.id);
  var parent = dtla.get('news');
  
  if(parent && message)
  {
    parent.removeChild(message);
  }
  }else{
    alert(response.error);
  }
}

function messageUpdated(response){
  var p = dtla.get('news');
  var b = dtla.get('backup');
  var n = dtla.get(response.message.id);
  
  var t = dtla.getElementsByClassName('title', b);
  if (t)
    t.innerHTML = response.message.title;
  
  var d = dtla.getElementsByClassName('date', b);
  if (d)
    d.innerHTML = response.message.date; 
  
  var m = b.getElementsByTagName('div');
  if(m.length == 1)
    m[0].innerHTML = response.message.message;
  
  if(p && b && n){
    b.id=response.message.id;
    b.style.display = '';
  
    p.replaceChild(b, n);                       
  }                      
  enableDisableLinks(true);
}


function editMessage(id) {
  enableDisableLinks(false);
  
  var oldElement = dtla.get(id);
  var oldElementParent = oldElement.parentElement ? oldElement.parentElement : oldElement.parentNode;
  var postDate = dtla.getElementsByClassName('date', oldElement) 
  var title = dtla.getElementsByClassName('title', oldElement) 
  var m = oldElement.getElementsByTagName('div');
  var message = m[0].innerHTML;
  
  // create some new elements
  var newElement = document.createElement('li');
  newElement.id = id;
  
  var dateContainer = document.createElement('div');
  dateContainer.id='date'
  
  var dateInput = document.createElement('input');
  dateInput.id='news-date';
  dateInput.name='news-date';
  dateInput.className='news-date';
  dateInput.type='text';
  var pd = postDate.innerHTML
  pd.replace(', ', '/'); 
  dateInput.value = pd;
  dateContainer.appendChild(dateInput);
  
  var titleContainer = document.createElement('div');
  titleContainer.id = 'title';
  
  var titleInput = document.createElement('input');
  titleInput.id='news-title';
  titleInput.name='news-title';
  titleInput.className='news-title';
  titleInput.type='text';
  titleInput.value=(title) ? title.innerHTML : '';
  titleContainer.appendChild(titleInput);
  
  var messageContainer = document.createElement('textarea');
  messageContainer.id='message';
  messageContainer.className='widgEditor';
  messageContainer.value = message;
  
  var buttonContainer = document.createElement('div');
  buttonContainer.className = 'buttonBar';
  
  var updateButton = document.createElement('input');
  updateButton.id='updateButton';
  updateButton.type='button';
  updateButton.className='button';
  updateButton.value='Update';
  dtla.addEvent(updateButton, 'click', onClick, false);
   
  var cancelButton = document.createElement('input');
  cancelButton.id='cancelButton';
  cancelButton.type='button';
  cancelButton.className='button';
  cancelButton.value='Cancel';
  dtla.addEvent(cancelButton, 'click', onClick, false);
  
  buttonContainer.appendChild(updateButton);
  buttonContainer.appendChild(cancelButton);
  
  newElement.appendChild(dateContainer);
  newElement.appendChild(titleContainer);
  newElement.appendChild(messageContainer);
  newElement.appendChild(buttonContainer);
   
  // make a backup of the li in case we cancel
  var backup = oldElement.cloneNode(true);
  backup.id='backup';
  backup.style.display = 'none';
  document.getElementsByTagName('BODY')[0].appendChild(backup);
  
  oldElementParent.replaceChild(newElement, oldElement);

  // init the rtb
  run(true);
}


function cancelEdit(id) {
  var n = dtla.get(id);
  var p = n.parentElement ? n.parentElement : n.parentNode;
  var b = dtla.get('backup');
  b.id=id;
  b.style.display = '';                     
  p.replaceChild(b, n);                       
  enableDisableLinks(true);
}


function enableDisableLinks(enable){
  var news = dtla.get('news');
  var l = dtla.getElementsByClassName('submit', news);
  
  if(l){
    for(var i=0; i < l.length; i++){
      if(enable)
        l[i].style.display='';
      else
        l[i].style.display='none';
    }
  } 
}

