/*****************************************************************************************************/
/*                                                                                                   */
/*                                     'CONTACT PANEL' CLASS                                         */          
/*                                                                                                   */
/*****************************************************************************************************/

function CONTACT(){
	var JSObject = this;
	this.type = "contact"; 
	this.arr_inputs = ["_inp_Firstname",
					   "_inp_Lastname",
					   "_inp_Gender",
					   "_inp_Email",
					   "_inp_Phone",
					   "_inp_Message"];
	
	this.form;
	this.DOMDoc; //document object from thickbox window
	
	this.save_btn;
	this.close_btn;
	this.close_link;
	
	this.tb_identifier;
	
	/*****************************************************************************************************/
	/*                                                                                                   */
	/*                                      FUNCTION INIT                                                */          
	/*                                                                                                   */
	/*****************************************************************************************************/
	this.init = function(){
		/*****************************************************************************************************/
		/*                                                                                                   */
		/*                                          INFORMATION                                              */          
		/*                                                                                                   */
		/*****************************************************************************************************/
		this._inp_Firstname = new INPUTFIELD(this, this.DOMDoc.getElementById(this.type+'_firstname'));
		this._inp_Lastname = new INPUTFIELD(this, this.DOMDoc.getElementById(this.type+'_lastname'));
		this._inp_Gender = new INPUTFIELD(this, this.DOMDoc.getElementsByName(this.type+'_gender'));
		this._inp_Email = new INPUTFIELD(this, this.DOMDoc.getElementById(this.type+'_email'));
		this._inp_Phone = new INPUTFIELD(this, this.DOMDoc.getElementById(this.type+'_phone'));
		this._inp_Message = new INPUTFIELD(this, this.DOMDoc.getElementById(this.type+'_message'));
		
		
		this.save_btn = $('input:button#contact_save_btn',this.DOMDoc).get(0);
		this.close_btn = $('img[id="contact_close_btn"]',this.DOMDoc).get(0);
		this.close_link = $('a[id="contact_close_btn"]',this.DOMDoc).get(0);
		this.form = this.save_btn.form;
		$("#"+this.form.id,this.DOMDoc).bind("submit",function(){return false;});
		
		//apply css effects
		JSInterface.StyleSheet.init(this.DOMDoc);
		
		this.initCreate();
		
		//add thickbox identifier
		JSInterface.setThickboxID(this.tb_identifier);
		JSInterface.checkThickBoxHeight = null;
		
	}
	
	
	/*****************************************************************************************************/
	/*                                                                                                   */
	/*                                  FUNCTION CREATE PANEL                                            */          
	/*                                                                                                   */
	/*****************************************************************************************************/
	this.initCreate = function(){
		
		/*****************************************************************************************************/
		/*                                                                                                   */
		/*                                      INPUT 'FIRSTNAME' ACTIONS                                    */          
		/*                                                                                                   */
		/*****************************************************************************************************/
		var input = this._inp_Firstname.input;
		$(input).data("error_row",this.type+"_firstname_row");
		this._inp_Firstname.setRequired("yes"); 
		this._inp_Firstname.addData(input.value);
		if (this._inp_Firstname.data.length > 0){
			this._inp_Firstname.setReadySubmit(true);
		}
		else{
			this._inp_Firstname.setReadySubmit(false);
		}
		this._inp_Firstname.setValidationType("alpha_extended");
		var extentedChars = String(" .-'Ã€Ã?Ã‚Ã„Ã†Ã‡Ã‰ÃˆÃŠÃ‹ÃŒÃ?ÃŽÃ Ã¡Ã¢Ã£Ã¤Ã¦Ã§Ã¨Ã©ÃªÃ«Ã¬Ã­Ã®Ã¯Ã²Ã³Ã´ÃµÃ¶Ã¹Ã»Ã¼ÃºÃ½").split("");
		this._inp_Firstname.addExtendedChars(extentedChars);
		var err_1 = JSInterface.MultiLanguage.translate('Firstname')+" : "+JSInterface.MultiLanguage.translate('This field is required')
		var err_2 = JSInterface.MultiLanguage.translate('Firstname')+" : "+JSInterface.MultiLanguage.translate("Only letters, spaces, hyphens(-), dots(.) and apostrophes(') are allowed")
		var errors = [err_1,err_2];
		this._inp_Firstname.addErrors(errors);
		this._inp_Firstname.setErrorsContainer(this.type+"_firstname_container");
		this._inp_Firstname.setBeforeBlurFunction(function(){JSObject.runBeforeBlur(this);});
		this._inp_Firstname.setAfterBlurFunction(function(){JSObject.runAfterBlur(this);});
		this._inp_Firstname.initActions();
		
		
		
		/*****************************************************************************************************/
		/*                                                                                                   */
		/*                                      INPUT 'LASTNAME' ACTIONS                                     */          
		/*                                                                                                   */
		/*****************************************************************************************************/
		var input = this._inp_Lastname.input;
		$(input).data("error_row",this.type+"_lastname_row");
		this._inp_Lastname.setRequired("yes"); 
		this._inp_Lastname.addData(input.value);
		if (this._inp_Lastname.data.length > 0){
			this._inp_Lastname.setReadySubmit(true);
		}
		else{
			this._inp_Lastname.setReadySubmit(false);
		}
		this._inp_Lastname.setValidationType("alpha_extended");
		var extentedChars = String(" .-'Ã€Ã?Ã‚Ã„Ã†Ã‡Ã‰ÃˆÃŠÃ‹ÃŒÃ?ÃŽÃ Ã¡Ã¢Ã£Ã¤Ã¦Ã§Ã¨Ã©ÃªÃ«Ã¬Ã­Ã®Ã¯Ã²Ã³Ã´ÃµÃ¶Ã¹Ã»Ã¼ÃºÃ½").split("");
		this._inp_Lastname.addExtendedChars(extentedChars);
		var err_1 = JSInterface.MultiLanguage.translate('Lastname')+" : "+JSInterface.MultiLanguage.translate('This field is required')
		var err_2 = JSInterface.MultiLanguage.translate('Lastname')+" : "+JSInterface.MultiLanguage.translate("Only letters, spaces, hyphens(-), dots(.) and apostrophes(') are allowed")
		var errors = [err_1,err_2];
		this._inp_Lastname.addErrors(errors);
		this._inp_Lastname.setErrorsContainer(this.type+"_lastname_container");
		this._inp_Lastname.setBeforeBlurFunction(function(){JSObject.runBeforeBlur(this);});
		this._inp_Lastname.setAfterBlurFunction(function(){JSObject.runAfterBlur(this);});
		this._inp_Lastname.initActions();
		
		
		
		/*****************************************************************************************************/
		/*                                                                                                   */
		/*                                      INPUT 'EMAIL' ACTIONS                                        */          
		/*                                                                                                   */
		/*****************************************************************************************************/
		var input = this._inp_Email.input;
		$(input).data("error_row",this.type+"_email_row");
		this._inp_Email.setRequired("yes");
		this._inp_Email.addData(input.value);
		if (this._inp_Email.data.length > 0){
			this._inp_Email.setReadySubmit(true);
		}
		else{
			this._inp_Email.setReadySubmit(false);
		}
		this._inp_Email.setValidationType("email");
		var err_1 = JSInterface.MultiLanguage.translate('Email')+" : "+JSInterface.MultiLanguage.translate('This field is required')
		var err_2 = JSInterface.MultiLanguage.translate('Email')+" : "+JSInterface.MultiLanguage.translate("Only letters, numbers, underscores(_), dots(.) and one @ are allowed")
		var errors = [err_1,err_2];
		this._inp_Email.addErrors(errors);
		this._inp_Email.setErrorsContainer(this.type+"_email_container");
		this._inp_Email.setBeforeBlurFunction(function(){JSObject.runBeforeBlur(this);});
		this._inp_Email.setAfterBlurFunction(function(){JSObject.runAfterBlur(this);});
		this._inp_Email.initActions();
		
		
		
		/*****************************************************************************************************/
		/*                                                                                                   */
		/*                                   INPUT 'PHONE' ACTIONS                                           */          
		/*                                                                                                   */
		/*****************************************************************************************************/
		var input = this._inp_Phone.input;
		$(input).data("error_row",this.type+"_phone_row");
		this._inp_Phone.setRequired("no"); 
		this._inp_Phone.addData(input.value);
		this._inp_Phone.setReadySubmit(true);
		this._inp_Phone.setValidationType("numeric_extended");
		var extentedChars = String("/-.").split("");
		this._inp_Phone.addExtendedChars(extentedChars);
		var err_1 = JSInterface.MultiLanguage.translate('Phone')+" : "+JSInterface.MultiLanguage.translate('This field is required')
		var err_2 = JSInterface.MultiLanguage.translate('Phone')+" : "+JSInterface.MultiLanguage.translate("Only numbers, slashes(/), hyphens(-) and dots(.) are allowed")
		var errors = [err_1,err_2];
		this._inp_Phone.addErrors(errors);
		this._inp_Phone.setErrorsContainer(this.type+"_phone_container");
		this._inp_Phone.setBeforeBlurFunction(function(){JSObject.runBeforeBlur(this);});
		this._inp_Phone.setAfterBlurFunction(function(){JSObject.runAfterBlur(this);});
		this._inp_Phone.initActions();
		
		
		
		/*****************************************************************************************************/
		/*                                                                                                   */
		/*                                    TEXTAREA 'MESSAGE' ACTIONS                                     */          
		/*                                                                                                   */
		/*****************************************************************************************************/
		var input = this._inp_Message.input;
		$(input).data("error_row",this.type+"_message_row");
		this._inp_Message.setRequired("yes"); 
		//this._inp_Message.addData(input.value);
		this._inp_Message.setReadySubmit(false);
		this._inp_Message.setValidationType("normal");
		var err_1 = JSInterface.MultiLanguage.translate('Message')+" : "+JSInterface.MultiLanguage.translate('This field is required')
		var errors = [err_1,""];
		this._inp_Message.addErrors(errors);
		this._inp_Message.setErrorsContainer(this.type+"_message_container");
		this._inp_Message.setBeforeBlurFunction(function(){JSObject.runBeforeBlur(this);});
		this._inp_Message.setAfterBlurFunction(function(){JSObject.runAfterBlur(this);});
		this._inp_Message.initActions();
		
		
		/*****************************************************************************************************/
		/*                                                                                                   */
		/*                                     INPUT RADIO 'GENDER' ACTIONS                                  */          
		/*                                                                                                   */
		/*****************************************************************************************************/
		this._inp_Gender.setRequired("yes"); 
		this._inp_Gender.setReadySubmit(false);
		var err_1 = JSInterface.MultiLanguage.translate('Gender')+" : "+JSInterface.MultiLanguage.translate('This field is required')
		var errors = [err_1,""];
		this._inp_Gender.addErrors(errors);
		this._inp_Gender.setErrorsContainer(this.type+"_gender_container");
		this._inp_Gender.initActions();
		var Gender = this._inp_Gender;
		for (var i=0; i<this._inp_Gender.input.length; i++){
			this._inp_Gender.input[i].onclick = function(){
				$("*[id="+$(this).data("error_row")+"]",JSObject.DOMDoc).each(function(){
																					$(this).removeClass("error");
																					}); 
				
				Gender.hideError();
				Gender.setReadySubmit(true);	
				Gender.addData(this.value);
			}
			
			if (this._inp_Gender.input[i].checked){
				Gender.addData(this._inp_Gender.input[i].value);
				Gender.setReadySubmit(true);
			}
			
			$(this._inp_Gender.input[i]).data("error_row",this.type+"_gender_row");
		}
		
		
		/*****************************************************************************************************/
		/*                                                                                                   */
		/*                                    INPUT BUTTON 'SEND' ACTIONS                                    */          
		/*                                                                                                   */
		/*****************************************************************************************************/
		var save_mouseDown = false;
		$(this.save_btn).mousedown(function(){
										save_mouseDown = true;
										$(this).removeClass('form_btn_over');
										$(this).addClass('form_btn_press');
										//$(this).css("border","1px solid #999999");
										$(this).unbind("mouseleave");
										$(this).bind("mouseleave",function(){
																		   
																		   $(this).removeClass('form_btn_press');
																		   //this.form.focus();
																		   
																		   })
										
										
										$(JSObject.DOMDoc.body).mouseup(function(){
																		 
																		 if (save_mouseDown == true){
																			save_mouseDown = false;
																			$(JSObject.save_btn).unbind("mouseleave");
																			$(JSObject.DOMDoc.body).unbind("mouseup");
																			$(JSObject.save_btn).removeClass('form_btn_press');
																			//$('form',JSObject.DOMDoc).get(0).focus();
																			JSObject.save_btn.disabled = true;
																			JSObject.validate();
																		 }
																		   })
										
									});
		
		
		
		$(this.save_btn).mouseup(function(){
													
										if (save_mouseDown == true){
											save_mouseDown = false;
											$(this).unbind("mouseleave");
											$(JSObject.DOMDoc.body).unbind("mouseup");
											$(this).removeClass('form_btn_press');
											//this.form.focus();
											this.disabled = true;
											JSObject.validate();
										}
									});
		
		
		/*****************************************************************************************************/
		/*                                                                                                   */
		/*                                    IMG BUTTON 'CLOSE' ACTIONS                                     */          
		/*                                                                                                   */
		/*****************************************************************************************************/
		$(this.close_btn).bind("click", function(){
													JSInterface.setThickboxID(JSObject.tb_identifier);
													JSInterface.removeThickboxID();
													JSInterface.closeThickbox();
												});
		
		/*****************************************************************************************************/
		/*                                                                                                   */
		/*                                      LINK 'CLOSE' ACTIONS                                         */          
		/*                                                                                                   */
		/*****************************************************************************************************/
		$(this.close_link).bind("click", function(){
													JSInterface.setThickboxID(JSObject.tb_identifier);
													JSInterface.removeThickboxID();
													JSInterface.closeThickbox();
												});
		
	}
	
	
	
	/*****************************************************************************************************/
	/*                                                                                                   */
	/*                          FUNCTION RUN BEFORE BLUR  -  INPUTS                                      */          
	/*                                                                                                   */
	/*****************************************************************************************************/
	this.runBeforeBlur = function(obj){
		if (obj.validation_type == "integer" || obj.validation_type == "float"){
			//
		}
		else{
			//
		}
	}
	
	/*****************************************************************************************************/
	/*                                                                                                   */
	/*                              FUNCTION RUN AFTER BLUR   -  INPUTS                                  */          
	/*                                                                                                   */
	/*****************************************************************************************************/
	this.runAfterBlur = function(obj){
		if (obj.validation_type == "integer" || obj.validation_type == "float"){
			if (obj.submit_ready == false){
				$("*[id="+$(obj.input).data("error_row")+"]",JSObject.DOMDoc).each(function(){
																					$(this).addClass("error");
																					});
			}
			else{
				$("*[id="+$(obj.input).data("error_row")+"]",JSObject.DOMDoc).each(function(){
																					$(this).removeClass("error");
																					});
			}
			
			if (isNaN(obj.input.value) || $.trim(obj.input.value) == "") obj.input.value = obj.minval;
			
			if (parseFloat(obj.input.value) > obj.maxval) obj.input.value = obj.maxval;
			if (parseFloat(obj.input.value) < obj.minval) obj.input.value = obj.minval;
		}
		else{
			if (obj.submit_ready == false && obj.data.length > 0){
				$("*[id="+$(obj.input).data("error_row")+"]",JSObject.DOMDoc).each(function(){
																					$(this).addClass("error");
																					});
			}
			else{
				$("*[id="+$(obj.input).data("error_row")+"]",JSObject.DOMDoc).each(function(){
																					$(this).removeClass("error");
																					});
			}
		}
		
	}
	
	
	
	/*****************************************************************************************************/
	/*                                                                                                   */
	/*                                 FUNCTION VALIDATE INFORMATION                                     */          
	/*                                                                                                   */
	/*****************************************************************************************************/
	this.validate = function(){
		
		var countErrors = 0;
		// aflam cate erori sunt in formular
		for (var i=0; i<this.arr_inputs.length; i++){
			var obj = this[this.arr_inputs[i]];
			//alert(this.arr_inputs[i])
			if (obj.data.length == 0 && obj.required=="yes"){
				obj.displayError(obj.errors[0]);
				obj.setReadySubmit(false);
				countErrors++;
				//alert("1 "+this.arr_inputs[i]);
			}
			else if (obj.submit_ready == false){ 
				countErrors++;
				//alert("3 "+this.arr_inputs[i]);
			}
			
			if (obj.submit_ready == false){
				$("*[id="+$(obj.input).data("error_row")+"]",JSObject.DOMDoc).each(function(){
																					$(this).addClass("error");
																					});	
			}
			else{
				$("*[id="+$(obj.input).data("error_row")+"]",JSObject.DOMDoc).each(function(){
																					$(this).removeClass("error");
																					});	
			}
		}
		
		
		//alert(countErrors);
		if (countErrors == 0){
			//server validation
			JSObject.sendData();
		}
		else{
			JSObject.save_btn.disabled = false;	
			$(JSObject.save_btn).removeClass('form_btn_press');
			
			//resize Thickbox
			var divContainer = $('#container', $('#TB_iframeContent').get(0).contentWindow.document).get(0);
			divContainer.style.height = "";
			JSInterface.initThickbox('iframe',tb_getPageSize[1] - 20);
		}
	}
	
	
	/*****************************************************************************************************/
	/*                                                                                                   */
	/*                                      FUNCTION SUBMIT FORM                                         */          
	/*                                                                                                   */
	/*****************************************************************************************************/
	this.submitForm = function(){
		
		return JSInterface.AjaxUpload.dosubmit(JSObject.form, {'onStart' : JSObject.startUploadingData, 'onComplete' : JSObject.completeUploadingData});
		
	}
	
	
	/*****************************************************************************************************/
	/*                                                                                                   */
	/*                                      FUNCTION SEND DATA                                           */          
	/*                                                                                                   */
	/*****************************************************************************************************/
	this.sendData = function(){
		
		$("#"+this.form.id,this.DOMDoc).unbind("submit");
		$("#"+this.form.id,this.DOMDoc).bind("submit",function(){JSObject.submitForm();});
		$("#"+this.form.id,this.DOMDoc).submit();
		this.save_btn.disabled = false;
				
	}
	
	
	/*****************************************************************************************************/
	/*                                                                                                   */
	/*                                FUNCTION START UPLOADING DATA                                      */          
	/*                                                                                                   */
	/*****************************************************************************************************/
	this.startUploadingData = function(){
		// make something useful before submit (onStart)
		
		$('#loading_container',JSObject.DOMDoc).remove();
		$($('body',JSObject.DOMDoc).get(0)).append('<div id="loading_container" style="position:absolute"><table width="100%" height="100%" cellpading="0" cellspacing="0"><tr><td align="center" class="loaderOverlay">'+JSInterface.MultiLanguage.translate('Sending data')+'<br><br><img src="'+JSInterface.localpath+'includes/images/loading_animation.gif" /></td></tr></table></div>');
		$('#loading_container',JSObject.DOMDoc).height($('#container',JSObject.DOMDoc).height());
		$('#loading_container',JSObject.DOMDoc).width($('#container',JSObject.DOMDoc).width());
		
		var top = 0;
		var left = 0;
		var td = $('#container',JSObject.DOMDoc).get(0);
		while (td.offsetParent){
			top += td.offsetTop;
			left += td.offsetLeft;
			td = td.offsetParent;
		}
		
		$('#loading_container',JSObject.DOMDoc).css('top',top);
		$('#loading_container',JSObject.DOMDoc).css('left',left);
		
		
		return true;
	}
	
	
	
	/*****************************************************************************************************/
	/*                                                                                                   */
	/*                              FUNCTION COMPLETE UPLOADING DATA                                     */          
	/*                                                                                                   */
	/*****************************************************************************************************/
	this.completeUploadingData = function(response){
		
		$("#"+JSObject.form.id,JSObject.DOMDoc).unbind("submit");
		$("#"+JSObject.form.id,JSObject.DOMDoc).bind("submit",function(){return false;});
		
		var response = Boolean(Number(String(response)));
		
		if (response == true){
			var message = JSInterface.MultiLanguage.translate('Thank you for your message. You will get an answer as soon as posible. In 5 seconds this page will close');
				message = message.replace(/<script>/g,"<font style='color:#FF0000' id='page_timer'>");
				message = message.replace(/<\/script>/g,'</font>');
		}
		else{
			var message = JSInterface.MultiLanguage.translate('There was an error. Please try again in 5 seconds');
				message = message.replace(/<script>/g,"<font style='color:#FF0000' id='page_timer'>");
				message = message.replace(/<\/script>/g,'</font>');
		}
		
		
		var html = '<table width="100%" height="100%" cellpading="0" cellspacing="0">'
			html +='	<tr>'
			html +='		<td align="center" class="loaderOverlay">'
			html +='			<table cellpading="0" cellspacing="0">'
			html +='				<tr>'
			html +='					<td style="background-image:none; background-color:#FFFFFF; border:1px solid #CCCCCC; padding:30px"><span class="formDarkGreyText">'+message+'</span></td>'
			html +='				</tr>'
			html +='			</table>'
			html +='		</td>'
			html +='	</tr>'
			html +='</table>'
		
		//show message
		$('#loading_container',JSObject.DOMDoc).html(html);
		
		
		
		$('#page_timer',JSObject.DOMDoc).unbind("countTimer");
		$('#page_timer',JSObject.DOMDoc).bind("countTimer", function(){
																		var seconds = $(this).data("seconds")
																		
																		if (seconds - 1 >= 1){
																			$(this).html(seconds-1)
																			$(this).data("seconds",seconds-1)
																		}
																		else{
																			$(this).unbind("countTimer")
																			clearTimeout($(this).data("timerInterval"))
																			$(this).removeData("timerInterval")
																			
																			//redirect to homepage
																			if (response == true){
																				$(JSObject.close_btn).trigger('click');
																			}
																			else{
																				//remove loader
																				$('#loading_container',JSObject.DOMDoc).remove();		
																			}
																		}
																	 })
		
		$('#page_timer',JSObject.DOMDoc).data("timerInterval", setInterval(function(){$('#page_timer',JSObject.DOMDoc).trigger("countTimer")},1000));
		$('#page_timer',JSObject.DOMDoc).data("seconds",5);
		
		
	}
}
