/*
 * 
 * 		ВСЕ необходимые объекты и параметры, должен получать в конструкторе!!!!!!
 * 
 * 
 * форма должна отправляться по нажатию клавиши Enter
 * 
 * @param oQue - object MessageQueue 
 * @param idButon - идентификатор кнопки, по нажатию которой отправляется форма
 * @param idForm - идентификатор формы
 * @param sUrl - 
 * @param sCommand -
 * @param arrFields - 
 * @param bUpload - 
 * @param sRedirect - 
 * @param nameFunction -
 * 
 * */

var easy_ButtonSendForm = function( oQue, idButon, idForm, sUrl, sCommand, arrFields, bUpload, sRedirect, nameFunction ) {
	var _oQue = oQue;
	var _idButon = idButon;
	var _idForm = idForm;
	var _ref = this;
	var _arrFields = arrFields;
	var _sUrl = sUrl;
	var bUpload = bUpload || false;
	easy_ButtonSendForm.superclass.constructor.call( this, _idButon );
	
	this.sendForm = function() {
		var formObject = document.getElementById( _idForm );
//		formObject.innerHTML = formObject.innerHTML + '<input type="hidden" name="command" value="'+sCommand+'" />';
//		alert( formObject.innerHTML );
		var _refSendForm = this;
		
		this.Success = function(o) {
	 		var jsonString = o.responseText;
	 		try {
	  		var obj = YAHOO.lang.JSON.parse( jsonString );
		  	if ( obj.type == 'complex' ){
					var status = 'error';
					if ( obj.status == 'error' ) {
						status = Message.STATUS_ERR;
					}
					if ( obj.status == 'ok' ){
						if ( sRedirect ){
							if ( sRedirect == 'true' ){
								window.location.reload(true);
							}
							if ( sRedirect != 'true' && sRedirect != 'false' ){
								window.location = sRedirect.replace(/&amp;/g,'&');
							}
						}
						status = Message.STATUS_OK;
						
						if( nameFunction != null ){
							eval ( nameFunction + '( obj )' );
						}
					}
						if ( obj.status == 'ok' && ( 'User_Login' == sCommand || 'User_Logout' == sCommand ) ){
						}else{
							_oQue.add( new Message( status, obj.textMessage ) );
						}
					
					
				}
			}
			catch( e ) {
				_oQue.add( new Message( Message.STATUS_ERR, "Error while executing command: " + jsonString + e) );
		}
			return true;
		}
	
		this.Failure = function(o) {
			_oQue.add( new Message( Message.STATUS_ERR, 'Connection fail.' ) );
		}
	
	  var responseNoUpload = 
	  {
	    success: _refSendForm.Success,
	    failure: _refSendForm.Failure
	  }
	  var responseUpload =
	  {
	    upload: _refSendForm.Success,
	    failure: _refSendForm.Failure
	  }
	  var check = false;
	  try {
		aV = new FormValidator( _idForm, _arrFields );
		var check = aV.checkIsValid();
			if( check ) {
				YAHOO.util.Connect.setForm( formObject, bUpload );
				var _stUrl =  _sUrl.replace( /&amp;/g, "&" );
				var ch = '&';
				if( -1 == _stUrl.indexOf( '?' ) ) {
					ch = '?';
				}
				var response;
				_stUrl += ch + 'command=' + sCommand;
				if( !bUpload ) {
					 response = responseNoUpload;
				}else{
					 response = responseUpload;
				}
				var cObj = YAHOO.util.Connect.asyncRequest( 'POST', _stUrl, responseNoUpload );
			}
		}
		catch( e ) {
			 _oQue.add( e );
		}
		return false;
	}
	this.on("click", this.sendForm); 
}

YAHOO.lang.extend( easy_ButtonSendForm, YAHOO.widget.Button );





var easy_ButtonDel = function( oQue, idButton, idForm, url, sCommand, isRedirect, idHide ) {
	var _oQue = oQue;
	var _isRedirect = isRedirect;
	ref = this;
	easy_ButtonDel.superclass.constructor.call( this, idButton );
	

	this.del = function( evan, hash ) {
		var _ref = this;
		var _id = hash.id;
	 	verification = confirm( "Are you shure delete?" );
	 	
	  if( verification ){
	  	this.JSFailDel = function (o) {
		    alert( 'Connection fail: '+o );
		    return false;
		  }
		  this.JSSuccessDel = function (o) {
		    var jsonString = o.responseText;
		    try {
			  	var obj = YAHOO.lang.JSON.parse( jsonString );
			  	if ( 'complex' == obj.type  ) {  		
						var status = 'error';
						if (  'error' == obj.status ) { 
							status = Message.STATUS_ERR;
						}
						if ( 'ok' == obj.status ){ 
							status = Message.STATUS_OK;
							if ( _isRedirect ){
								if ( _isRedirect == 'true' ){
									window.location.reload(true);
								}
								if ( _isRedirect != 'true' && _isRedirect != 'false' ){
									window.location = _isRedirect.replace(/&amp;/g,'&');
								}
							}
							hideInline ( idHide );
							
						}
						_oQue.add( new Message( status, obj.textMessage ) );
					}
				}
				catch( e ) {
					_oQue.add( new Message( Message.STATUS_ERR, jsonString + e ) );
				}
				
				return true;
		  }
		  
		  var responseDel =
		  {
		    failure: this.JSFailDel,
		    success: this.JSSuccessDel
		  }

		  YAHOO.util.Connect.setForm( idForm ,false );
		  var ch = '&';
			if( -1 == url.indexOf( '?' ) ) {
				ch = '?';
			}
		  url += ch + 'command=' + sCommand;
		  var transaction = YAHOO.util.Connect.asyncRequest('POST', url, responseDel);	
	  }
	 }  
}

YAHOO.lang.extend( easy_ButtonDel, YAHOO.widget.Button );