var Pages = {};
var d1, d2;
bindDOMReady(function(){
	if(document.getElementById('orderForm')){formValidate('orderForm');}
	if(document.getElementById('orders_page')){Pages.Orders.init();}
	if(document.getElementById('payStep1')){Pages.Payment.Step1.init();}
	if(document.getElementById('payStep2')){Pages.Payment.Step2.init();}
	counter();
	iLikeIt();
	
	
	Pages.Every.init();
	if($('#tickets').hasClass('step1')){Pages.Tickets.init();};
	if($('#tickets').hasClass('step2')){Pages.Tickets.PersonalData.init();};	//step2
	if($('#tickets').hasClass('step3')){Pages.Tickets.FOP.init();};
});

	

function toggleExpired(pos){
	var docType = $("#document"+pos+" option:selected").val();

	if(docType == 'FOREIGN'){
		$("#expired"+pos).removeClass('hidden');
	}else{
		$("#expired"+pos).addClass('hidden');
	}
	
}


function openRows(groupID){
	
	if($("tr.header"+groupID).hasClass('close')){
		$("tr.header"+groupID).removeClass('close');
		$("tr.group"+groupID).slideDown('fast');
	}else{
		$("tr.header"+groupID).addClass('close');
		$("tr.group"+groupID).slideUp('fast');
	}
}

Pages.Every = {
	init: function(){
		searchForm.init();
	}
}



/* Tickets */

var searchForm = {
	init: function(){
		//this._mapPointField.init({$obj: $('#search #pseudoFrom'), fName: 'from'});
		//this._mapPointField.init({$obj: $('#search #pseudoTo'), fName: 'to'});


		$("#pseudoFrom").autocomplete("search.php", {
			selectFirst: true,
			autoFill: true
		});

		$("#pseudoFrom").result(function(event, data, formatted) {
			$('#pseudoFrom').css("background-color", "#fff");
			if (data)
				$("#pseudoFromCode").val(data[1]);
		}).blur(function(){
    		$(this).search();
		});

		$("#pseudoTo").autocomplete("search.php", {
			selectFirst: true,
			autoFill: true
		});

		$("#pseudoTo").result(function(event, data, formatted) {
			$("#pseudoTo").css("background-color", "#fff");
			if (data)
				$("#pseudoToCode").val(data[1]);
		}).blur(function(){
    		$(this).search();
		});



		d1 = this._dateField.init({$obj: $('#search input[name="dateThere"]'), fName: 'dateThere'});
		d2 = this._dateField.init2({$obj: $('#search input[name="dateBack"]'), fName: 'dateBack'});
		this.watchSubmit($('#search input[type="submit"]'));
	
		
/*
		//запрет отсылки формы по энтеру
		document.onkeypress = function(evt){ 
			var evt = (evt) ? evt : ((event) ? event : null); 
			if (evt.keyCode == 13){return false;} 
		};	
*/
	},
	
	
	
	watchSubmit: function($button){
		var self = this;
		$button.click(function(event){
			event.preventDefault();
			
			var $from 		= $('#pseudoFromCode').val();
			var $to 		= $('#pseudoToCode').val();
			var $dateThere 	= $('#dateThere').val();
			
			
			if($from == ''){
				$('#pseudoFrom').css("background-color", "#ffc1c1");
				return false;
			}			
			
			if($to == ''){
				$('#pseudoTo').css("background-color", "#ffc1c1");
				return false;
			}

			if($dateThere == ''){
				$('#dateThere').css("background-color", "#ffc1c1");
				return false;
			}
			

			document.getElementById('alphaBg').className = '';	
			document.getElementById('alphaWBg').className = '';	
			
			
			$('#action').val('search');
			$('#search').submit();
			
			//self.submitEvent.tryToSubmit();
			//отправляет форму метод "submitEvent.tryToSubmit"
		});
	},
		
	
	
	//событие "отправка формы"
	submitEvent: {
   
	    preloader: function(callback){
	    	$('#bigDark').fadeIn('fast');
	    	var $preloader = $('#preloader'),
	            offset = 0;
	        setInterval(function(){
	            $preloader.css({backgroundPosition: 'left '+offset+'px'});
	            offset = offset - 40;
	            if(offset == -480)
	                offset = 0;
	            callback();
	        }, 50);
	        
	    },
	    
	    //пробегает по всем полям, требующим проверки и смотрит хорошо оно заполнено или нет
		tryToSubmit: function(){
	        this.preloader(function(){
	        	$('#search').submit();
	        });
		}

	},
	
	

	_dateField: {
		configObj: {
			closeText: 'Закрыть',
			prevText: '&#x3c;Пред',
			nextText: 'След&#x3e;',
			currentText: 'Сегодня',
			monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
			monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек'],
			dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
			dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
			dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
			weekHeader: 'Не',
			dateFormat: 'dd.mm.yy',
			firstDay: 1,
			isRTL: false,
			showMonthAfterYear: false,
			yearSuffix: '',
			numberOfMonths: 2,
			minDate: 0,
			onSelect: function(dateText, inst) 
			{
				searchForm._dateField.configObj.minDate = dateText;
				searchForm._dateField.configObj.fName = 'dateBack';
				
				$('#dateBack').datepicker("destroy");
				$('#dateBack').datepicker(searchForm._dateField.configObj);
			}
		},
		
		
		init: function(param){
			return param.$obj.datepicker(this.configObj);
		},
		
		init2: function(param){
			this.configObj['onSelect'] = function(dateText, inst){}
			return param.$obj.datepicker(this.configObj);
		}
	}
	
	};




Pages.Tickets = {
	init: function(){
		//забронировать именно этот билет
		$('#tickets').delegate('.ticketBlock input.button', 'click', function(){
			var $curWraper = $(this).parents('.ticketBlock'),
				uid = '';
	
				
			if($curWraper.hasClass('unique')){
				uid = $curWraper.find('input[type="radio"]').val();
			}
			else{
				uid = $curWraper.find('input[type="radio"]:checked').val();			
			}
			
			//window.location.href = 'action.php?action=createBooking&uid='+uid;
			//window.location.href = 'personal_data?adult=2&child=3&baby=1';
			window.location.href = window.location.href + '&uid=' + uid;
			//window.location.href = 'tickets?&uid=' + uid;
		});
	}
};



function getInto(oid){
	window.location.href = window.location.href + '?oid=' + oid;
}


Pages.Tickets.FOP = {
	init: function(){

		var pattern = "0123456789";
		var additionalChars = [96, 97, 98, 99, 100, 101, 102, 103, 104, 105];
		var serviceChars = [37, 39, 16, 17, 18, 91, 8, 46];	

		$("#fop").delegate("input#tel_code", "keydown", function(e){
			var kCode = e.keyCode;
			if(pattern.indexOf(String.fromCharCode(kCode)) === -1 && additionalChars.indexOf(kCode) === -1 && serviceChars.indexOf(kCode) === -1){
				e.preventDefault();
			}else{
				var length = $(this).val().length;
				if(length>2 && serviceChars.indexOf(kCode) === -1){
					$('#tel1').focus();
				}
			}
		});

		$("#fop").delegate("input#tel1", "keydown", function(e){
			var kCode = e.keyCode;
			if(pattern.indexOf(String.fromCharCode(kCode)) === -1 && additionalChars.indexOf(kCode) === -1 && serviceChars.indexOf(kCode) === -1){
				e.preventDefault();
			}else{
				var length = $(this).val().length;
				if(length>2 && serviceChars.indexOf(kCode) === -1){
					$('#tel2').focus();
				}
				if(length == 0 && kCode == 8){
					$('#tel_code').focus();
				}
			}
		});

		$("#fop").delegate("input#tel2", "keydown", function(e){
			var kCode = e.keyCode;
			if(pattern.indexOf(String.fromCharCode(kCode)) === -1 && additionalChars.indexOf(kCode) === -1 && serviceChars.indexOf(kCode) === -1){
				e.preventDefault();
			}else{
				var length = $(this).val().length;
				if(length>1 && serviceChars.indexOf(kCode) === -1){
					$('#tel3').focus();
				}
				if(length == 0 && kCode == 8){
					$('#tel1').focus();
				}
			}
		});

		$("#fop").delegate("input#tel3", "keydown", function(e){
			var kCode = e.keyCode;
			if(pattern.indexOf(String.fromCharCode(kCode)) === -1 && additionalChars.indexOf(kCode) === -1 && serviceChars.indexOf(kCode) === -1){
				e.preventDefault();
			}else{
				var length = $(this).val().length;
				if(length == 0 && kCode == 8){
					$('#tel2').focus();
				}
			}
		});

		var $button = $('#fop input[type="submit"]');

		$button.click(function(event){
			event.preventDefault();
			
			var name	= $('#name').val();
			var tel 	= $('#tel').val();
			var email 	= $('#email').val();
			$('#name').css("background-color", "#fff");
			$('#tel').css("background-color", "#fff");
			$('#email').css("background-color", "#fff");
			
			if(name == ''){
				$('#name').css("background-color", "#ffc1c1");
				return false;
			}

			
			var pattern = /^[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?\.[A-Za-z0-9]{2,6}$/;
			var check_res = email.match(pattern);
			
			if(email == '' || check_res == null){
				$('#email').css("background-color", "#ffc1c1");
				return false;
			}

			$('#fop').submit();
		});


	}
}

Pages.Tickets.PersonalData = {
	init: function(){
		this.observeFieldsFilling();
		this.inputRestriction('englishOnly');
		this.inputRestriction('numbersOnly');
		this.observeValidity.init();
	},
	
	
	observeFieldsFilling: function(){
		$("#pDataForm").delegate("input.watchIt", "focus", function(){
			if(!$(this).data('filled')){
				if(!$(this).data('pattern'))
					$(this).data('pattern', $(this).val());
				$(this).val('').addClass('black');
			}
		});	
		
		$("#pDataForm").delegate("input.watchIt", "blur", function(){
			if($(this).val().length == 0){
				$(this).data('filled', false)
					.val($(this).data('pattern'))
					.removeClass('black');
			}
			else{
				$(this).data('filled', true);
				$(this).removeClass('red');
			}
		});

		
		$("#pDataForm").delegate("select", "change", function(){
			if($(this).val() != 0){
				$(this).removeClass('red');
			}else{
				$(this).addClass('red');
			}

		});
	},
	
	
	inputRestriction: function(type){
		var pattern = '',
			elemClass = '',
			additionalChars = [8, 9, 39, 37, 38, 40, 46, 16, 188, 190];
			
		if(type === 'englishOnly'){
			pattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
			elemClass = 'endlishOnly';
			errorText = 'Пожалуйста, переключитесь на английскую раскладку клавиатуры. Имя и фамилию нужно вводить латинскими буквами';
			additionalChars.push(16, 17, 18, 20, 32, 91);	
		}
		else if(type === 'numbersOnly'){
			pattern = "0123456789";
			elemClass = 'numberOnly';		
			errorText = 'Эти данные нужно вводить цифрами';	
			additionalChars.push(16, 17, 18, 20, 32, 91, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 86);		
		}
		
		
		
		function showError(arg){
			if(arg.elem.parent()[0].tagName === 'TD'){
				arg.elem.wrap('<div style="position:relative;float:left"/>').after("<p class='error rc5 hidden'>"+arg.text+"</p>");
				arg.elem.next().fadeIn('fast');
				arg.elem.focus();
			}
			else{
				arg.elem.next().fadeIn('fast');
			}
		}
		
		
		function clearError(elem){
			elem.next('.error').fadeOut('fast');
			elem.removeClass('red');
		}


		$("#pDataForm").delegate("input."+elemClass, "keydown", {curText: errorText, addChars: additionalChars}, function(e){
			var kCode = e.keyCode;
			if(pattern.indexOf(String.fromCharCode(kCode)) === -1 && e.data.addChars.indexOf(kCode) === -1){
				e.preventDefault();
				showError({elem: $(this), text: e.data.curText});
			}
			else{
				clearError($(this));
			}
		});
		
		
		$("#pDataForm").delegate("input."+elemClass, "blur", function(){
			clearError($(this));	
		});
		
	},
	
	//следит за тем, чтобы все формы были заполнены правильно
	observeValidity: {
		init: function(){
			var that = this;
			$('#pDataForm input[type="submit"]').click(function(e){
				var ok = true;
				
				if(!that.checkFIO()) ok = false;
				if(!that.checkBirth()) ok = false;
				if(!that.checkDocument()) bool = false;
			
				if(!ok)
					e.preventDefault();
			});
		},
		
		
		checkDocument: function(){
			var bool = true,
				that = this,
				isNum;
			
			$('#pDataForm tr.document input').each(function(){
				if(!$(this).hasClass('black')){
					$(this).addClass('red');
					bool = false;
					return true;
				}
				
/*
				isNum = that.tryPattern({
					str: $(this).val(),
					pattern: "1234567890#№ "
				});
*/

				isNum = $(this).val();

				if(!isNum){
					bool = false;
					$(this).addClass('red');
					return true;
				}
				
				$(this).removeClass('red');
			});
			
			return bool;
		},
		
		
		checkBirth: function(){
			var bool = true;
			
			$('#pDataForm tr.birth select').each(function(){
				if($(this).val() == 0){
					$(this).addClass('red');
					bool = false;
					return true;					
				}
				$(this).removeClass('red');
			});
			
			return bool;
		},
		
		
		checkFIO: function(){
			var bool = true,
				that = this,
				isEnglish;
			
			$('#pDataForm input[name*="name"]').each(function(){
				if(!$(this).hasClass('black')){
					$(this).addClass('red');
					bool = false;
					return true;
				}				

				isEnglish = that.tryPattern({
					str: $(this).val(),
					pattern: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-абвгдеёжзийклмнопрстуфхцчшщьыъэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ"
				});
				if(!isEnglish){
					bool = false;
					$(this).addClass('red');
					return true;
				}
				
				$(this).removeClass('red');
			});
			return bool;
		},
		
		
		tryPattern: function(par){
			var str = par.str;
			var orgi_text=par.pattern;   
			var str_length=str.length;   
			var isOk=true;   
			var Char_At="";   
			for(i=0;i<str_length;i++){  
				Char_At=str.charAt(i);   
				if(orgi_text.indexOf(Char_At)==-1){   
					isOk=false;   
					break;
				}      
			} 
			return isOk;
		}
	}
	

};





if (!Array.prototype.indexOf){
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}


/* Tickets end  */



Pages.Orders = {
	init: function(){
		//редактирование и создание заказа
		var that = this,
			getIdRegExp = new RegExp(/ id([0-9]+)/);
		
		//new item	
		document.getElementById('createOrder').onclick = function(){
			that.form.config({type: 'new'}).show();
		};
		
		//edit, view
		document.getElementById('editBttWrapper').onclick = function(e){
			var e = e || window.event,
				t = e.target || e.srcElement,
				tClass = t.className;
			//edit	
			if(tClass.indexOf('edit ') !== -1){
				var id = tClass.match(getIdRegExp)[1];
				that.form.config({type: 'edit', 'id': id}).show();
			}
			//view
			else if(tClass.indexOf('view ') !== -1){
				var id = tClass.match(getIdRegExp)[1];
				that.form.config({type: 'view', 'id': id}).show();
			}
		};
		
		document.getElementById('alphaBg').onclick = document.getElementById('closeBooking').onclick = function(){
			that.form.hide();
		};
		
		document.getElementById('around').style.position = 'static';	//hack for ie
		
		//отслеживание статуса заказов
		this.observeStatus();
		
		//при наведении на заказ показывает подсказку про него
		this.tooltip.init();
	},

	
	
	tooltip: {
		curId: null,
		trChanged: true,
		executionTimer: null,	

		
		init: function(){
			var that = this;
			
			document.getElementById('editBttWrapper').onmouseover = function(e){
				if(that.trChanged){
	                if(that.executionTimer)
						clearTimeout(that.executionTimer);
	       
	                that.executionTimer = setTimeout(function() {
						that.overHandler(e);
	                }, 500);
				}
			}
			
			//если мыша вышла за пределы таблицы элементов - не запускать "весь процесс"
			var table = document.getElementById('editBttWrapper');
			table.onmouseout = function(e){
				e = e || window.event;
				var reltg = e.relatedTarget || e.toElement;
				
				//мыша вылезла за границы области документа
				if(!reltg){
					clearTimeout(that.executionTimer); 
					return;
				}
				
				while (reltg != table && reltg.nodeName != 'BODY')
					reltg = reltg.parentNode;
					
				if (reltg == table) return;

				clearTimeout(that.executionTimer);				
			}
			
			//прилепить тултип к курсору мышки
			document.getElementById('editBttWrapper').onmousemove = that.stickToCursor;
		},

			
		overHandler: function(e){
			var e = e || window.event,
				t = e.target || e.srcElement,	//строчка tr - потом станет
				id,
				that = this;

			while(t.tagName !== 'TR' && t.className !== 'resTable')
				t = t.parentNode;

			if(t.className !== '') return;

			t.onmouseout = function(e){
				if (!e) var e = window.event;
				var tg = (window.event) ? e.srcElement : e.target;
				var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;

				that.trChanged = false;
				
				if(!reltg)
					reltg = document.getElementsByTagName('body')[0];
				
				if(reltg.nodeName === 'TABLE') 
					return;
				
				while(tg.nodeName !== 'TR')
					tg = tg.parentNode;	
				
				while (reltg != tg && reltg.nodeName != 'BODY')
					reltg = reltg.parentNode
				
				if (reltg == tg) return;

				t.onmouseout = null;
				clearTimeout(that.executionTimer);
				document.getElementById('tooltipWr').style.display = 'none';
				that.trChanged = true;
			}
			
			id = t.id.substr(2);
			this.activate(id);
		},
		
		
		activate: function(id){
			var that = this,
				curTr = document.getElementById('id'+id);

			if(!curTr.getAttribute('data-hastooltip')){
				Pages.Orders.utils.getData({
					type: 'GET',
					param: 'action.php3?action=getTooltip&id='+id,
					dataType: 'JSON',
					callback: function(data){
						that.createHTMLElem(data).uprise();
						curTr.setAttribute('data-hastooltip', true);
					}
				});
			}
			else{
				this.activateHTMLElem(id).uprise();
			}
		},
		
		stickToCursor: function(){
			var e = arguments[0] || window.event,
				tooltipWr = document.getElementById('tooltipWr'),
				posx = 0,
				posy = 0;

			if(e.pageX){
				posx = e.pageX;
				posy = e.pageY;
			}
			else if (e.clientX){
				posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
				posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
			}
				
			tooltipWr.style.left = posx + 15 + 'px';
			tooltipWr.style.top = posy + 15 + 'px';
		},
		
		activateHTMLElem: function(id){
			this.curId = id;
			return this;
		},
		
		createHTMLElem: function(data){
			var elem = document.createElement('DIV');
			elem.setAttribute('class', 'tooltip');
			elem.setAttribute('id', 'tooltip'+data.idVal);
			elem.innerHTML = '\
				<table>\
					<tr>\
						<td>№</td>\
						<td>'+data.idVal+'</td>\
					</tr>\
					<tr>\
						<td>Создан:</td>\
						<td>'+data.created+'</td>\
					</tr>\
					<tr>\
						<td>Оплачен:</td>\
						<td>'+data.paid+'</td>\
					</tr>\
					<tr>\
						<td>Оператор:</td>\
						<td>'+data.operator+'</td>\
					</tr>\
					<tr>\
						<td>Booking ref:</td>\
						<td>'+data.booking_id+'</td>\
					</tr>\
				</table>\
			';
			document.getElementById('tooltipWr').appendChild(elem);

			this.curId = data.idVal;
			return this;
		},
		
		uprise: function(){
			var tooltipSet = document.getElementById('tooltipWr').getElementsByTagName('DIV');
			for(var i=0; i<tooltipSet.length; i++){
				tooltipSet[i].style.display = 'none';
			}
			document.getElementById('tooltip'+this.curId).style.display = document.getElementById('tooltipWr').style.display = 'block';
		}
	},
	
	

	form: {
		getFormWrapDOM: function(){return document.getElementById('bookingForm');},
		getFormDOM: function(){return document.MakeOrder;},
		curId : null,
		curType: '',
	
		config: function(par){
			this.curId = (par.id) ? par.id : null;
			this.curType = par.type;
			this.restrictAmount();
			return this;
		},
		
		//фиктивный метод, он выставлен наружу
		//на самом деле форма "про€вл€етьс€" методом "_show"
		show: function(){
			if(this.curType == 'new'){
				this.unlock().clear()._show();
			}
			else if(this.curType == 'edit'){
				this.unlock().fill(this.curId)._show();
			}
			else if(this.curType == 'view'){
				this.lock().fill(this.curId)._show();
			};
		},
		
		
		unlock: function(){
			var formDOM = this.getFormDOM();
			for(var i=0; i < formDOM.elements.length; i++){
				formDOM.elements[i].disabled = false;
			};
			this.getFormWrapDOM().className = this.getFormWrapDOM().className.replace(' locked', ' unlocked');
			return this;
		},
		
		
		lock: function(){
			var formDOM = this.getFormDOM();
			for(var i=0; i < formDOM.elements.length; i++){
				formDOM.elements[i].disabled = true;
			};
			this.getFormWrapDOM().className = this.getFormWrapDOM().className.replace(' unlocked', ' locked');
			return this;
		},
		
		
		//очищает форму - делает еЄ "новой"
		clear: function(){
			var formDOM = this.getFormDOM();
			formDOM.action.value = 'makeorder';
			formDOM.editableItemId.value = '';
			for(var i=0; i < formDOM.elements.length; i++){
				if(formDOM.elements[i].type == 'text' || formDOM.elements[i].type == 'textarea')
					formDOM.elements[i].value = '';
			};
			formDOM.rtime_day[formDOM.rtime_day.getAttribute('curdate')].selected = true;
			formDOM.rtime_mon[formDOM.rtime_mon.getAttribute('curdate')].selected = true;
			formDOM.rtime_year[formDOM.rtime_year.getAttribute('curdate')].selected = true;
			formDOM.rtime_hours[formDOM.rtime_hours.getAttribute('curdate')].selected = true;
			formDOM.rtime_minutes[formDOM.rtime_minutes.getAttribute('curdate')].selected = true;
			this.formReadyEvent.fire();	//форма готова для отображения
			return this;
		},


		fill: function(id){
			var that = this;
			Pages.Orders.utils.getData({
				type: 'GET',
				param: 'action.php3?action=getBookingData&id='+id,
				dataType: 'JSON',
				callback: function(data){							
					var formDOM = that.getFormDOM();
					for(var item in data){
						if(item.indexOf('rtime') == -1 && data[item])
							formDOM[item].value = data[item];
					};

					formDOM.rtime_day[data['rtime_day']-1].selected = true;
					formDOM.rtime_mon[data['rtime_mon']-1].selected = true;
					formDOM.rtime_year[data['rtime_year']-2011].selected = true;
					formDOM.rtime_hours[data['rtime_hours']].selected = true;
					formDOM.rtime_minutes[data['rtime_minutes']].selected = true;
					
					formDOM.action.value = 'editorder';
					formDOM.editableItemId.value = id;
					
					that.formReadyEvent.fire();	//форма готова для отображения
				}
			});
			return this;
		},
		
		
		formReadyEvent: {
			fire: function(){Pages.Orders.form._show(true);}
		},
		
		
		_show: function(bool){
			if(bool){
				this.getFormWrapDOM().className = this.getFormWrapDOM().className.replace(' hidden', '');
				document.getElementById('alphaBg').className = '';			
			};
		},
		
		
		hide: function(){
			this.getFormWrapDOM().className = this.getFormWrapDOM().className + ' hidden';
			document.getElementById('alphaBg').className = ' hidden';
		},
		
		
		//в поле "сумма" можно вводить только цифры
		restrictAmount: function(){
			if(!this.getFormDOM().amount.onkeypress){
				function prevDef(e){
					if(e.preventDefault){  
						e.preventDefault();  
					}else{  
						e.returnValue = false;  
						e.cancelBubble = true;  
					}
				};
				this.getFormDOM().amount.onkeypress = function(event){
					var event = event || window.event,
						key = event.which || event.keyCode,
						keychar = String.fromCharCode(key);
					if ((key==null) || (key==0) || (key==8) ||  (key==9) || (key==13) || (key==27) || (("0123456789").indexOf(keychar) !== -1)) {
					   if(this.value.length == 8 && key!==8){
							prevDef(event);
						}	
					}
					else{
						prevDef(event);
					}
				}
			}
		
		}
		
	},
	
	
	
	utils: {
		getData: function(arg){
			AJAXObj.request(arg.type, arg.param, {
				success: function(response){
					if(arg.dataType == 'JSON') 
						response = eval('(' + response + ');')
					arg.callback(response);
				}
			});
		}
	},
	
	
	
	observeStatus: function(){
		var that = this,
			delay = 600000;
							
		setInterval(function(){
			that.utils.getData({
				type: 'GET',
				param: 'action.php3?action=checkOrdersList',
				dataType: 'JSON',
				callback: function(data){
					for(var prop in data){
						moveOrder(prop, data[prop]);						
					}
				}
			});
		}, delay);
		
		
		function moveOrder(id, status){
			var curItem = document.getElementById('id'+id),
				parentTable = document.getElementById('editBttWrapper').firstChild,
				beforeIt = (function(){
					var header;
					//новые
					if(status == 'NEW')
						header = document.getElementById('newH');
					//оплачено
					else if(status == 'APPROVED')
						header = document.getElementById('payedH');					
					//просрочено
					else if(status == 'INVALID')
						header = document.getElementById('overdueH');
					return header.nextSibling;
				})();
			parentTable.insertBefore(curItem, beforeIt);
		};
		
	}
	
	
};





Pages.Payment = {};
Pages.Payment.Step1 = {
	init: function(){
		//alert('asd');
		var that = this;

		document.getElementById('payIt').onclick = function(){
			that.checkOrder(document.FindOrder.oid.value, that.responseHandler);
			return false;
		}
	},
	
	
	responseHandler: function(response){
		if(response == '0'){
			document.FindOrder.submit();
		}
		else{
			document.FindOrder.oid.focus();
			this.errorObj.setErrType(response).show();
		}
	},
	
	
	errorObj: {
		_errType: '',
		
		setErrType: function(errId){
			this._errType = errId;
			return this;
		},
		
		show: function(){
			var errBlock = document.getElementById('oidInvalidMsg');
			//заказ не найден
			if(this._errType == '1'){
				errBlock.innerHTML = 'Заказа с таким номером не найдено.<br/> Уточните правильность ввода номера заказа';	
			}
			//заказ просрочен
			else if(this._errType == '2'){
				errBlock.innerHTML = 'Заказ просрочен';	
			}
			//«аказ уже был оплачен
			else if(this._errType == '3'){
				errBlock.innerHTML = 'Заказ уже оплачен';	
			}
			errBlock.className = '';
		}
	},
	
	
	//abstract
	checkOrder: function(id, callback){
		if(id != ''){
			var that = this;
			AJAXObj.request('GET', 'action.php3?action=checkOrder&id='+id, {
				success: function(responseText){
					callback.call(that, responseText);
				}
			});
		}
	}
};




Pages.Payment.Step2 = {
	init: function(){
		var that = this;
		this.payBtt.init();
		document.getElementById('payStep2chbox').onclick = function(){
			that.payBtt.toggleCheckbox(this);
		};
	},
	
	
	payBtt: {
		init: function(){
			this._disable();
		},
		
		toggleCheckbox: function(checkboxDOM){
			if(checkboxDOM.checked)
				this._enable();
			else
				this._disable();
		},
		 
		_getBttDOM: function(){return document.getElementById('payBtt2')},
		
		_disable: function(){
			var bttDOM = this._getBttDOM();
			bttDOM.className = bttDOM.className + ' halfTransapent';
			document.getElementById('payBtt2').onclick = function(){return false};
		},
		
		_enable: function(){
			var bttDOM = this._getBttDOM();
			bttDOM.className = bttDOM.className.replace(' halfTransapent', '');
			bttDOM.onclick = null;
		}
	}

};



 
function bindDOMReady(handler){
	var called = false;

	function ready() {
		if (called) return;
		called = true;
		handler();
	};

	if(document.addEventListener){
		document.addEventListener( "DOMContentLoaded", function(){
			ready()
		}, false )
	}else if(document.attachEvent){
		if ( document.documentElement.doScroll && window == window.top ) {
			function tryScroll(){
				if (called) return;
				if (!document.body) return;
				try {
					document.documentElement.doScroll("left");
					ready();
				} catch(e) {
					setTimeout(tryScroll, 0);
				}
			}
			tryScroll();
		}

		document.attachEvent("onreadystatechange", function(){
			if ( document.readyState === "complete" ) {
				ready();
			}
		})
	}

    if (window.addEventListener)
        window.addEventListener('load', ready, false);
    else if (window.attachEvent)
        window.attachEvent('onload', ready);
};




function iLikeIt(){
	if(document.getElementById('ya_share1')){
		new Ya.share({
	        element: 'ya_share1',
	        elementStyle: {
	            'type': 'link',
	            'border': false,
	            'quickServices': ['yaru', 'vkontakte', 'facebook', 'twitter']
	        }
		});
	}
};





function formValidate(formId){
	var requiredClass = 'req',
		submitClass = 'submit',
		submitButton,
		requiredFields = [],
		element = document.getElementById(formId);
		
		
	//select "required fields", onkeyup handler
	for(var i=0; i<element.elements.length; i++){
		if(element.elements[i].className.indexOf(requiredClass) !== -1){
			requiredFields.push(element.elements[i]);
			requiredFields[requiredFields.length-1].onkeyup = function(){
				if(this.value !== ''){
					this.className = this.className.replace(' red', '');
				}
				else{
					if(this.className.indexOf('red') == -1){
						this.className += ' red';
					}
				}
			};
		}
	}
	
	//select "submitButton"
	for(var i=element.elements.length-1; i>=0; i--){
		if(element.elements[i].className.indexOf(submitClass) !== -1){
			submitButton = element.elements[i];
			break;
		}
	}
	
	submitButton.onclick = function(){
		var valid = true;
		
		for(var i=requiredFields.length-1; i>=0; i--){
			if(requiredFields[i].value == ''){
				if(requiredFields[i].className.indexOf('red') == -1){
					requiredFields[i].className += ' red';
				}
				valid = false;
				requiredFields[i].focus();
			}
		}
		if(!valid) return false;
	}
};




function pagenum(p, filename){
	document.forms["nav"].elements["page"].value = p;
	document.forms["nav"].elements["filename"].value = filename;
	document.forms["nav"].submit();
}



function my_confirm(to, what){
	if (confirm(what))
		document.location=to;
}
	

	
var foto_windows = new Array();
function open_foto(url, winname, width, height){
	foto_windows[foto_windows.length] = window.open(url,winname,'height='+height+',width='+width+',resizable=0,scrollbars=no,menubar=no,status=no');
	for(var i = 0; foto_windows.length > i; i++){
		if(!foto_windows[i].closed)
			foto_windows[i].focus();
	}
}



function do_search(text){
	var search_line = document.getElementById('sline');
	search_line.value = text;
	document.forms['web'].submit();
}




function newWindow(url,w,h){
w = w + 18;
h = h + 27;
Win = window.open(url, "Win", "width=" + w + ",height=" + h + "location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0","top=0,left=0");
}



function tableLinesOn(pos){
	if (!document.getElementById) return;
	var id1 = document.getElementById('id1' + pos );
	var id2 = document.getElementById('id2' + pos );
	var id3 = document.getElementById('id3' + pos );
	if(id1.className == 'number')
		id1.className = 'numberOn';
	if(id2.className == 'name')
		id2.className = 'nameOn';
	if(id3.className == 'price')
		id3.className = 'priceOn';
}

function tableLinesOff(pos){
	if (!document.getElementById) return;
	var id1 = document.getElementById('id1' + pos ),
		id2 = document.getElementById('id2' + pos ),
		id3 = document.getElementById('id3' + pos );
	if(id1.className == 'numberOn')
		id1.className = 'number';
	if(id2.className == 'nameOn')
		id2.className = 'name';
	if(id3.className == 'priceOn')
		id3.className = 'price';
}


function iform(flag){
	obj = document.getElementById('iForm');
	if(obj){
		if(flag){
			if(!document.getElementById('iFrame')){
				var iframe = document.createElement('IFRAME');
				iframe.setAttribute('src', 'http://wftc2.e-travel.com/plnext/AIEBEGMBEGM/CleanUpSessionPui.action?SITE=BEGMBEGM&LANGUAGE=RU');
				iframe.setAttribute('align', 'top');
				iframe.setAttribute('frameborder', '0');
				iframe.setAttribute('id', 'iFrame');
				document.getElementById('iContent').appendChild(iframe);
			}
			
			obj.style.display = 'block';
			resizeIFrame();
			AJAXObj.request('GET', 'action.php3?action=form_stat&myrand='+Math.random());  //отмашка дл€ статистики
		}
		else{
			obj.style.display = 'none';
		}
	}
}



function resizeIFrame(){
	var iForm = document.getElementById('iForm');
	var iContent = document.getElementById('iContent');
	var iFrame = document.getElementById('iFrame');
	
	if(iForm.style.display == 'block'){
		h = iForm.offsetHeight;
		w = iForm.offsetWidth;
		contentH = iContent.offsetHeight;
		contentW = iContent.offsetWidth;
		
		if(h - 40 <= contentH){
			iContent.style.height = h - 40 + 'px';
			iFrame.style.height = h - 99 + 'px';
		}
		else if(h <= 720){
			iContent.style.height = h - 40 + 'px';
			iFrame.style.height = h - 99 + 'px';
		}
		else{
			iContent.style.height = '680px';
			iFrame.style.height = '680px';
		}
		
		if(w - 40 <= contentW){
			iContent.style.width = w - 40 + 'px';
			iFrame.style.width = w - 40 + 'px';
			iContent.style.left = '20px';
			iContent.style.marginLeft = 0;
		}
		else if(w <= 890){
			iContent.style.width = w - 40 + 'px';
			iFrame.style.width = w - 40 + 'px';
			iContent.style.left = '20px';
			iContent.style.marginLeft = 0;
		}
		else{
			iContent.style.width = '850px';
			iFrame.style.width = '850px';
			iContent.style.left = '50%';
			iContent.style.marginLeft = '-425px';
		}
	}
	setTimeout("resizeIFrame()", 1000);
}
	
	
	
function counter(){
	document.getElementById('counter').innerHTML = '<a href="http://www.liveinternet.ru/click" '+
	'target=_blank><img src="http://counter.yadro.ru/hit?t14.1;r'+
	escape(document.referrer)+((typeof(screen)=='undefined')?'':
	';s'+screen.width+'*'+screen.height+'*'+(screen.colorDepth?
	screen.colorDepth:screen.pixelDepth))+';'+Math.random()+
	'" alt="liveinternet.ru: iieacaii ?enei oeoia ca 24 ?ana, iinaoeoaeae ca 24 ?ana e ca naaiai\y" '+
	'border=0 width=88 height=31></a>';
}	



var AJAXObj = {
	request: function(method, url, callback, postVars) {
		var xhr = this._createXhrObject();
		xhr.onreadystatechange = function() {
			if(xhr.readyState !== 4) return;
			if(callback){
				(xhr.status === 200) ?
				callback.success(xhr.responseText, xhr.responseXML) :
				callback.failure(xhr.status);
			}
		};
		xhr.open(method, url, true);
		if(method !== 'POST') postVars = null;
		xhr.send(postVars);
	},


	_createXhrObject: function() { // Factory method.
		var methods = [
			function() { return new XMLHttpRequest(); },
			function() { return new ActiveXObject('Msxml2.XMLHTTP'); },
			function() { return new ActiveXObject('Microsoft.XMLHTTP'); }
		];
		for(var i = 0, len = methods.length; i < len; i++) {
			try {
				methods[i]();
			}
			catch(e) {
				continue;
			}
			this._createXhrObject = methods[i]; // Memoize the method.
			return methods[i]();
		}
		// If we reach this point, none of the methods worked.
		throw new Error('SimpleHandler: Could not create an XHR object.');
	}
}; 





function addThisJSAppend(){
   var script = document.createElement('script');
   script.type = 'text/javascript';
   script.src = 'http://s7.addthis.com/js/250/addthis_widget.js#username=kalininew';
   document.getElementById('addThis').appendChild(script);
   
   var addthis_config = {"data_track_clickback":true};
};



