oReg = {	license: null,	blocked: false,	show: function(){		$.post('/index/userevent', {} ,function(data){});			if(window.pageTracker){			pageTracker._trackPageview('/signup');		}		var t = this;		oPopup.close();		var p = new Popup();		t.popup = p;		var sHeader = '<div style="font-size:21px;font-family: Arial;padding: 0 0 15px 0">Регистрация</div>';		var ast = '<img src="/images/req.gif" align="absmiddle" />';		var sCap = 			'<table style="border-collapse: collapse">' +				'<tr valign="top">' +					'<td width="131">' + 						'<img src="/images/req.gif" />' + 						'<img id="reg_captcha_img" src="/kcaptcha/?rnd=1234">' +					'</td>' + 					'<td width="177">' + 						'Перепишите буквы и цифры с картинки ' + 						'<div id="popupalert_cap" class="popup_alert"></div>' +						'<div class="popup_captcha">' +							'<input type="text" value="" id="cap_id" name="cap">' + 						'</div>' + 					'</td>' + 					'<td width="338" style="background:url(/images/serf.gif) no-repeat left top">' + 					'<input type="text" value="" id="cert_id" name="cert" class="ptrl">' + '&nbsp;'+					'</td>' +				'</tr>' +			'</table>'		;		var sBlock1 = p.buildInput({type:'text', label: ast + ' Логин', name:'login'}) +									'<div  style="padding: 0pt 0pt 10px 20px; color: gray;">Можно использовать латинские буквы и цифры</div>' +									p.buildInput({type:'password', label: ast + ' Пароль', name:'pwd1'}) +									p.buildInput({type:'password', label: ast + ' Повторите пароль', name:'pwd2'});		var sBlock2 = '<fieldset style="padding:7px"><legend style="margin-left:5px;padding:3px">Вы можете указать данные для восстановления пароля</legend>' +										p.buildInput({type:'text', label:'Электронная почта', name:'email'})	+										'<div id="popupalert_msisdn" class="popup_alert" style="left: 620px"> </div><div class="popup_caption" style="width:115px">Телефон:</div><div class="popup_input input_phone" style="margin-left:124px;width:160px;//margin-left:0px"><input class="ph1" type="text" value="" maxlength="3" name="msisdn1" id="msisdn1_id" onkeyup="oReg.phoneJump()"><input class="ph2" type="text" value="" maxlength="7" name="msisdn2" id="msisdn2_id" style="width:75px"></div>' +										'</fieldset>';		var sBlock3 = sCap + '<table><tr valign="top"><td width="117" style="text-align:right;padding-right:10px">Пользовательское<br/>соглашение</td><td><div class="reg_license"><div class="reg_license_inner"></div></div>'+		'<div id="popupalert_agry" class="popup_alert"> </div><div class="popup_checkbox" style="width:485px;float:left"><img height="16" width="16" input="agry" style="float: left; margin-right: 6px;" src="/images/check_2.gif"/><span>Cогласен</span></div><img style="cursor:pointer" src="/images/zoom.gif" onclick="oReg.showLicense()"/><input type="hidden" name="agry" id="agry" value="0"/>' +/*		'<div id="popupalert_subscribe_content" class="popup_alert"> </div><div class="popup_checkbox" style="width:485px;float:left"><img height="16" width="16" input="subscribe_content" style="float: left; margin-right: 6px;" src="/images/check_3.gif"/ class="checked"><span>Я хочу получать рассылки с учетом моих предпочтений</span></div><input type="hidden" name="subscribe_content" id="subscribe_content" value="1"/>' +*/		// p.buildInput({type:'checkbox', label:'Cогласен', name:'agry'}) +		'</td></tr></table>' +		ast + ' &mdash; поля, обязательные для заполнения';		var sHtml = '<div class="reg_popup">'+ sHeader +'<table width="650"><tr valign="top"><td width="305">'+sBlock1+'</td><td>'+sBlock2+'</td></tr></table>' + sBlock3 + '</div>';				p.show({			items: [ sHtml ],			buttons:[ {text:'Зарегистрироваться', handler: function(){				t.submit();				return false;			}} ],			width: 720		});		$('#popupalert_email').css('left', '620px');		jLic = p.jContainer.find('div.reg_license_inner');		if(t.license){			jLic.html(t.license);		} else {			$.post('/registration/licence/', {}, function(data){				t.license = data;				jLic.html(data);			});		}				return false;	},		check: function(sField, bCondition, sMessage){		if(bCondition){			this.hCheck.errors[sField] = sMessage;			this.hCheck.good = false;		}	},		phoneJump: function(){		if($('#msisdn1_id').val().length>2){			$('#msisdn2_id').each(function(i){				this.focus();			});		}	},		isEmail: function(email){		var re = /^(?:[-a-z\d\+\*\/\?!{}`~_%&'=^$#]+(?:\.[-a-z\d\+\*\/\?!{}`~_%&'=^$#]+)*)@(?:[-a-z\d_]+\.){1,60}[a-z]{2,6}$/i;		return (email=='' || re.test(email));	},		isPhone: function(phone){		var re = /^\d{10}$/i;		return (phone=='' || re.test(phone));	},		showLicense: function(){		if(this.license){			var sHeader = '<div style="font-size:21px;font-family: Arial;padding: 0 0 15px 0">Пользовательское соглашение</div>';			sHtml = sHeader + '<div class="popup_license" style="height:400px;overflow:auto">' + this.license + '</div>';			var p = new Popup();			p.show( {items: [ sHtml ], buttons:[ {text:'Закрыть'} ], width: 720, z_index: 1100, save_hints: true});		}	},		submit: function(){		var t = this;		if(t.blocked) return false;		t.popup.invalidate();		var d = t.popup.getData();		t.hCheck = { good: true, errors: {} };		t.check('login', d.login=='', 'Введите логин');		t.check('login', d.login.length < 3, 'Логин не может быть менее 3 символов');		t.check('login',d.login.length > 20, 'Логин не может быть больше 20 символов');		t.check('pwd1',d.pwd1.length < 4, 'Пароль не может быть менее 4 символов');		t.check('pwd1',d.pwd1.length > 20, 'Пароль не может быть больше 20 символов');		t.check('pwd1', d.pwd1=='', 'Введите пароль');		t.check('pwd2', d.pwd2=='', 'Введите пароль еще раз');		t.check('pwd2', d.pwd1!=d.pwd2, 'Введенные пароли не совпадают');		t.check('cap', d.cap=='', 'Перепишите цифры с картинки');		t.check('agry', d.agry!=1, 'Вы должны принять пользовательское соглашение');		t.check('email', !t.isEmail(d.email), 'Введен некорректный адрес email');		t.check('msisdn', !t.isPhone(d.msisdn1 + d.msisdn2), 'Введен некорректный телефон');		if(t.hCheck.good){			t.blockSubmit();			$.getJSON('/registration/regnew/', d, function(data){				if(data.result=='ok'){					//t.popup.showLoading('Успешная регистрация. Обновление страницы...');					oPopup.alertWithCallback(data.text, function() {t.regComplete();}, 'Ок');					//setTimeout(t.regComplete, 42);				} else {					t.unblockSubmit();					t.popup.invalidate( data.errors, null, true);					if(data.errors.cap){						$('#reg_captcha_img').each( function(){							this.src = '/kcaptcha/?rnd=' + Math.round(Math.random() * 100000);						});						$('#cap_id').val('');					}				}			});		} else {			t.popup.invalidate( t.hCheck.errors , null, true);		}		t.blocked = true;		setTimeout('oReg.blocked = false;', 1000);		return false;	},		blockSubmit: function(){		this.popup.showLoading('Подождите, идет сохранение данных...');		this.blocked = true;	},		unblockSubmit: function(){		var j = this.popup.jContainer.find('div.button');		this.popup.hideLoading();		//j.animate({opacity: 100}, 400);		this.blocked = false;	},		regComplete: function(){		var sBackUrl = $('#regbackurl').val();		if(window.pageTracker){			pageTracker._trackPageview('/signup/complete/');		}		if(sBackUrl && sBackUrl !=''){			document.location = sBackUrl;		} else {			document.location='/?afterreg';		}	}	};oPhoneActivate = {	blocked: false,	sHtml: null,	oReservedLink: null,	show: function(){		var t = this;		var p = new Popup();		t.popup = p;		var sHeader = '<div style="font-size:21px;font-family: Arial;padding: 0 0 15px 0">Активация кошелька</div>';		if(t.sHtml){			p.show({				items: [ sHeader + t.sHtml ],				buttons:[ {text:'Сохранить', handler: function(){					t.submit();					return false;				}} ],				width: 700			});			sHtml = null;		} else {			var sHtml = sHeader + '<div style="margin-top:100px;height:200px;text-align:center"><img src="/images/ajax.gif" /><br/>Подождите, идет загрузка формы</div>';			p.show({				items: [ sHtml ],				width: 700			});			t.loadForm();		};		return false;	},		loadForm: function(){		var t = this;		$.post('/registration/activation-form', function(data){			t.popup.close();			t.sHtml = data;			t.show();		});	},		sendPhoneCode: function(){		var t = this;		var sPhone1 = t.popup.jContainer.find('#msisdn1_id').val(); 		var sPhone2 = t.popup.jContainer.find('#msisdn2_id').val();		var sCap = t.popup.jContainer.find('#cap_id').val();		var sPhone = sPhone1 + sPhone2;		if(sPhone1.length == 3 && sPhone2.length == 7){			$.post('/registration/send-code', {phone: sPhone, cap: sCap} , function(data){				if(data == "ok")					oPopup.alert('На указанный вами номер телефона было выслано SMS с кодом доступа. Если сообщение не было доставлено в течение 1 минуты, проверьте корректность номера', { animate: true });				else					oPopup.alert('Для получения кода активации перепишите буквы и цифры с картинки', { animate: true });			});		} else {			oPopup.alert('Указано неверное количество цифр номера телефона.', { animate: true });		}		return false;	},		check: function(sField, bCondition, sMessage){		if(bCondition){			this.hCheck.errors[sField] = sMessage;			this.hCheck.good = false;		}	},		isPhone: function(phone){		var re = /^\d{10}$/i;		return (phone=='' || re.test(phone));	},		submit: function(){		var t = this;		if(t.popup.blocked) return false;		t.popup.invalidate();		var d = t.popup.getData();		var msisdn = d.msisdn1 + d.msisdn2;		t.hCheck = { good: true, errors: {} };		t.check('msisdn', !t.isPhone(msisdn), 'Введен некорректный телефон');		t.check('msisdn', msisdn=='', 'Введите телефон');		t.check('code', d.code=='', 'Укажите код, пришедший в SMS');		if(t.hCheck.good){			t.popup.blockButtons();			$.getJSON('/registration/activation', d, function(data){				if(data.result=='ok'){					t.popup.close();					Omlet.user.msisdn_enabled = true;					if(t.oReservedLink){						$(t.oReservedLink).click();					} else {						Omlet.reload();					};					//t.regComplete();				} else {					t.popup.unblockButtons();					t.popup.invalidate( data.errors, null, true );				}			});		} else {			t.popup.invalidate( t.hCheck.errors, null, true );		}	},		blockSubmit: function(){		var j = this.popup.jContainer.find('div.button');		j.animate({opacity: 0.3}, 400);		this.blocked = true;	},		unblockSubmit: function(){		var j = this.popup.jContainer.find('div.button');		j.animate({opacity: 1}, 400);		this.blocked = false;	},		regComplete: function(){		var sBackUrl = $('#regbackurl').val();		if(sBackUrl && sBackUrl !=''){			document.location.href = sBackUrl;		} else {			document.location.href='/signup/complete/';		}	}	};popupData = {};oPhoneSelect = {	items: null,	popup: null,	cache: {},	ajaxWait: false,	type: 'profile',	build: function(pd){		var sItems = '';		if(pd.items){			pd.items = pd.items.split('|');			var aItems = pd.items;			var itemsLength = aItems.length;			var columnLength = Math.ceil(itemsLength / 4);			sItems += '<div class="phone_mark_column">';			var k = 1;			for(var i=0; i<aItems.length; i++){				sItems += '<div class="phone_mark">'+aItems[i]+'</div>';				if(i % columnLength == columnLength - 1 && i != columnLength*k - 1){					sItems += '</div><div class="phone_mark_column">';					k++;				}				if(i == columnLength*k){					sItems += '</div><div class="phone_mark_column">';					k++;				}			}			sItems += '</div>';		}		var sHtml = '<div class="mobilemark_captions"><div class="mobilemark_caption step1">Выберите марку телефона</div> <div class="mobilemark_caption step1_par small" style="display:none" onclick="oPhoneSelect.showMarks()">Телефон</div> <div class="mobilemark_caption step2 small">&nbsp;</div> <div class="mobilemark_caption step3 small">&nbsp;</div> <div class="clear"></div><div class="mobilemark_caption step1_0" style="display:none">Выберите модель телефона</div><div class="clear"></div> </div><div id="phoneeditor_text" class="edit_popup_input" style="margin-left:0px;display:none"><input type="text" id="popupeditor_public" value="'+pd.public+'" onkeyup="oPhoneSelect.onKeyPress()"/></div><div class="clear"></div>';		sHtml += '<div class="mobilemodel_list_outer" style="display:none"><div class="mobilemodel_list"></div></div><div class="mobilemark_list">'+sItems+'</div><div class="clear"><div id="mobilemodel_loading" style="text-align:center">Загрузка...</div></div>';		return sHtml;	},		start: function(obj){		var sHtml = '<div class="mobilemark_caption">&nbsp;</div><div class="edit_popup_input"><input type="text" id="popupeditor_public" value="'+pd.public+'" onkeyup="oPhoneSelect.onKeyPress()"/></div>';		sHtml += '<div class="mobilemodel_list_outer"><div class="mobilemodel_list">'+sItems+'</div></div><div class="clear"><div id="mobilemodel_loading" style="text-align:center">Загрузка...</div></div>';		this.popup = new Popup();		this.popup.show({width: 355, items:[ sHtml ], 			buttons: [{text:'Сохранить', handler: function(){							}}]		});					},	init: function(pd){		var t = this;		t.popup = pd.popup;		t.j = t.popup.jContainer;		t.j.find('div.phone_mark').each(function(i){			$(this).hover(function(){				$(this).addClass('hovered');			}, function(){				$(this).removeClass('hovered');			}).click(function(){				t.initMark(this.innerHTML);//				var s = $('#popupeditor_public').val(this.innerHTML);//				for(var i=0; i<oPhoneSelect.items.length; i++){//					oPhoneSelect.items[i].obj.className = 'phone_model';//				};//				this.className = 'phone_model selected';			});		});		t.popup.blockButtons();	},	showMarks: function(){		var t = this;		t.j.find('.mobilemark_caption').hide();		t.j.find('.mobilemark_caption.step1').show();		t.j.find('.mobilemark_list').show();		t.j.find('#phoneeditor_text').hide();		t.j.find('.mobilemodel_list_outer').hide();		t.j.find('.mobilemark_caption.step1_0').hide();		t.modelid = null;		t.popup.blockButtons();	},		initMark: function(s){		var t = this;		t.mark = s;		t.j.find('.mobilemark_list').hide();		t.j.find('#phoneeditor_text').show().find('input').val('')[0].focus();		t.j.find('.mobilemodel_list_outer').show();		t.j.find('.mobilemodel_list').html('');		t.j.find('.mobilemark_caption.step1').hide();		t.j.find('.mobilemark_caption.step1_par').show();		t.j.find('.mobilemark_caption.step2').html(s).show();		t.j.find('.mobilemark_caption.step1_0').show();		t.onKeyPress();	},		initModels: function(data){		var t = this;		var s = '';		for(var i=0; i<data.length; i++){			s += '<div class="phone_model" markid="'+data[i].markid+'" modelid="'+data[i].id+'">'+data[i].modelname+'</div>';		}		t.j.find('.mobilemodel_list').html(s);		t.j.find('div.phone_model').each(function(i){			$(this).hover(function(){				$(this).addClass('hovered');			}, function(){				$(this).removeClass('hovered');			}).click(function(){				t.j.find('div.phone_model').removeClass('selected');				var j = $(this);				j.addClass('selected');				t.model = j.html();				t.j.find('.mobilemark_caption.step3').html(t.model).show();				t.markid = j.attr('markid');				t.modelid = j.attr('modelid');				t.popup.unblockButtons();			});		});	},		onKeyPress: function(){		var t = this;		if(t.ajaxWait)return false;		var s = t.j.find('#popupeditor_public').val();		var data = t.cache[t.mark+'|'+s];		if(data){			t.initModels(data);		} else {			t.ajaxString = s;			$.getJSON('/registration/phone-models', {mark: t.mark, model: s}, function(data){				if(s.length<4) t.cache[t.mark+'|'+s] = data;				t.initModels(data);				t.ajaxWait = false;				s = t.j.find('#popupeditor_public').val();				if(t.ajaxString != s) t.onKeyPress();			});			t.ajaxWait = true;		}	},		show: function(obj, sType){		this.type = sType;		var j = $(obj);		var pd = {};		pd.public = stripChars(j.attr('public')) || '';			pd.j = j;					pd.items = j.attr('items');		var sItems = '';		var c1 = (pd.public && pd.public!='' ? pd.public : 'Выберите...');		var c2 = (pd.friends && pd.friends!='' ? pd.friends : 'Выберите...');		iWidth = 355;		var sHtml = this.build(pd);				var p = new Popup();		popupData.popup = p;				if(oPopup.count()>1){return(false)};		p.show({width: iWidth, 			items:[ sHtml ],			buttons:			[{text:'Сохранить', handler: function(){				this.popup.close();				oPhoneSelect.save();				return false;			}}]		});		this.init(popupData);	},		save: function(){		var t = this;		if(t.modelid){			var sName = t.mark + " " + t.model;			$('#mark_id').val(t.markid);			$('#model_id').val(t.modelid);			$('.phone_caption').html(sName);			$.post('/ajax/profile/savephonemodel/', {marka: t.mark, model: t.model, markid: t.markid, modelid: t.modelid}, function(){				Omlet.checkMtsRefresh(); 			});		};	}	};function stripChars(val){	return typeof val != 'undefined' ? val.replace(/</g, '&lt;').replace(/'/g, '&#39;').replace(/"/g, '&quot;') : '';}function to2digits(i){	var s = i + '';	if(s.length<2) s='0'+s;	return s;}