
//////////////////////////////////////////////////////////////////////////////////////////////
//



var isMSIE = document.attachEvent != null;
var isGecko = !document.attachEvent && document.addEventListener;


//////////////////////////////////////////////////////////////////////////////////////////////
function trim(sText){
	var sBeginExpr = /^\s+/;
	var sEndExpr = /\s+$/;
	
	sText = sText.replace( sBeginExpr , '');
	sText = sText.replace( sEndExpr , '');
	
	return sText;
}

//////////////////////////////////////////////////////////////////////////////////////////////
function isEmail(sEmail){
	return (
		sEmail &&
		sEmail.indexOf('@') > 0 &&
		sEmail.match(/^(?:[-a-z\d\+\*\/\?!{}`~_%&'=^$#]+(?:\.[-a-z\d\+\*\/\?!{}`~_%&'=^$#]+)*)@(?:[-a-z\d_]+\.){1,60}[a-z]{2,6}$/)
	) ? true : false;
}



//////////////////////////////////////////////////////////////////////////////////////////////
//
//		Форма обратной связи
//
var	FeedBack = new Object();
	FeedBack.elForm = document.forms['FeedBack'];
	FeedBack.mFormEls = FeedBack.elForm.elements;
	
/*****************************************************************************************/	
	FeedBack.sendMessage = function(){
		var	oValues = new Object();
			oValues.name = trim( FeedBack.mFormEls['name'].value );
			oValues.phone = trim( FeedBack.mFormEls['phone'].value );
			oValues.mail = trim( FeedBack.mFormEls['mail'].value );
			oValues.text = trim( FeedBack.mFormEls['text'].value );
			
		
		var	oDialog = new Object();
			oDialog.element = document.getElementById('feedBackDialog');
			oDialog.className = 'hidden';
			
		/*********/
			oDialog.showPreloader = function(){
				var sText = 'Sending.'
				var iPoints = 8;
				
				oDialog.className = 'preloader';
				oDialog.element.className = oDialog.className;
				oDialog.element.innerHTML = sText;
				oDialog.intervalId = setInterval( _act , 200);
				
				function _act(){
					if(oDialog.className == 'preloader'){
						iPoints--;
						iPoints = (iPoints || 8);
						oDialog.element.innerHTML = sText + ('........'.substr(iPoints));
					} else 
						if (oDialog.intervalId) clearTimeout(oDialog.intervalId);
				}
			}
			
		/*********/
			oDialog.showError = function(sErrors){
				oDialog.className = 'error';
				oDialog.element.className = oDialog.className;
				oDialog.element.innerHTML = sErrors;
			}
		
		/*********/
			oDialog.showSuccess = function(){
				oDialog.className = 'success';
				oDialog.element.className = oDialog.className;
				oDialog.element.innerHTML = '<p>Message was sent.<br></p>';
//				oDialog.element.getElementsByTagName('A')[0].onclick = _restoreForm;
			}
			
		/*********/
			oDialog.hide = function(){	
				oDialog.element.className = 'hidden';
				oDialog.element.innerHTML = '';
				if(oDialog.intervalId) clearTimeout(oDialog.intervalId);
			}	

			
		if( _checkForm() ){

			_hideForm();
			oDialog.showPreloader();
			_sendFeedBackRequest();
	
		}

	/*********************************************************/
		function _sendFeedBackRequest(){

			var req = new JsHttpRequest();

			req.onreadystatechange = function() {
				if ( req.readyState == 4 ) {
					
					if ( req.responseJS  && req.responseJS.complete){
						oDialog.showSuccess();
						_showForm();
						_clearForm();
					} else {
						oDialog.showError('<p>Sending error. Try again.<br></p>');
						_showForm();
					}
				}
			}

			req.caching = false;
			
			req.open(null, _getScriptUrl() , true);

			req.send( 
				{
					'sendFeed'	: '1' ,
					'name'		: oValues.name ,
					'mail'		: oValues.mail ,
					'phone'		: oValues.phone ,
					'text'		: oValues.text 
				} 
			);
			
		/*********/
			function _getScriptUrl(){
				var	sUrl = (FeedBack.elForm.action || window.location.href);
					if( sUrl.indexOf('http://') != -1)
						sUrl = sUrl.substr(7);
					sUrl = sUrl.substr( sUrl.indexOf('/') );
				return sUrl;
			}
		}
	
	
	/*********************************************************/
		function _clearForm(){
			FeedBack.mFormEls['name'].value = '';
			FeedBack.mFormEls['phone'].value = '';
			FeedBack.mFormEls['mail'].value = '';
			FeedBack.mFormEls['text'].value = '';
		}
	
	/*********************************************************/
		function _hideForm(){
			FeedBack.elForm.className = 'inProcess';
			for(var i = 0 ; i < FeedBack.mFormEls.length ; i++ )
				FeedBack.mFormEls[i].disabled = true;
			
		}
	
	/*********************************************************/
		function _showForm(){
			FeedBack.elForm.className = '';
			for(var i = 0 ; i < FeedBack.mFormEls.length ; i++ ){
				FeedBack.mFormEls[i].disabled = false;
			}
		}	
	
	/*********************************************************/
		function _restoreForm(){
			_showForm();
			oDialog.hide();
		}
		
	/*********************************************************/
		function _checkForm(){
			var sErrors = '';
			
			if( oValues.name.length < 2) 	sErrors += ', name';
			if( oValues.mail && !isEmail(oValues.mail) )	sErrors += ', correct e-mail';
			if( oValues.text.length < 2) 	sErrors += ', message text';
			
			if( sErrors.length ){
				oDialog.showError( '<p>Please fill ' + sErrors + '.<br></p>' );
				return false;
				
			} else 
				return true;
		}
		
	
	}

/*****************************************************************************************/	
	
	FeedBack.elForm.onsubmit = function(){
		FeedBack.sendMessage();
		return false;
	};
	


