//global object
var ING = {};

//utility for public user registration module
ING.pur= (function () {
			 
			//private variables
			messages={ 'validation.email.unique': 'email existent',
					     'validation.cnp.unique': '<b>cnp  unic</b>'
					    };	
	
			//public methods	
            
			return {

				//deprecated
			     showErrors:function(errorDivId) 
				{
			/*		var x="errorMessages={'email':'validation.email.unique'}".toQueryParams().errorMessages.evalJSON();*/
					if (window.location.search.toQueryParams().errorMessages)
					{
				  	   x=window.location.search.toQueryParams().errorMessages.evalJSON();
				   	   $(errorDivId).innerHTML=ING.pur.messages[x.email];	
					}
				  },

				  displayErrorsOnLoad:function() 
				  {
					if (window.location.search.toQueryParams().errorMessages)
					{
				  	   var errors=window.location.search.toQueryParams().errorMessages.evalJSON();

	 				     var keys=Object.keys(errors) ;

				
					   for ( i=0;i<keys.length;i++ ) {
											var error=errors[keys[i]];				
	  			   	      	$(error).innerHTML=messages[error];
					      }

					}
				  }

			       };	
			})();


// utilities to post forms  
ING.ajax=(function () {

				
				showResponse= function(originalRequest){
												console.info(originalRequest.responseText);
											};

				return{
				
						submit: function(action,formId,successCallback,failureCallback)
						{
							  new Ajax.Request( action, 
															  { 	
															  		
																		method:'get',
																		parameters: $(formId).serialize(true) ,
																		onSuccess:successCallback,
																		onFailure:failureCallback
																		//onComplete: showResponse
																 }
															)	 
						}																
						
					};	 	

	   })();	
	   
	
//utilities for dom manipulation
ING.dom=(function () {
				return{
				
						appendOrUpdateHiddenToForm: function(formId,hiddenId,hiddenName,hiddenvalue)
						{

								if ($(hiddenId))
								{
									$(hiddenId).value=hiddenvalue;
								} else
									{
										var el = document.createElement("input");
  									el.type = "hidden";
   									el.name = hiddenName;
   									el.id = hiddenId;
   									el.value = hiddenvalue;
   									$(formId).appendChild(el);	 
   								}	
						}				
						
					};	 	

	   })();	
		
																									
//utilities for eshop forms
ING.CPRequest = function (){   
				                       var pCaid;
				                       
				                       //ajax request for a eshop form     
				                       this.send=function(action,formId,doSuccess,doFailure) 
				                       {
			                            						if ( typeof(postParams) != "undefined" ) 
			                            						{
			                            						 pCaid=postParams.caID;
							 																	if (pCaid!=undefined)
							 																	{
							  		  											 				ING.dom.appendOrUpdateHiddenToForm(formId,'caID','caID',pCaid);
							  																} 
							  															}	
							  															
							  															
							  														//process response on success	
												    								 var successSubmit=function(response) 
																										{
																														if (response)
																														{
																															var json = response.responseText.evalJSON(); 
																															pCaid=json.caId;
																															var messages=json.messages;																										
																													  }																							
																														
																										};

							  														//process response on failure																											
																							var		failureSubmit=function(transport) 
																											{
																												//console.info(Object.inspect(transport));
																												
																										  };
							  															
							  															//success callback for ajax request
							  															var sendAjaxSuccess=function(transport){
							  																									successSubmit(transport);
							  																									ING.dom.appendOrUpdateHiddenToForm(formId,'caID','caID',pCaid);
							  																									if (doSuccess){
																																			doSuccess(messages);
																							    								}	
							  																									$(formId).submit();
							  																								};
							  															//failure callback for ajax request									
							  															var sendAjaxFailure=function(transport){
							  																									 failureSubmit(transport);
							  																								   if(doFailure){	
																																				doFailure();
																																		}
							  																								};											
							  																								
			                                        ING.ajax.submit(action,formId, sendAjaxSuccess,sendAjaxFailure);                                               
				
							    									};
							    									
							    									
							    								
                            
			 											};





		


	   
	   
	   




	