/*
 *  JavaScript
 *  Datum: 12.02.2008
 */
  lng_unexceptedFail = 'Unerwarteter Fehler aufgetreten...';
  lng_ajaxFail = 'Kommunikationsfehler aufgetreten, versuchen Sie es erneut';
  lng_userActivationFail = 'Benutzer konnte nicht aktiviert werden';
  lng_messageDeleteFail = 'Nachricht konnte nicht gelöscht werden';
  lng_favoritDeleteFail = 'Favorit konnte nicht gelöscht werden';
  lng_adCalcFail = 'Fehler bei der Berechnung aufgetreten, überprüfen Sie die Angaben';
  lng_suspectFail = 'Produkt konnte nicht gemeldet werden, versuchen Sie es erneut';
  lng_from = 'ab';
  lng_a = 'à';
  lng_messageFrom = 'Nachricht von';

  lng_btnEditProduct = 'Produkt editieren';
  lng_btnCancel = 'abbrechen';
  lng_btnDelete = 'löschen';

  lng_imgProduct = 'Produktbild';

  lng_ad1 = 'Folgende Werbeautrag wird für Ihr Konto ausgeführt:';
  lng_ad2 = 'Positionierung';
  lng_ad3 = 'Kategorien';
  lng_ad4 = 'Dauer';
  lng_ad5 = 'Tag(e)';

  monthArray = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
 
 window.onload = init;
 tinyMCE.init({
  mode : "textareas",
  theme : "simple",
  invalid_elements : "a,script,iframe,style,html,body,img"
 });
 
 function init(){
   /* Check JavaScript Enabled */
   if($('javascriptAlert')) {$('javascriptAlert').className = 'hidden'};
   
   if($('activateButton')) {$('activateButton').observe('click',activateUser);}
   if($('deleteMsgButton')) {$('deleteMsgButton').observe('click',deleteMessage);}
   if($$('#catMenu a.pointer')) {
    for(var i=0; i < $$('#catMenu img.pointer').length; i++){
      $$('#catMenu img.pointer')[i].observe('click',editCategories);
    }
   }
   if($$('#msgBox img')){
    for(var i=0; i < $$('#msgBox img').length; i++){
      $$('#msgBox img')[i].observe('click',deleteMessageInbox);
    } 
   }
   if($('backToInbox')) {$('backToInbox').observe('click',toInbox);}
   if($('clearForm')) {$('clearForm').observe('click',clearForm);}
   if($('newProductButton')) {$('newProductButton').observe('click',openFormularNewProduct);}
   if($('closeFormular')) {$('closeFormular').observe('click',closeFormularNewProduct);}
   if($('closeMessageBox')) {$('closeMessageBox').observe('click',closeMessageBox);}
   if($('closeRecommandBox')) {$('closeRecommandBox').observe('click',closecloseRecommandBox);}
   /* OPERA BUG */
   /* var test = $$('.productAction img'); */
  
   for(var j=0; j < $$('.productAction').length; j++){
     var images = $$('.productAction')[j].getElementsBySelector('img');
     for(var i=0; i < images.length; i++){ 
       switch(images[i].readAttribute('class')){
         case 'editImage':
           images[i].observe('click',editProduct);
           break;
         case 'deleteImage':
           images[i].observe('click',deleteProduct);
           break;
       }
     }
   }
   
   if($('userRequest')) {$('userRequest').observe('click',sendRequestMail);}
   
   if($('adminDeleteProduct')) {$('adminDeleteProduct').observe('click',deleteProductByAdmin);}
   
   if($('moreImages')) {$('moreImages').observe('click',moreImages);}
   if($('morePrices')) {$('morePrices').observe('click',morePrices);} 
   
   if($('submit_watchCat')) {$('submit_watchCat').observe('click',submitFormular);} 
   
   if($('startDateIcon')) {$('startDateIcon').observe('click',initCalendar);}
   if($('endDateIcon')) {$('endDateIcon').observe('click',initCalendar);}
   if($("previousMonth")) {$("previousMonth").observe('click',previousMonth);}
   if($("nextMonth")) {$("nextMonth").observe('click',nextMonth);}
   
   if($('suspectProduct')) {$('suspectProduct').observe('click',suspectProduct);}
   
   var messageTitle = $$('.name_date');
   for(var i=0; i < messageTitle.length; i++){
    messageTitle[i].down().observe('click',getMessage);
   }
   
   var messages = $$('.message');
   for(var i=0; i < messages.length; i++){
    messages[i].down().observe('click',getMessage);
   }
   var messageDelete = $$('.delete');
   for(var i=0; i < messageDelete.length; i++){
    messageDelete[i].down().observe('click',deleteMessage);
   }
   
   if($('messageto')) {$('messageto').observe('click',openContactFormular);}
   if($('sendToFriend')) {$('sendToFriend').observe('click',openFriendFormular);}
   
   var inputs = $$('#newReg input[type=radio]');
   for(var i=0; i < inputs.length; i++){
    inputs[i].observe('click',getLogoLoader);
   } 
   
   var deleteWatchlist = $$('#watchlist li img');
   for(var i=0; i < deleteWatchlist.length; i++){
    deleteWatchlist[i].observe('click',deleteWatchlistItem);
   }
   
   /* Is Formular available */
   if($('payment')){
    $('payment').observe('click',openPaymentFormular);
    $('paymentOK').observe('click',paymentOK);
    $('paymentCancel').observe('click',closePaymentFormular);
   }
   
   /* Externe Links */
   var outlinks = $$('a[rel=external]');
   for(var i=0; i < outlinks.length; i++){
    outlinks[i].writeAttribute('target','_blank');
   }

 }
 
 function activateUser(){
   var userID = $('userID').value;
   var url = '../ajax/setUserActive.php';
   new Ajax.Request(url,
    {
      method:'post',
      parameters: {id: userID},                                                                      
      onSuccess: function(r){ 
        if(r.responseText == 'true'){
          document.location.href = 'index.php';
        } else {
          fail(lng_userActivationFail);
        }
      },
      onFailure: ajaxFail
    });
 }
 
 function deleteMessageInbox(event){
  var id = (event.element(event).readAttribute('id')).split('_')[1];
  $('msgID').value = id;
  deleteMessage();
 }
 
 function deleteMessage(){
   var msgID = $('msgID').value;
   new Ajax.Request('../ajax/deleteMessage.php',
    {
      method:'post',
      parameters: {id: msgID},
      onSuccess: function(r){
        if(r.responseText == 'true'){
          document.location.href = 'messageInbox.php';
        } else {
          fail(lng_messageDeleteFail);
        }
      },
      onFailure: ajaxFail
    });
 }
 
 function editCategories(event){
   var id = (event.element(event).readAttribute('id')).split('_')[1];
   var inputID = 'edit_'+id;
   var text = $('catItem_'+id).firstChild.firstChild.data;
   var input = new Element('input',{id:inputID, name:inputID, type:'text', value:text});
   Element.replace($('catItem_'+id).firstChild,input);
 }
 
 function toInbox(){
  document.location.href = 'messageInbox.php';
 }
 
 function clearForm(event){
  var formID = event.element(event).parentNode.readAttribute('id');
  var inputs = $$('form#'+formID + ' input');
  for(var i=0; i < inputs.length; i++){
    switch(inputs[i].readAttribute('type')){
      case 'text':
        inputs[i].value = '';
        break;
    }
  }
  event.element(event).parentNode.submit();
 }
 
 function openFormularNewProduct(event){
  if($$('select#cat')){
    var options = $$('select#cat option');
    for(var i=0; i < options.length; i++){
      if(options[i].readAttribute('disabled') != null){
        options[i].style.color = '#999';
      }
    }
  }
  
  $('backgroundBlock').className = 'visible';
  $('newProduct').className = 'box visible';
  $('newProduct').scrollTo();
 }
 
 function closeFormularNewProduct(event){
  $('backgroundBlock').className = 'hidden';
  $('newProduct').className = 'hidden';
 }
 function closeMessageBox(event){
  $('backgroundBlock').className = 'hidden';
  $('messageBox').className = 'hidden';
 }
 function closecloseRecommandBox(event){
  $('backgroundBlock').className = 'hidden';
  $('recommandBox').className = 'hidden';
 }
 
 function editProduct(event){
  var input = event.element(event).next('input');
  new Ajax.Request('ajax/editProduct.php',
    {
      method:'post',
      parameters: {'id': input.value},
      onSuccess: function(r){
        var xml = r.responseXML;
        var data = xml.getElementsByTagName('data')[0];

        var product = data.getElementsByTagName('product')[0];
        
        var id = product.getAttribute('id');
        var catId = product.getAttribute('catId');
        var title = (text = product.getElementsByTagName('title')[0].firstChild)? text.data:'';
        var description = (text = product.getElementsByTagName('description')[0].firstChild)? text.data:'';
        var price = (text = product.getElementsByTagName('price')[0].firstChild)? text.data:'';
        var form = $('productForm');
        var h1 = $('titleProductForm');
        form.writeAttribute('action','editProduct.php');
        h1.update(lng_btnEditProduct);
        
        var input = new Element('input',{'type':'hidden','name':'productId','value':id});
        form.insert(input);
       
        $('title').writeAttribute('value',title);
        
        var ed = tinyMCE.get('description');
        ed.setContent(description);
        
        $('price').writeAttribute('value',price);
        
        /* Kategorie auswählen */
        var options = $A($$('select#cat option'));
        for(var i=0; i < options.length; i++){
          if(options[i].getAttribute('value') == catId){
            options[i].selected = 'selected';
            break;
          }
        }
        
        /* Funktioniert mit Opera, FireFox und Safari; IE7 BUG */
        /*
        for(var element in options){
          if(options[element].getAttribute('value') == catId){
            options[element].selected = 'selected';
            break;
          }
        }
        */
      },
      onFailure: ajaxFail
    });
 }
 function deleteProduct(event){
  if(confirm("Produkt wirklich löschen?")){
    var input = event.element(event).next('input');
    new Ajax.Request('ajax/deleteProduct.php',
      {
        method:'post',
        parameters: {'id': input.readAttribute('value')},
        onSuccess: function(r){
          if(r.responseText == 'true'){
            var tr = input.up('tr',0);
            tr.remove();
            var p = new Element('p',{'class':'notification success'}).update('Produkt wurde erfolgreich entfernt');
            $('center').insert({top:p});
          } else {
            fail(lng_unexceptedFail);
          }
        },
        onFailure: ajaxFail
      });  
  }
 }
 
 function moreImages(event){
  var fileInputs = $$('#imageList input[type=file]');
  var fileImages = $$('#imageList img[alt=Produktbild]');
  if((fileInputs.length+fileImages.length) < 5){
    var label = new Element('label').update('&nbsp;');
    var input = new Element('input',{'type':'file','name':'image'+fileInputs.length});
    var div = new Element('div',{'class':'break'});
    $('imageList').insert({bottom:label});
    $('imageList').insert({bottom:input});
    $('imageList').insert({bottom:div});
  }
 }
 function deleteImage(event){
  var imageSrc = event.element(event).previous('img').readAttribute('src');
  new Ajax.Request('ajax/deleteProductImage.php',
    {
      method:'post',
      parameters: {'src': imageSrc},
      onSuccess: function(r){
        if(r.responseText == 'true'){
          var p = event.element(event).up();
          p.next('div').remove();
          p.remove();
          if($$('p.existProduct').length == 0){
            moreImages();  
          }
        } else {
          fail(lng_unexceptedFail);
        }
      },
      onFailure: ajaxFail
    });
 }
 
 function morePrices(event){
  var priceInputs = $$('#priceList input[type=text]');
  var label = new Element('label').update('&nbsp;');
  $('priceList').insert({bottom:label});
  var span = new Element('span').update(lng_from);
  $('priceList').insert({bottom:span});
  var input = new Element('input',{'type':'text','id':'anz'+Math.floor(priceInputs.length/2),'name':'product[anz]['+Math.floor(priceInputs.length/2)+']','class':'anzProducts'});
  $('priceList').insert({bottom:input}); 
  var span = new Element('span').update(lng_a);
  $('priceList').insert({bottom:span});
  var input = new Element('input',{'type':'text','id':'price'+Math.floor(priceInputs.length/2),'name':'product[price]['+Math.floor(priceInputs.length/2)+']'});
  $('priceList').insert({bottom:input}); 
  var div = new Element('div',{'class':'break'});
  $('priceList').insert({bottom:div}); 
 }
 
 function getMessage(event){
  var id = event.element(event).up('tr',0).readAttribute('id').split('_')[1];
  new Ajax.Request('ajax/getMessage.php',
    {
      method:'post',
      parameters: {'id': id},
      onSuccess: function(r){
        var xml = r.responseXML;
        var data = xml.getElementsByTagName('data')[0];
        var message = data.getElementsByTagName('message')[0];
        
        var id = message.getAttribute('id');
        var date = message.getAttribute('date');
        var subject = message.getElementsByTagName('messageText')[0].getAttribute('subject');
        var replyId = message.getElementsByTagName('reply')[0].getAttribute('id');
        
        var messageText = (text = message.getElementsByTagName('messageText')[0].firstChild)? text.data:'';
        var replyName = (text = message.getElementsByTagName('reply')[0].firstChild)? text.data:'';
        $('messageBox').down('h1',0).update(lng_messageFrom + ' ' + replyName);
        $('messageBox').down('h2',0).update(subject); 
        $('messageBox').down('p',0).update(messageText);
        $('message_toid').writeAttribute('value',replyId);
        
      
        $('backgroundBlock').className = 'visible';
        $('messageBox').className = 'box visible';
        
        event.element(event).up('tr').className = '';
      },
      onFailure: ajaxFail
    }); 
 }
 function deleteMessage(event){
   var id = event.element(event).up('tr').readAttribute('id').split('_')[1];
   new Ajax.Request('ajax/deleteMessage.php',
    {
      method:'post',
      parameters: {'id': id},
      onSuccess: function(r){
        if(r.responseText == 'true'){
          event.element(event).up('tr').remove();  
        } else {
          fail(lng_messageDeleteFail);
        }
      },
      onFailure: ajaxFail
    });  
 }
 
 function deleteWatchlistItem(event){
  var id = event.element(event).up('li').readAttribute('id').split('_');
  new Ajax.Request('ajax/deleteWatchlist.php',
    {
      method:'post',
      parameters: {'watchlist':id[0], 'uid':id[1], 'relid':id[2] },
      onSuccess: function(r){
        if(r.responseText == 'true'){
          event.element(event).up('li').remove();  
        } else {
          fail(lng_favoritDeleteFail);
        }
      },
      onFailure: ajaxFail
    });
 }
 
 function openContactFormular(event){
  $('backgroundBlock').className = 'visible';
  $('messageBox').className = 'box visible';
 }
 
 function openFriendFormular(event){
  $('backgroundBlock').className = 'visible';
  $('recommandBox').className = 'box visible';
 }
 
 function getLogoLoader(event){
  var value = event.element(event).readAttribute('value');
  if(value == 'platin'){
    $('platinOptions').className = 'visible';
  } else {
    $('platinOptions').className = 'hidden';
  }
 }
 
 
 /* Payment */
 function openPaymentFormular(event){
  var div = new Element('div',{'id':'paymentContent'});
  $('paymentContent').replace(div);
 /* Check paymenttype */
  switch($('paymentType').readAttribute('value')){
    case 'ad':
      calculateAd();
      break;
    default:
      return false;
      break;
  }
 }
 
 function closePaymentFormular(event){
  $('backgroundBlock').className = 'hidden';
  $('newPayment').className = 'hidden';
 }
 
 function calculateAd(){
  var adType = $('banner').getValue();
  var catType = $('cat').getValue();
  var startDate = $('startDate').getValue();
  var endDate = $('endDate').getValue();
  
  new Ajax.Request('ajax/getPriceAd.php',
  {
    method:'post',
    parameters: {'adType':adType, 'catType':catType.inspect(), 'startDate':startDate, 'endDate':endDate},
    onSuccess: function(r){
      if(r.responseText != 'false'){    
        var priceTotal = Number(r.responseText);
        var startDateArray = $('startDate').getValue().split('\.');
        var endDateArray = $('endDate').getValue().split('\.');
        var anzDay = Math.floor((new Date(endDateArray[2],endDateArray[1]-1,endDateArray[0]) - new Date(startDateArray[2],startDateArray[1]-1,startDateArray[0]))/(1000*60*60*24) + 1);
        
        var p = new Element('p').update(lng_ad1);
        $('paymentContent').insert({bottom:p});
        
        var div = new Element('div',{'class':'break'});
        $('paymentContent').insert({bottom:div});
        
        var label = new Element('label').update(lng_ad2);
        $('paymentContent').insert({bottom:label});
        var text = getSelectedText($('banner'),adType);
        var p = new Element('p').update(text);
        $('paymentContent').insert({bottom:p});
        
        var div = new Element('div',{'class':'break'});
        $('paymentContent').insert({bottom:div});
        
        var p = new Element('p').update(lng_ad3);
        $('paymentContent').insert({bottom:p});
        var ul = new Element('ul');
        for(var i=0; i < catType.length; i++){
           var text = getSelectedText($('cat'),catType[i]);
           var li = new Element('li').update(text);
           ul.insert({bottom:li});
        }
        $('paymentContent').insert({bottom:ul});
        
        var div = new Element('div',{'class':'break'});
        $('paymentContent').insert({bottom:div});
        
        var label = new Element('label').update(lng_ad4);
        $('paymentContent').insert({bottom:label});
        var p = new Element('p').update($('startDate').getValue() + " - " + $('endDate').getValue() + " [" + anzDay + " " + lng_ad5 + "]");
        $('paymentContent').insert({bottom:p});
        
        var div = new Element('div',{'class':'break'});
        $('paymentContent').insert({bottom:div});
        
        var label = new Element('label',{'class':'bold'}).update('Betrag');
        $('paymentContent').insert({bottom:label});
        var p = new Element('p',{'class':'bold'}).update((priceTotal*anzDay).toFixed(2));
        $('paymentContent').insert({bottom:p});
        
        var div = new Element('div',{'class':'break'});
        $('paymentContent').insert({bottom:div});
        
        $('backgroundBlock').className = 'visible';
        $('newPayment').className = 'box visible';
        
        $('newPayment').scrollTo();
        
      } else {
        alert(lng_adCalcFail);
      }
    },
    onFailure: ajaxFail
  }); 
 }
 
 function getSelectedText(object,value){
  var returnValue;
  object.select('option').each(function(obj){
    if(obj.readAttribute('value') == value){
      returnValue = obj.firstChild.data;
    }
  });
  return returnValue;
 }
 
 function paymentOK(event){
  if($('adFormular')) {$('adFormular').submit();}
 }
 /* End Payment */
 
 function ajaxFail(){
   alert(lng_ajaxFail);
 }
 function fail(msg){
   alert(msg); 
 }
 
 function submitFormular(event){
  event.element(event).up('form').submit();
 }
 
 function suspectProduct(event){
  var id = $('productID').readAttribute('value');
  new Ajax.Request('ajax/suspectProduct.php',
    {
      method:'post',
      parameters: {'id': id},
      onSuccess: function(r){
        if(r.responseText == 'true'){
          var p = new Element('p',{'class':'notification success'}).update('Verdächtiges Produkt wurde übermittelt und wird geprüft, herzlichen Dank!');
          $('center').insert({top:p});
        } else {
          fail(lng_suspectFail);
        }
      },
      onFailure: ajaxFail
    }); 
 }
 
 /* ***** CALENDAR ***** */
 function initCalendar(event){
  var obj = event.element(event);
  var now = new Date();
  $("currentMonth").value = now.getMonth();
  $("currentYear").value = now.getFullYear();
  $("currentField").value = obj.previousSibling.previousSibling.getAttribute("id");
  makeCalendar(now.getFullYear(),now.getMonth());
  $("calendar").className = "visible";
}

function makeCalendar(year, month){
  var today = new Date();
  var firstDay = new Date(year,month,1);
  var dayArray = new Array();
  var styleArray = new Array(); 
  if(firstDay.getDay() == 0){
    dayNumber = -6;
  } else {
    dayNumber = (1-firstDay.getDay());
  }
  for(i = dayNumber; i < (42+dayNumber); i++){
    var tempDate = new Date(firstDay.getTime() + i*1000*60*60*24 + 1000*60*60);
    dayArray.push(tempDate.getDate());
    if(tempDate.getMonth() != month){
      styleArray.push("otherMonth");
    } else if((tempDate.getFullYear() == today.getFullYear()) && (tempDate.getMonth() == today.getMonth()) && (tempDate.getDate() == today.getDate())){
      styleArray.push("today");
    } else {
      styleArray.push("currentMonth");
    }
  }
  var fields = $$("#month td");
  for(i = 0; i < 42; i++){
    /* daten zuweisen */
    fields[i+7].update(dayArray[i]);
    /* style zuweisen */
    fields[i+7].className = styleArray[i];
    fields[i+7].observe('click',copyDate);      
  }
  $("calendarTitle").firstChild.data = monthArray[firstDay.getMonth()] + " " + firstDay.getFullYear();  
}

function nextMonth(){
  var month = parseInt($("currentMonth").value);
  var year = parseInt($("currentYear").value);
  if((month + 1) > 11){
    month = 0;
    year = year + 1;
  } else {
    month = month + 1;
  }
  $("currentMonth").value = month;
  $("currentYear").value = year;
  makeCalendar(year,month);
}
function previousMonth(){
  var month = parseInt($("currentMonth").value);
  var year = parseInt($("currentYear").value);
  if(month - 1 < 0){
    month = 11;
    year = year - 1;
  } else {
    month = month - 1;
  }
  $("currentMonth").value = month;
  $("currentYear").value = year;
  makeCalendar(year,month);
}

function copyDate(event){
  var obj = event.element(event);
  var target = $("currentField").value;
  if(obj.className == "currentMonth" || obj.className == "today"){
    $(target).value = obj.firstChild.data + "." + (parseInt($("currentMonth").value)+1) + "." + $("currentYear").value;
  } else if(obj.firstChild.data > 15){
    /* vorheriger Monat */
    if($("currentMonth").value == 0){
      $(target).value = obj.firstChild.data + ".12." + (parseInt($("currentYear").value)-1);  
    } else {
      $(target).value = obj.firstChild.data + "." + $("currentMonth").value + "." + $("currentYear").value;
    }
  } else {
    /* nächster Monat */
    if($("currentMonth").value == 11){
      $(target).value = obj.firstChild.data + ".1." + (parseInt($("currentYear").value)+1);  
    } else {
      $(target).value = obj.firstChild.data + "." + (parseInt($("currentMonth").value)+2) + "." + $("currentYear").value;
    }
  }
  $("calendar").className = "hidden";
}

function sendRequestMail(event){
  var productID = $('productID').value;
  var fromID = $('fromID').value;
  var toID = $('toID').value;
  new Ajax.Request('ajax/requestProduct.php',
  {
    method:'post',
    parameters: {'productID': productID, 'toID': toID, 'fromID': fromID},
    onSuccess: function(r){
      if(r.responseText == 'true'){
        var p = new Element('p',{'class':'notification success'}).update('Ihre Daten wurden weitergeleitet.');
        $('center').insert({top:p});
      } else {
        fail(lng_suspectFail);
      }
    },
    onFailure: ajaxFail
  });
}

function deleteProductByAdmin(){
  if(confirm("Wirklich löschen?")){
    document.location.href = "product.php?delete=" + $('pid').value;
  }
}