function Form(form_id, error_id){
   this.form_id    = form_id;
   this.err_div_id = error_id;
   this.form_req = null;/*[
				 [id, validation(email|phone|length), parameters, message]
				       ['full_name' , 'length', 1    , Errors_en.f_name_req],
					   ['company'  , 'length', 1    , Errors_en.l_name_req],
					   ['address' , 'email' , null , Errors_en.email],
					   ['city' , 'email' , null , Errors_en.email],
					   ['province' , 'email' , null , Errors_en.email],
					   ['email' , 'email' , null , Errors_en.email],
					   ['email' , 'email' , null , Errors_en.email],
					   ['phone' , 'email' , null , Errors_en.email],
			        ]	*/
};

Form.prototype.submitForm = function(){
   /*
   * Checking if class was properly installed
   */
   if(this.err_div_id == null){
       alert('Div Element for displaying Errors isn\'t specified.');
	   return false;
   }
   if(this.form_id == null){
	  alert('Form ID isn\'t provided to class.');
	  return false;
   }
   this.form    = document.getElementById(this.form_id);
   this.err_div = document.getElementById(this.err_div_id);
   /*
   * Checking if major required IDs were setuped
   */
   if(this.form == null || !this.form || this.form == 'undefined'){
      alert('Form Element Wasn\'t found.');
	  return false;
   }
   if(this.err_div == null || !this.err_div || this.err_div == 'undefined'){
      alert('Form Error Div wasn\'t setuped properly.');
   }
   /*
   * Main Functionality
   */   
   this.isErr = false;
   this.err_messages = new Array();
   
   this.len = this.form_req.length;
   for(this.i=0; this.i < this.len; this.i++){
      this.elem    = document.getElementById(this.form_req[this.i][0]);
	  this.type    = this.form_req[this.i][1].toLowerCase();
	  this.param   = this.form_req[this.i][2];
	  this.err_msg = this.form_req[this.i][3];
	  
	  this.tmp_is_not_err = true;

	  switch(this.type){
	     case 'email':
		    this.tmp_is_not_err = Validation.isEmail(this.elem); 
		    break;
		 case 'length':
		    this.tmp_is_not_err = Validation.isLength(this.elem, this.param);
			break;
		 case 'phone':
		    this.tmp_is_not_err = Validation.isPhone(this.elem, this.param);
			break;
		 default:
		    this.tmp_is_not_err = Validation.isLength(this.elem, 1);
		    break;
	  }//SWITCH
	  
	  // DEBUG
	  // alert(this.form_req[this.i][0] + ':' + this.tmp_is_not_err);
	  if(this.tmp_is_not_err === true){
	     continue;
	  }
	  this.isErr        = true;
	  this.err_messages[this.err_messages.length] =  this.err_msg;
   }//FOR
   
   if(this.isErr === false){
      this.form.submit();
	  this.err_div.innerHTML     = '';
      this.err_div.style.display = 'none';
	  return true;
   }
   this.err_out = ['<h2 class="error_header">'+Errors_en.title+'</h2><ul id="ul_errors">'];
   this.len = this.err_messages.length;
   for(this.i=0; this.i < this.len; this.i++){
       this.err_out[this.err_out.length] = '<li>';
	   this.err_out[this.err_out.length] = this.err_messages[this.i];
	   this.err_out[this.err_out.length] = '</li>';
   }
   this.err_out[this.err_out.length] = '</ul>';
   
   this.err_div.innerHTML = this.err_out.join('');
   this.err_div.style.display = 'block';
   
};