/**
 * @author alltouch
 */


function Admin(){
	
	this . options = new Object();
	this . options . url = piro . options . path + 'admin.php';
	
	this . cacheShow = null;
	var BodyBlock = null;
	
	this . updateShop = function(){
		piro . loading . hidePage('updateShop');
		piro . ajax(
			piro . admin . options . url,
			{
				'type' : 'updateShop',
				'shopId' : $('form.update select').val(),
				'text' : $('form.update textarea').val()
			},
			function(obj){
				piro . loading . showPage('updateShop');
				piro . alert . loadCustom('success');
			}
		);
	}
	
	this . load = function(obj){
		
		piro . loading . hidePage('admin');
		
		var json = {
			'type' : 'page',
			'id' : obj.pageid
		};
		
		if(piro . page. params . query){
			json . query = piro . page. params . query; 
		}

		if(piro . page. params . type){
			json . typeSearch = piro . page . params . type; 
		}
		
		if(piro . page. params . orderType){
			json . orderType = piro . page . params . orderType; 
		}
		
		if(piro . page. params . field){
			json . field = piro . page . params . field; 
		}
		
		piro . ajax(
			piro . admin . options . url,
			json,
			piro . admin . set
		)
	}
	
	this . set = function(obj){
		if(!BodyBlock){
			BodyBlock = $('#body');
		}
		BodyBlock . html( obj . content . text);
		
		piro.log(obj)
		piro . admin . cacheShow = obj;
		
		if (piro.page.params.pageid == 358) {  //shop update
			var l = obj.items.length;
			var text = '';
			for(var i = 0; i<l ; i++){
				var item = obj.items[i];
				text += '<option value="' + item . id + '">' + item . name + '</option>';
			}
			
			$('form.update select[name=shop]').html(text);	
		}
		
		if (piro.page.params.pageid == 398) {
			var _aError = new aError();
			_aError.loadCustomOpt('formAddCard');
			_aError . addListeners();
			$('#formAddCard')[0].aError = _aError;
		}
		
		if(piro.page.params.pageid == 397){
			if(piro.page.params.query){
				$('#findCardQuery').val(piro.page.params.query);
			}
			
			var l = obj.items.length;
			var text = '';
			for(var i = 0; i<l ; i++){
				var item = obj.items[i];
				text += '<option value="' + i + '">' + item . cardNumber + ': ' + item . surname + ' ' + item.name + '</option>';
			}
			
			$('#f_cardNumber').html(text);
			piro . admin . showEditBlock(obj.items[0], $('#formEditCard'));

			var _aError = new aError();
			_aError.loadCustomOpt('formEditCard');
			_aError . addListeners();
			$('#formEditCard')[0].aError = _aError;
		}
		
		if(piro.page.params.pageid == 361){
			if(piro.page.params.query){
				$('#findCardQuery').val(piro.page.params.query);
			}
			
			var l = obj.items.length;
			var text = '';
			for(var i = 0; i<l ; i++){
				var item = obj.items[i];
				text += '<option value="' + i + '">' + item . id + ': ' + item . showDate + ' - ' + item . name + ' ' + item . name2 + '</option>';
			}
			
			$('#f_showId').html(text);
			
			var txt = '';
			var t = 0;
			for(var i = 0; i<24; i++){
				t = i;
				if(t<10){
					t = '0' + i;
				}
				txt += '<option value="' + t + ':00">' + t + ':00</option>';
				txt += '<option value="' + t + ':30">' + t + ':30</option>';
			}
			$('#f_from,#f_to').append(txt);
			
			piro . admin . showEditShowBlock(obj.items[0]);
			
			var user = piro . auth . mode();
			if(user . type == 6 || user . type == 9){
				if (user . type == 6 && typeof obj.items[0] != 'undefined') {
					$('#f_editShowDelete').addClass('show');
				}
				
				$('#f_editShowSubmit').addClass('show');
				
				var _aError = new aError();
				_aError.loadCustomOpt('formEditShow');
				_aError . addListeners();
				$('#formEditShow')[0].aError = _aError;
			} else {
				$('#formEditShow').find('input,textarea,select').not('#f_showId').attr('disabled','disabled');
			}			
			
			piro . call('InitDateShowFields')
		}
		
		if(piro . page . params . pageid == 357){
			$('#f_agreed').trigger('change');
			$('#f_clientType2').trigger('change');
			
			var txt = '';
			var t = 0;
			for(var i = 0; i<24; i++){
				t = i;
				if(t<10){
					t = '0' + i;
				}
				txt += '<option value="' + t + ':00">' + t + ':00</option>';
				txt += '<option value="' + t + ':30">' + t + ':30</option>';
			}
			$('#f_from,#f_to').append(txt);
			
			var _aError = new aError();
			_aError.loadCustomOpt('formMakeShow');
			_aError . addListeners();
			$('#formMakeShow')[0].aError = _aError;
			
			piro . call('InitDateShowFields')
		}
		
		piro . loading . showPage('admin');
		piro . page . resize();
		piro . call('InitFormFields');
		piro . call('InitAdminBody');
		
		// temporary bug fix
		switch (piro.page.params.pageid){
			case '397':
			case '398':
				$('#f_clientType1').trigger('change');
				$('#f_sendLetters').trigger('change');
				$('#f_knowHow').trigger('change');
				break;
			case '361':
				$('#f_clientType2').trigger('change');
				$('#f_agreed').trigger('change');
				$('#f_showType').trigger('change');
				$('#f_knowHow').trigger('change');
				break;
			case '374':
				$('#f_sendLetters').trigger('change');
				break;
		}
	}
	
	this . addShow = function(obj){
		
		var _aError = $('#formMakeShow')[0].aError;
		_aError . clear();
		_aError . check(true);
		if(_aError . error){
			piro . alert . loadCustom ('incorrectFormValues');
			return false;
		}
		
		piro . loading . hidePage('admin-add-show');
		piro . ajax(
			piro . admin . options . url,
			{
				'type' : 'addShow',
				'userData' : obj
			},
			function(answer){
				piro . loading . showPage('admin-add-show');
				piro . alert . loadCustom('success');
			},
			function(obj){
				$('#formMakeShow .red-border').removeClass('red-border');
				
				var obj = eval('[' + obj.responseText + ']')[0]; //bad

				piro . log(obj)
				
				var txt = '<b>Некоторые поля заполнены с ошибками:</b><ul>';
				var l = obj.countErrors;
				for(var i = 0; i<l ; i++){
					txt += '<li>' + obj.errors[i].field + ': ' + obj.errors[i].text + '</li>';
					$('#formMakeShow [name=' + obj.errors[i].field + ']').addClass('red-border');
				}
				txt += '</ul>';
				$('#formMakeShow div.errors').html(txt).show();
				
				
				piro . loading . showPage('admin-add-show');
			}
		)
	}
	
	this . showEditShowBlock = function(obj, form){
		
		var form = $('#formEditShow');
		
		piro . log (obj)
		
		for(var i in obj){
			
			var temp = form.find('[name=' + i + ']');
			if(temp.length == 0){
				continue;
			}
			
			if(temp.is('input[type=checkbox]')){
				if(obj[i]>0){
					temp . attr('checked', 'checked');
				}
			} else if(temp.is('input,textarea')){
				temp.val(obj[i]);
			} else if(temp.is('select')){
				temp.find('option[value=' + obj[i] + ']').attr('selected','selected');
				temp.trigger('change');								
			}
		}
	}
	
	this.saveShowBlock = function(obj){
		
		var user = piro . auth . mode();
		if (!(user.type == 6 || user.type == 9)) {
			return ;
		}
		
		var _aError = $('#formEditShow')[0].aError;
		_aError . clear();
		_aError . check(true);
		if(_aError . error){
			piro . alert . loadCustom ('incorrectFormValues');
			return false;
		}
		
		piro . loading . hidePage('admin-update-show');
		piro . ajax(
			piro . admin . options . url,
			{
				'type' : 'updateShow',
				'userData' : obj
			},
			function(answer){
				piro . loading . showPage('admin-update-show');
				piro . alert . loadCustom('success');
				setTimeout(function(){
					location . reload()
				},2000);
			},
			function(obj){
				$('#formEditShow .red-border').removeClass('red-border');
				
				var obj = eval('[' + obj.responseText + ']')[0]; //bad

				piro . log(obj)
				
				var txt = '<b>Некоторые поля заполнены с ошибками:</b><ul>';
				var l = obj.countErrors;
				for(var i = 0; i<l ; i++){
					txt += '<li>' + obj.errors[i].field + ': ' + obj.errors[i].text + '</li>';
					$('#formEditShow [name=' + obj.errors[i].field + ']').addClass('red-border');
				}
				txt += '</ul>';
				$('#formEditShow div.errors').html(txt).show();
				
				
				piro . loading . showPage('admin-update-show');
			}
		)
	}
	
	this.deleteShow = function(obj){
		
		var user = piro . auth . mode();
		if (user.type != 6) {
			return ;
		}
		
		piro . loading . hidePage('admin-update-show');
		piro . ajax(
			piro . admin . options . url,
			{
				'type' : 'deleteShow',
				'userData' : obj
			},
			function(answer){
				piro . loading . showPage('admin-update-show');
				piro . alert . loadCustom('success');
				setTimeout(function(){
					location . reload()
				},2000);
			}
		)
	}

	this.showEditBlock = function(obj, form){
		
		piro . log (obj)
		
		for(var i in obj){
			
			var temp = form.find('[name=' + i + ']');
			if(temp.length == 0){
				continue;
			}
			
			if(temp.is('input[type=checkbox]')){
				if(obj[i]>0){
					temp . attr('checked', 'checked');
				} else {
					temp . removeAttr('checked');
				}
			} else if(temp.is('input,textarea')){
				temp.val(obj[i]);
			} else if(temp.is('select')){
				temp.find('option[value=' + obj[i] + ']').attr('selected','selected');
				temp.trigger('change');								
			}
		}
	}
	
	this.saveCardBlock = function(obj){
		
		var _aError = $('#formEditCard')[0].aError;
		_aError . clear();
		_aError . check(true);
		if(_aError . error){
			piro . alert . loadCustom ('incorrectFormValues');
			return false;
		}
		
		piro . loading . hidePage('admin-update-card');
		piro . ajax(
			piro . admin . options . url,
			{
				'type' : 'updateCard',
				'userData' : obj
			},
			function(answer){
				piro . loading . showPage('admin-update-card');
				piro . alert . loadCustom('success');
				
				setTimeout(function(){
					location . reload()
				},2000);
			},function(obj){
				$('#formEditCard .red-border').removeClass('red-border');
				
				var obj = eval('[' + obj.responseText + ']')[0]; //bad

				piro . log(obj)
				
				var txt = '<b>Некоторые поля заполнены с ошибками:</b><ul>';
				var l = obj.countErrors;
				for(var i = 0; i<l ; i++){
					txt += '<li>' + obj.errors[i].field + ': ' + obj.errors[i].text + '</li>';
					$('#formEditCard [name=' + obj.errors[i].field + ']').addClass('red-border');
				}
				txt += '</ul>';
				$('#formEditCard div.errors').html(txt).show();
				
				
				piro . loading . showPage('admin-update-card');
			}
		)
	}
	
	this . addCard = function(obj){
		
		var _aError = $('#formAddCard')[0].aError;
		_aError . clear();
		_aError . check(true);
		if(_aError . error){
			piro . alert . loadCustom ('incorrectFormValues');
			return false;
		}
		
		piro . loading . hidePage('admin-add-card');
		piro . ajax(
			piro . admin . options . url,
			{
				'type' : 'addCard',
				'userData' : obj
			},
			function(answer){
				$('#formAddCard .red-border').removeClass('red-border');
				
				piro . loading . showPage('admin-add-card');
				piro . alert . loadCustom('success');
			},function(obj){
				$('#formAddCard .red-border').removeClass('red-border');
				
				var obj = eval('[' + obj.responseText + ']')[0]; //bad

				piro . log(obj)
				
				var txt = '<b>Некоторые поля заполнены с ошибками:</b><ul>';
				var l = obj.countErrors;
				for(var i = 0; i<l ; i++){
					txt += '<li>' + obj.errors[i].field + ': ' + obj.errors[i].text + '</li>';
					$('#formAddCard [name=' + obj.errors[i].field + ']').addClass('red-border');
				}
				txt += '</ul>';
				$('#formAddCard div.errors').html(txt).show();
				
				
				piro . loading . showPage('admin-add-card');
			}
		)
	}

}

piro . admin = new Admin();

