var openedListItem;



String.prototype.htmlEntities = function () {
   return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/&/g,'[[AND]]');
};

document.observe('dom:loaded',function(){

   if($('showFeedbackList')){ //! feedback Liste
       support_initTicketListFor($('product').innerHTML);
   }else{
      var newLeft = (document.viewport.getWidth() -34) +"px";
      var path = $('path').innerHTML;
      
      $('supportButton').setStyle({
         left: newLeft
      });
      
      
      $('supportButton').observe('mouseover',function(event){
         var newLeft = (document.viewport.getWidth() -38) +"px";
         $('supportButton').setStyle({
            left: newLeft
         });
      });
      
      $('supportButton').observe('mouseout',function(event){
         var newLeft = (document.viewport.getWidth() -34) +"px";
         $('supportButton').setStyle({
            left: newLeft
         });
      });
      
      $('supportButton').observe('click',support_showCreateForm);
   }
});

function support_initTicketListFor(product){
      new Ajax.Request($('path').innerHTML+"/myContent/support/support.php?action=getFeedbackList&feedbackForProductId="+product, {
         	method: 'get',
            onSuccess: function(t){
               $('feedbackView').innerHTML = t.responseText;
                              
               $('feedbackView').select('[class="feedback_listItem"]').each(function(item){
                     item.observe('click',function(){
                        if(openedListItem != item){

                           // alte, geoeffnete Item schliessen
                              if(openedListItem){
                                 openedListItem.setStyle({ background: ''});
                                 openedListItem.setStyle({ color: ''}); 
                                 openedListItem.morph('height:30px;');
                              }
                           // -
                           
                           // nun wird das neue feedbackItem vergroessert
                              var newHeight = 80;
                              newHeight += item.select('div[class~=question]').first().getHeight();
                              
                              if(item.select('div[class~=answer]').first())
                                 newHeight += item.select('div[class~=answer]').first().getHeight();

                             item.morph('background:#fff; color:#000; height:'+newHeight+'px;');


                           // -
                        
                           
                           openedListItem = item;
                        }
                     });
               });
            },
            onCreate: function(){
               $('feedbackView').innerHTML = "<br/><br/><br/><center><img src='"+$('path').innerHTML+"myContent/ajaxBar.gif'></center><br><br>";
            }
         });
}


function support_showCreateForm(){
         new Ajax.Request($('path').innerHTML+"/myContent/support/support.php?action=getAddForm", {
         	method: 'get',
            onSuccess: function(t){
               facebox.reveal(t.responseText);
               
               
               $('supportFormTable').select('li').each(function(item){
                  item.observe('click',function(event){
                     
                     $('in_type').value = event.element().select('div[class~=value]').first().innerHTML;
                     
                     $('supportFormTable').select('li').each(function(liItem){
                     
                        if(liItem != event.element()){
                           new Effect.Morph(liItem, {
                              style: 'background:#d3ffdd; color: gray;',
                              duration: 0.5
                           });
                        
                        }else{
                        
                        liItem.setStyle({
                           backgroundColor: '#62da7f',
                           color: '#fff'
                        });
                        
                        /* IE meckert hier :(
                           new Effect.Morph(liItem, {
                              style: 'background:#62da7f; color: #fff;',
                              duration: 0.5
                           });
                        */
                        }
                        
                     });
                  });
               });
                  
               // onclickEvent zu den Form-elementen hinzufuegen
                  $('facebox_content').select('input, textarea, select').each(function(item){
                     if(item.id != 'in_submit'){
                        item.observe('click',function(event){
                           new Effect.Morph(item.id, {
                             style: 'background:#fff; color:#000;',
                             duration: 0.4
                           });
                        }.bind(this));
                     }
                  });
               // -    
         
           	},
           	onCreate: function(){
               facebox.reveal("<br><br><center><img src='"+$('path').innerHTML+"myContent/ajaxBar.gif'></center><br><br>");
           	}
         });
}

function support_sendForm(){
   var email = $F('in_email');
   var email_verify = $F('in_email_verify');
   var name = $F('in_name');
   var type = $F('in_type');
   var title = $F('in_title');
   var desc = $F('in_desc');
   var product = $F('in_product');
   
   var error = 0;
   
   $('facebox').select('[class="supportError"]').each(function(item){
      item.innerHTML = ""; // Alte Fehlermeldungen lšschen
   });

   
   if(name == ""){
      new Effect.Morph('in_name', {
        style: 'background:#FF0000; color:#fff;',
        duration: 0.4
      });
      $('name_error').innerHTML = '&nbsp;please insert a name';
      error++;
   }
   
   if((email == '') || (email.indexOf('@') == -1) || (email.length < 6) || (email.indexOf('.') == -1)){
      new Effect.Morph('in_email', {
        style: 'background:#FF0000; color:#fff;',
        duration: 0.4
      });
      $('email_error').innerHTML = '&nbsp;e-Mail address isn\'t correct';
      error++;
   }
   
   
   if(email != email_verify){
      new Effect.Morph('in_email_verify', {
        style: 'background:#FF0000; color:#fff;',
        duration: 0.4
      });
      $('email_verify_error').innerHTML = '&nbsp;e-mail addresses doesn\'t fit';
      error++;
   }
   
   if(product == -1){
      new Effect.Morph('in_product', {
        style: 'background:#FF0000; color:#fff;',
        duration: 0.4
      });
      $('product_error').innerHTML = '&nbsp;select a product';
      error++;
   }else{
      if($F('in_version') == -1){
         new Effect.Morph('in_version', {
           style: 'background:#FF0000; color:#fff;',
           duration: 0.4
         });
         $('product_error').innerHTML = '&nbsp;select a version';
         error++;
      }
   }
   
   if(type == -1){
      $('type_error').innerHTML = '&nbsp;select a type';
      error++;
   }
   
   if(title == ""){
      new Effect.Morph('in_title', {
        style: 'background:#FF0000; color:#fff;',
        duration: 0.4
      });
      $('title_error').innerHTML = '&nbsp;insert a title';
      error++;   
   }
   
   if(desc == ""){
      new Effect.Morph('in_desc', {
        style: 'background:#FF0000; color:#fff;',
        duration: 0.4
      });
      $('desc_error').innerHTML = '&nbsp;insert a description';
      error++;   
   }

   if(error > 0){
      Effect.Shake('sendButton');
   }else{
   
      var p = "";
      
      p = p.concat($('in_email').serialize()+'&');
      p = p.concat($('in_name').serialize()+'&');
      
      p = p.concat('in_type='+$('in_type').value+'&');

      p = p.concat('in_version='+$('in_version').value+'&');
      p = p.concat($('in_title').serialize()+'&');
      
      p = p.concat("in_desc="+$('in_desc').value.htmlEntities());
      
      new Ajax.Request($('path').innerHTML+'/myContent/support/support.php?action=saveRequest', {
      	method: 'post',
         postBody : p,
         onSuccess: function(t){
               facebox.showThisContent(t.responseText);
        	},
        	onCreate: function(){
        	   facebox.showThisContent("<br><br><center><img src='"+$('path').innerHTML+"myContent/ajaxBar.gif'></center><br><br>");
        	},
        	onFailure: function(){
        	   alert("Something went wrong - Please Contact me via eMail.");
        	   facebox.close();
        	}
      });
   }
}

function support_productChanged(){
   new Ajax.Request($('path').innerHTML+"/myContent/support/support.php?action=getVersionsForProduct&pId="+$F('in_product'), {
   	method: 'get',
      onSuccess: function(t){
         $('place_version').innerHTML = t.responseText;

         $('in_product').setStyle({
               width: '193px'
         });

         
         Effect.Pulsate('in_version', { pulses: 2, duration: 1.5 });

     	},
     	onCreate: function(){
     	}
   });
}

function support_closeOpenTicket(){
   openedListItem.setStyle({ background: ''});
   openedListItem.setStyle({ color: ''}); 
   openedListItem.morph('height:30px;');
   
   openListItem = null;
}



function support_ticketListButtonClickedFor(div){
   div = $(div);
   
   if(!div.hasClassName('active')){
      // Alle Buttons durchgehen und alle als nichtaktiv markieren
         $$('ul[class~=feedback_categorieBox]').first().select('li').each(function(item){
            item.removeClassName('active');
         });
      // -
   
      div.addClassName('active');
      support_initTicketListFor(div.innerHTML);      
   }
}

