AH.forms = {
   pullInDependencies: function()
   {
      var loader = new YAHOO.util.YUILoader(
      { 
         base: "", 
         require: ["button","connection","container","element"], 
         loadOptional: false, 
         combine: true, 
         filter: "MIN", 
         allowRollup: true, 
           
         onSuccess: function()
         { 
            AH.forms.addForms();
         }, 
         
         timeout: 10000
   	}); 

	   loader.insert();  
   },
   
   addForms: function(forms)
   {  
      var supportForm = AH.forms.SupportForm;
      
      if (supportForm.getContainer())
      {
         supportForm.getContainer().innerHTML = supportForm.getFormHtml();
         supportForm.initForm();         
      }   
   },
   
   doSelection: function(fld)
   {
   },
   
   validateEmail: function(epost)
   {
	   var regEmail = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;
      
      return regEmail.test(epost); 
   }
};

AH.forms.SupportForm = function()
{
   var supportDialog = null;
   var responseEl    = null;
   
   function draw()
   {
      var h  = '<div id="supportDialog" class="offscreen">';
          h += '<div class="hd">Apphuset - Support</div>';
          h += '<div class="bd">';
          h += '<div id="supportResponse"></div>';
         
          h += '<form id="dialogForm" name="dialogForm" method="post" action="/php/support.php">';
          h += '<div>';
          h += '<p>';
          h += '<input name="name" class="name" id="txtSupportName" value="&lt; ditt navn her >"/>';
          h += '<input name="email" class="email" id="txtSupportEmail" value="&lt; din epost her >" />';
          h += '</p>';
          h += '<p>';
          h += '<select name="category" class="category" id="selSupportCategory">';
          h += '<option value="general" selected="selected">Generell henvendelse</option>';
          h += '<option value="taxi">TaxiNå!</option>';            
          h += '<option value="lade">LadeNå!</option>';
          h += '<option value="press">Presse</option>';          
          h += '</select>';
          h += '<input name="subject" class="subject" id="txtSupportSubject" value="&lt; emne her >" />';
          h += '</p>';
          h += '</div>';
          h += '<p>';
          h += '<textarea name="message" id="txtaMessage"></textarea>';
          h += '</p>';
          h += '</form>';
          h += '</div>';
          h += '</div>';
    
      return h;
   }
                     
   function initSupportForm()
   { 
      responseEl = document.getElementById("supportResponse");    
      responseEl.style.display = "none";
      
      supportDialog = new YAHOO.widget.Dialog("supportDialog", 
							{ width : "700px",
                       modal: true,
							  fixedcenter : true,
							  visible : false, 
							  constraintoviewport : true,
                       hideaftersubmit: false,
							  buttons : [ { text:"Submit", handler:handleSubmit, isDefault:true },
								      { text:"Cancel", handler:handleCancel } ]
							});
                  
      supportDialog.validate = function() 
      {
         var data = this.getData();
 
         if (!AH.forms.validateEmail(data.email)) 
         {
            responseEl.innerHTML = "Epost er ikke gyldig";
            AH.forms.doSelection(document.getElementById('txtSupportEmail'));
            return false;
         }
          
         if ("" == data.message)
         {
            responseEl.innerHTML = "Tilbakemeldingen kan ikke være tom";
            document.getElementById('txtaMessage').focus();
            return false;
         }
       
         return true;
      };
      
      supportDialog.callback = 
      { 
         success: handleSuccess,
         failure: handleFailure 
      };
      
      supportDialog.render(); 
      
      initalise();
   }
      
   function initalise()
   {
      toggleSubject(document.getElementById("selSupportCategory"));

      YAHOO.util.Event.addListener("selSupportCategory", "change", categoryChanged);
      YAHOO.util.Event.addListener("navSupport", "click", supportDialog.show, supportDialog, true);
   }
   
   function categoryChanged(evt)
   {
      toggleSubject(this);
   }
   
   function toggleSubject(selectBox)
   {
      var subject = document.getElementById('txtSupportSubject');
      var sel = selectBox.options[selectBox.selectedIndex].value;
      
      selectBox.disabled = false;
               
      if ("general" == sel || "press" == sel)
      {
         subject.disabled = false;
         subject.value = "< emne her >";
      }
      else
      {
         subject.disabled = true;
         subject.value = selectBox.options[selectBox.selectedIndex].text;
      }
   }
   
   function handleSubmit()
   {
      responseEl.innerHTML = '<img src="images/loaders/loader_black.gif">  Sender forespørsel til Apphuset...';   
      responseEl.style.display = ""; 
		
      this.submit();    
	}
   
   function handleCancel()
   {
		this.cancel();
	}
   
	function handleSuccess(o)
   {
      reply(true);
      setTimeout(cleanUp, 3000);
	}
   
   function handleFailure(o)
   {
      if ("302" == o.status)
      {
         reply(true);
         setTimeout(cleanUp, 2000);
      }
      else
      {
         reply(false);
         setTimeout(cleanUp, 3000);
      }
	};
   
   function cleanUp()
   {
      responseEl.innerHTML     = "";
      responseEl.style.display = "";
      supportDialog.hide();
   }
   
   function reply(success)
   {
      if (success)
      {
      	responseEl.innerHTML = 'Apphuset takker for din henvendelse';            
      }
      else
      {
         responseEl.innerHTML = 'Beklager, noe gikk gale, din henvendelse kunne ikke sendes. Vennligst prøv igjen eller bruk din egen epost klient.';                     
      }
   }
   
   return {
      initForm: function()
      {
         initSupportForm();
      },
      
      getContainer: function()
      {
         return document.getElementById('supportForm');   
      },
      
      getFormHtml: function()
      {
         return draw();
      }
   };
}();

AH.initPage = function()
{
   AH.forms.pullInDependencies();
}

YAHOO.util.Event.addListener(window, "load", AH.initPage);


