﻿var Objs;
var ActiveHelp = null;

String.prototype.RepeatedChars = function() {
	var Char = '';
	var Result = 0;
	for (var i=0; i<this.length; i++) {
		if (Char == this.charAt(i)) Result++;
		Char = this.charAt(i);
	}
	return Result;
}
function GetProvincesList() {
	var Ajax = new XMLHttp();
	var objProvincesList = document.getElementById('Province');
	var objCitiesList = document.getElementById('City');
	if (Ajax.Support) {
		Ajax.ErrHandler = function(err) {
		}
		Ajax.ResHandler = function(res) {
			var intOptions = objProvincesList.options.length;
			for (var i = 0; i < intOptions; i++) {
				objProvincesList.options[0] = null;
			}
			intOptions = objCitiesList.options.length;
			for (var i = 1; i < intOptions; i++) {
				objCitiesList.options[1] = null;
			}
			var Rows = res.split('*SP2*');
			for (var i = 0; i < Rows.length-1; i++) {
				var Cols = Rows[i].split('*SP1*');
				var objOption = new Option();
				objOption.value = Cols[1];
				objOption.text = Cols[0];
				objProvincesList.options.add(objOption);
			}
		}
		Ajax.Create('./SignUp.aspx?country_p=' + document.getElementById('Country').value);
	}
}
function GetCitiesList() {
	var Ajax = new XMLHttp();
	var objCitiesList = document.getElementById('City');
	if (Ajax.Support) {
		Ajax.ErrHandler = function(err) {
		}
		Ajax.ResHandler = function(res) {
			var intOptions = objCitiesList.options.length;
			for (var i = 0; i < intOptions; i++) {
				objCitiesList.options[0] = null;
			}
			var Rows = res.split('*SP2*');
			for (var i = 0; i < Rows.length-1; i++) {
				var Cols = Rows[i].split('*SP1*');
				var objOption = new Option();
				objOption.value = Cols[1];
				objOption.text = Cols[0];
				objCitiesList.options.add(objOption);
			}
		}
		Ajax.Create('./SignUp.aspx?province_c=' + document.getElementById('Province').value);
	}
}
function GetOperatorsList() {
	var Ajax = new XMLHttp();
	var objOperatorsList = document.getElementById('Operator');
	if (Ajax.Support) {
		Ajax.ErrHandler = function(err) {
		}
		Ajax.ResHandler = function(res) {
			var intOptions = objOperatorsList.options.length;
			for (var i = 0; i < intOptions; i++) {
				objOperatorsList.options[0] = null;
			}
			var Rows = res.split('*SP2*');
			for (var i = 0; i < Rows.length-1; i++) {
				var Cols = Rows[i].split('*SP1*');
				var objOption = new Option();
				objOption.value = Cols[1];
				objOption.text = Cols[0];
				objOperatorsList.options.add(objOption);
			}
		}
		Ajax.Create('./SignUp.aspx?country_o=' + document.getElementById('Country').value);
	}
}
function PasswordStrength() {
	var Help = document.getElementById('PasswordHelp');
	var Meter = Help.getElementsByTagName('IMG')[0];
	var SPANs = Help.getElementsByTagName('SPAN');
	var Password = Objs['Password'].value;
	var Length = Password.length;
	var Score = -1;
	SPANs[1].innerHTML = Length + ' کاراکتر';
	if (Length > 0 && Length < 8) {
		Score = 0;
	} else {
		var LowAlpha = (LowAlpha = Password.match(/[a-z]/g))? LowAlpha.length: 0;
		var UpAlpha = (UpAlpha = Password.match(/[A-Z]/g))? UpAlpha.length: 0;
		var Number = (Number = Password.match(/[\d]/g))? Number.length: 0;
		var SpecialChars = (SpecialChars = Password.match(/[^a-z\d]/ig))? SpecialChars.length: 0;
		var RepeatedChars = Password.RepeatedChars();
		var MixedAlpha = Math.min(LowAlpha, UpAlpha);
		var X = Password.length * 10;
		var Y = 15 * ((MixedAlpha > 2)?2:MixedAlpha);
		var Z1 = 3 * ((Number > 2)?2:Number);
		var Z2 = 3 * ((SpecialChars > 2)?2:SpecialChars);
		var R = RepeatedChars * 5;
		Score = eval(X + Y + Z1 + Z2 - R);
		if (Score >= 122) {
			Y = 15 * ((MixedAlpha > 3)?3:MixedAlpha);
			Z1 = 3 * ((Number > 3)?3:Number);
			Z2 = 3 * ((SpecialChars > 3)?3:SpecialChars);
			Score = eval(X + Y + Z1 + Z2 - R);
		}
	}
	if (Score == -1) {
		SPANs[0].innerHTML = '&nbsp;';
		Meter.style.backgroundPosition = '0px 2px';
	} else if (Score == 0) {
		SPANs[0].innerHTML = 'خیلی کوتاه -';
		Meter.style.backgroundPosition = '0px 2px';
	} else if (Score > 0 && Score < 65) {
		SPANs[0].innerHTML = 'خیلی ضعیف -';
		Meter.style.backgroundPosition = '0px -8px';
	} else if (Score >= 65 && Score < 102) {
		SPANs[0].innerHTML = 'ضعیف -';
		Meter.style.backgroundPosition = '0px -6px';
	} else if (Score >= 102 && Score < 122) {
		SPANs[0].innerHTML = 'متوسط -';
		Meter.style.backgroundPosition = '0px -4px';
	} else if (Score >= 122 && Score < 183) {
		SPANs[0].innerHTML = 'قوی -';
		Meter.style.backgroundPosition = '0px -2px';
	} else {
		SPANs[0].innerHTML = 'خیلی قوی -';
		Meter.style.backgroundPosition = '0px 0px';
	}
}
function ResetSecurityCode() {
	var URL = './SecurityCode.aspx?' + Math.round(Math.random() * 10000000000);
	document.getElementById('SecurityCodeTbl').getElementsByTagName('IMG')[1].src = URL;
}
function Init() {
	ResetSecurityCode();
	Objs = {
		'UserName'			:	document.getElementById('UserName'),
		'Password'			:	document.getElementById('Password'),
		'PasswordConfirm'	:	document.getElementById('PasswordConfirm'),
		'FirstName'			:	document.getElementById('FirstName'),
		'LastName'			:	document.getElementById('LastName'),
		'Gender'			:	document.getElementById('Gender'),
		'BirthDay'			:	document.getElementById('BirthDay'),
		'BirthMonth'		:	document.getElementById('BirthMonth'),
		'BirthYear'			:	document.getElementById('BirthYear'),
		'Occupation'		:	document.getElementById('Occupation'),
		'Country'			:	document.getElementById('Country'),
		'Province'			:	document.getElementById('Province'),
		'City'				:	document.getElementById('City'),
		'PostalCode'		:	document.getElementById('PostalCode'),
		'MobileNumber'		:	document.getElementById('MobileNumber'),
		'Operator'			:	document.getElementById('Operator'),
		'Email'				:	document.getElementById('Email'),
		'EmailConfirm'		:	document.getElementById('EmailConfirm'),
		'SecurityCode'		:	document.getElementById('SecurityCode')
	};
	document.getElementById('SecurityCodeHelp').onclick = function() {
		window.open("./SecurityCodeHelp.htm", "SecurityCodeHelp", "width=300, height=190, resizable=0, location=0, status=0, toolbar=0, scrollbars=1");
		return false
	}
	document.getElementById('PasswordRules').onclick = function() {
		window.open("./PasswordRules.htm", "PasswordRules", "width=450, height=350, resizable=0, location=0, status=0, toolbar=0, scrollbars=1");
		return false
	}
	for (var ID in Objs) {
		if (ID == 'UserName') {
			document.getElementById('UserNameHelp').getElementsByTagName('INPUT')[0].onclick = function() {
				var Ajax = new XMLHttp();
				if (Ajax.Support) {
					var Message = '';
					Ajax.ErrHandler = function(err) {
						this.ResHandler('3')
					}
					Ajax.ResHandler = function(re) {
						switch (re) {
							case '0' :
								Message = 'نام کاربری انتخاب شده قابل انتخاب میباشد.';
								break;
							case '1' :
								Message = '<img src="/Images/SignUp_Alert.gif" alt="" />نام کاربری درخواست شده موجود نمیباشد، لطفا نام کاربری دیگری انتخاب نمایید.';
								Objs['UserName'].select();
								break;
							case '2' :
								Message = '<img src="/Images/SignUp_Alert.gif" alt="" />رعایت قوانین بالا در انتخاب نام کاربری الزامی است.';
								Objs['UserName'].select();
								break;
							case '3' :
								Message = '<img src="/Images/SignUp_Alert.gif" alt="" />برای چک کردن وضعیت نام کاربری باید به اینترنت متصل باشید.';
								break;
						}
						var HelpHolder = document.getElementById('UserNameHelp');
						var H6 = HelpHolder.getElementsByTagName('H6')[0];
						if (!H6) {
							H6 = document.createElement('H6');
							HelpHolder.appendChild(H6);
						}
						H6.innerHTML = Message;
					}
					if (/^[0-9a-z]+([-._][0-9a-z]+)*$/i.test(Objs['UserName'].value) && Objs['UserName'].value.length > 3 && Objs['UserName'].value.length < 26) {
						Ajax.Create('./SignUp.aspx?id=' + Objs['UserName'].value.toLowerCase());
					} else {
						Ajax.ResHandler('2')
					}
				}
			}
		}
		if (ID == 'Password') {
			Objs['Password'].onkeyup = PasswordStrength;
			Objs['Password'].onkeydown = PasswordStrength;
		}
		Objs[ID].onfocus = function() {
			var CurrentHelp = document.getElementById(this.id + 'Help');
			if (ActiveHelp) {
				ActiveHelp.style.visibility = 'hidden';
			}
			if (CurrentHelp) {
				var H6 = CurrentHelp.getElementsByTagName('H6')[0];
				if (H6 && CurrentHelp != ActiveHelp) CurrentHelp.removeChild(H6);
				CurrentHelp.style.visibility = 'visible';
			}
			ActiveHelp = CurrentHelp;
		}
	}
	document.getElementById('SecurityCodeTbl').getElementsByTagName('A')[1].onclick = function() {
		ResetSecurityCode();
		return false
	}
	var objAgreement = document.getElementById('AgreementTbl').getElementsByTagName('TEXTAREA')[0];
	objAgreement.onfocus = function() {
		this.style.height = '200px';
	}
	objAgreement.onblur = function() {
		this.style.height = '100px';
	}
	document.getElementById('AgreementTbl').getElementsByTagName('INPUT')[1].onclick = function() {
		location.href = '/';
	}
	Objs['Country'].onchange = function() {
		GetProvincesList();
		GetOperatorsList();
	}
	Objs['Province'].onchange = function() {
		GetCitiesList();
	}
}
