function ZZZ() {
	document.getElementById('optional_widgets').style.display = 'none';
	document.getElementById('featured_game_list').style.display = 'none';
	document.getElementById('game_launcher').style.display = 'block';
}

var dtID = false;
var dtTimer = false;

function dtStartTimer(tagID) {
	if(!dtTimer) {
		dtID = tagID;
		dtTimer = setTimeout("dtCloseTag()", 500);
	}
}

function dtCloseTag() {
	dtStopTimer();
	document.getElementById(dtID).style.display = 'none';
}

function dtStopTimer() {
	if(dtTimer) {
		clearTimeout(dtTimer);
		dtTimer = false;
	}
}

function HighTD(tag) {
	tag.style.backgroundColor = '#C3C7C8';
	if(tag.id.indexOf('top_') >= 0) {
		document.getElementById(tag.id.replace('top_', 'bot_')).style.backgroundColor = '#C3C7C8';;
	}
	else
	if(tag.id.indexOf('bot_') >= 0) {
		document.getElementById(tag.id.replace('bot_', 'top_')).style.backgroundColor = '#C3C7C8';;
	}
}

function LowTD(tag) {
	tag.style.backgroundColor = '#E3E7E8';
	if(tag.id.indexOf('top_') >= 0) {
		document.getElementById(tag.id.replace('top_', 'bot_')).style.backgroundColor = '#E3E7E8';;
	}
	else
	if(tag.id.indexOf('bot_') >= 0) {
		document.getElementById(tag.id.replace('bot_', 'top_')).style.backgroundColor = '#E3E7E8';;
	}
}

function setDayCount(formID, yearName, monthName, dayName) {
	var dayCount = 31;
	var formTag = document.getElementById(formID);
	var month = formTag[monthName].value;

	if(month == 1) {
		var year = formTag[yearName].value;
		if(year % 4 == 0)
			dayCount = 29;
		else
			dayCount = 28;
	}
	else {
		if(month <= 6 && month % 2 != 0)
			dayCount = 30;
		else
		if(month > 6 && month % 2 == 0)
			dayCount = 30;
	}

	var options = formTag[dayName].options;
	var optionsCount = options.length;
	if(optionsCount > dayCount) {
		for(var i = 0; i < optionsCount - dayCount; i++) {
			var cItem = options[options.length - 1];
			formTag[dayName].removeChild(cItem, true);
		}
	}
	else
	if(optionsCount < dayCount) {
		for(var i = 0; i < dayCount - optionsCount; i++) {
			var cItem = document.createElement('option');
			cItem.value = options.length + 1;
			cItem.innerHTML = options.length + 1;
			formTag[dayName].appendChild(cItem);
		}
	}
}

function CheckOnBlur(tag, obligate, eObligate) {
	if(obligate) {
		if(tag.value.length == 0) {
			HiLight(tag.name, true, eObligate);
			return(1);
		}
		else {
			HiLight(tag.name, false, eObligate);
		}
	}
	return(0);
}

function CheckOnBlurPhones(tagID1, tagID2, obligate, eObligate) {
	var tag1 = document.getElementById(tagID1);
	var tag2 = document.getElementById(tagID2);
	var ok = true;

	if(tag1.value.length == 0) {
		ok = false;
		HiLight(tag1.name, true, '');
	}
	else {
		HiLight(tag1.name, false, '');
	}

	if(tag2.value.length == 0) {
		ok = false;
		HiLight(tag2.name, true, '');
	}
	else {
		HiLight(tag2.name, false, '');
	}

	if(ok) {
		ShowErrorMsg(eObligate, false);
		return(0);
	}
	else {
		ShowErrorMsg(eObligate, true);
		return(1);
	}
}

function CheckOnBlur2(tag, obligate, eObligate, minLen, eLen) {
	if(CheckOnBlur(tag, obligate, eObligate) > 0)
		return(1);
	if(minLen > 0) {
		if(tag.value.length < minLen) {
			HiLight(tag.name, true, eLen);
			return(1);
		}
		else {
			HiLight(tag.name, false, eLen);
			ShowErrorMsg(eLen, false);
		}
	}
	return(0);
}

function RefreshImage(imgTag, baseURL) {
	imgTag.src = baseURL + 'js' + Math.random();
}

function FocusLogin(xTag, xText) {
	if(xTag.value == xText)
		xTag.value = '';
}

function BlurLogin(xTag, xText) {
	if(xTag.value == '')
		xTag.value = xText;
}

function SubmitLogin(lTag, pTag, xLogin, xPass) {
	var ok = lTag.value != xLogin && pTag.value != xPass && lTag.value != '' && pTag.value != '';
	if(ok) {
		lTag.readOnly = true;
		pTag.readOnly = true;
	}
	else {
		var errorTag = document.getElementById('login_widget_error');
		if(errorTag) {
			errorTag.style.display = 'block';
		}
	}
	return(ok);
}

var FButton = false;
function FGetButton() {
	if(!FButton) {
		FButton = document.createElement('a');
		FButton.style.position = 'absolute';
		FButton.style.background = 'url(img/fpn_n_' + languageCode + '.jpg) 250px 198px no-repeat';

		FButton.style.right = '4px';
		FButton.style.top = '6px';
		FButton.style.width = '418px';
		FButton.style.height = '250px';

		FButton.href = '#';
		//FButton.onmouseover = 'this.style.backgroundImage = "url(img/fpn_h.png)"';
		//FButton.onmouseout = 'this.style.backgroundImage = "url(img/fpn_n.png)"';
		document.getElementById('flashcontent').appendChild(FButton);
	}
}

var FRegButton = false;
function FGetRegButton() {
	if(!FRegButton) {
		FRegButton = document.createElement('a');
		FRegButton.style.position = 'absolute';
		FRegButton.style.background = 'url(img/dot.gif)';
		FRegButton.style.right = '4px';
		FRegButton.style.top = '4px';
		FRegButton.style.width = '418px';
		FRegButton.style.height = '250px';
		FRegButton.href = 'register.html';
		document.getElementById('flashcontent').appendChild(FRegButton);
	}
}

function FShowRegButton() {
	FGetRegButton();
	FRegButton.style.display = 'block';
}

function FHideRegButton() {
	FGetRegButton();
	FRegButton.style.display = 'none';
}

function FShowButton(gameCode, w, h) {
	FGetButton();
	FButton.href = 'gameLauncher.html?id=' + gameCode;
	FButton.onclick = function() { return openGame(gameCode, w, h); };
	FButton.style.display = 'block';
	FButton.target = '_blank';
}

function FShowButtonGames() {
	FGetButton();
	FButton.href = 'games.html';
	FButton.onclick = null;
	FButton.style.display = 'block';
	FButton.target = '';
}

function FHideButton() {
	FGetButton();
	FButton.style.display = 'none';
	FGetRegButton();
	FRegButton.style.display = 'none';
}

/*function openGame(gameCode, w, h) {
	var width = w ? w : 833;
	var height = h ? h : 625;

	var windowName = '';
	if(gameCode.indexOf('xc_') >= 0) {
		windowName = 'casino';
	}
	else
		windowName = gameCode;

	var win = window.open('gameLauncher.html?id=' + gameCode, windowName, 'width=' + width + ', height=' + height + ', location=no, menubar=no, location=no, status=no, toolbar=no, scrollbars=yes, resizable=yes');
	if(win) win.focus();
	return(false);
}*/

function openFGame(gameCode, w, h) {
	var width = w ? w : 833;
	var height = h ? h : 625;

	var windowName = '';
	if(gameCode.indexOf('xc_') >= 0) {
		windowName = 'casino';
	}
	else
		windowName = gameCode;

	var win = window.open('playForFun.html?id=' + gameCode, windowName, 'width=' + width + ', height=' + height + ', location=no, menubar=no, location=no, status=no, toolbar=no, scrollbars=yes, resizable=yes');
	if(win) win.focus();
	return(false);
}

function openGameFromFlash(gameCode, w, h) {
	var width = w ? w : 833;
	var height = h ? h : 625;

	var windowName = '';
	if(gameCode.indexOf('xc_') >= 0)
		windowName = 'casino';
	else
		windowName = gameCode;

	window.open('gameLauncher.html?id=' + gameCode, windowName, 'width=' + width + ', height=' + height + ', location=no, menubar=no, location=no, status=no, toolbar=no, scrollbars=yes, resizable=yes');
}

function CheckBtnSubmit() {
	if(document.getElementById('x_agree').checked) {
		document.getElementById('btnSubmit').disabled = false;
		document.getElementById('z_agree').className = '';
	}
	else {
		document.getElementById('btnSubmit').disabled = true;
		document.getElementById('z_agree').className = 'z_agree';
	}
}

function checkGender(value){
	var fm = document.getElementById('mainForm');
	if(value == 'Mr.'){
		fm.gender.value = 1; 
	} else
	if(value == 'Mrs.' || value == 'Ms.'){
		fm.gender.value = 2; 
	}
	FieldBlured({'target' : document.getElementById('gender_select')});
}
function checkZip(event){
	var code;
	if(event.charCode == undefined)
	// Not a Firefox
		code = event.keyCode;
	else {
	// Stupid Firefox
		code = event.charCode;
		if(code == 0) return true;
	}
	var char = String.fromCharCode(code);

	if(!char.match(/[0-9a-zA-Z]/)){
		if(event.preventDefault){
			event.preventDefault();
		}
		return false;
	}	
}
function checkKeys(event, mask){
	if(event.ctrlKey) return true;

	var code;
	if(event.charCode == undefined) {
	// Not a Firefox
		if(event.which == 0) return true;
		code = event.keyCode;
	}
	else {
	// Stupid Firefox
		code = event.charCode;
		if(code == 0) return true;
	}

	if(code < 32 || code == 46) return true;

	var char = String.fromCharCode(code);

	if(!char.match(mask)){
		if(event.preventDefault){
			event.preventDefault();
		}
		return false;
	}	
}

function checkText(event, mask) {
	var tag = event.srcElement ? event.srcElement : event.target;
	var newValue = tag.value.replace(mask, '');
	if(newValue != tag.value)
		tag.value = tag.value.replace(mask, '');
}

function checkPhone(event){
	var code;
	if(event.charCode == undefined)
	// Not a Firefox
		code = event.keyCode;
	else {
	// Stupid Firefox
		code = event.charCode;
		if(code == 0) return true;
	}
	var char = String.fromCharCode(code);

	if(!char.match(/[0-9]/)){
		if(event.preventDefault){
			event.preventDefault();
		}
		return false;
	}	
}
function checkNumbers(event){
	var code;
	if(event.charCode == undefined)
	// Not a Firefox
		code = event.keyCode;
	else {
	// Stupid Firefox
		code = event.charCode;
		if(code == 0) return true;
	}
	var char = String.fromCharCode(code);

	if(!char.match(/[0-9]/)){
		if(event.preventDefault){
			event.preventDefault();
		}
		return false;
	}	
}
function checkCountryCode(event){
	var code;
	if(event.charCode == undefined)
	// Not a Firefox
		code = event.keyCode;
	else {
	// Stupid Firefox
		code = event.charCode;
		if(code == 0) return true;
	}
	var char = String.fromCharCode(code);

	if(!char.match(/[0-9|\+]/)){
		if(event.preventDefault){
			event.preventDefault();
		}
		return false;
	}	
}
function checkNames(event){
	var code;
	if(event.charCode == undefined)
	// Not a Firefox
		code = event.keyCode;
	else {
	// Stupid Firefox
		code = event.charCode;
		if(code == 0) return true;
	}
	var char = String.fromCharCode(code);

	if(!char.match(/[a-zA-Z]/) && code != 39/* ' */ && code != 96 /* ` */ && code != 45/* - */ && code != 46 /* . */){
		if(event.preventDefault){
			event.preventDefault();
		}
		return false;
	}
}
function checkUsernameChars(event){
	var code;
	if(event.charCode == undefined)
	// Not a Firefox
		code = event.keyCode;
	else {
	// Stupid Firefox
		code = event.charCode;
		if(code == 0) return true;
	}
	var char = String.fromCharCode(code);

	if(!char.match(/[\w]/) && code!=13){
		if(event.preventDefault){
			event.preventDefault();
		}
		return false;
	}	
}
function checkAddress(event){
	var code = event.charCode?event.charCode:event.keyCode;

	if(code == 59 /* ; */){
		if(event.preventDefault){
			event.preventDefault();
		}
		return false;
	}		
}

function ConfirmPassword(showErrorMsg) {

	var pass = document.getElementById('password').value;
	var pass_verify = document.getElementById('pass_verify').value;
	
	if(pass_verify != pass || pass_verify.length == 0) {
		fieldStatuses['pass_verify'].status = 2;
		if(showErrorMsg) {
			HideRegErrorMsg();
			ShowRegErrorMsg('pass_verify', 'passmiss');
		}
		SetFieldIndicator('pass_verify', 2);
		HighlightRegField(document.getElementById('pass_verify').form, 'pass_verify', true);
	}
	else {
		fieldStatuses['pass_verify'].status = 1;
		if(showErrorMsg) {
			HideRegErrorMsg();
			ShowRegErrorMsg();
		}
		SetFieldIndicator('pass_verify', 1);
		HighlightRegField(document.getElementById('pass_verify').form, 'pass_verify', false);
	}
}

function CheckPassword(skip) {
	var keys = '1234567890-=qwertyuiopasdfghjklzxcvbnm!@#$%^&*()_+';

	var pass = document.getElementById('password').value;
	var pass_holder = document.getElementById('pass_str_holder');
	var tag_list = pass_holder.getElementsByTagName('span');
	for(var i = 0; i < tag_list.length; i++) {
		if(tag_list[i].id && tag_list[i].id != '')
			tag_list[i].style.display = 'none';
	}

	if(pass.length == 0)
		document.getElementById('pass_str_no_pass').style.display = 'inline';
	else
	if(pass.length < 6)
		document.getElementById('pass_str_short').style.display = 'inline';
	else {
		var prev_c = '';
		var lc = 0;
		var uc = 0;
		var nc = 0;
		var xc = 0;
		var dup = 0;
		var dd = 0;
		for(var i = 0; i < pass.length; i++) {
			var c = pass.substr(i, 1);
			if(c.match('[a-z]'))
				lc++;
			else
			if(c.match('[A-Z]'))
				uc++;
			else
			if(c.match('[0-9]'))
				nc++;
			else
				xc++;
			if(c == prev_c)
				dup--;
			prev_c = c;
			c = c.toLowerCase();
			var k_pos = keys.indexOf(c);
			if(k_pos >= 0) {
				var dirty = true;
				var k_d = k_pos - i;
				for(var j = k_pos; j > k_pos - 3; j--) {
					var pj = j - k_d;
					if(pj < 0 || j < 0) {
						dirty = false;
						break;
					}
					if(keys[j] != pass[pj]) {
						dirty = false;
						break;
					}
				}
				if(dirty) dd--;
			}
		}
		var total = 0;
		if(lc > 1)
			total++;
		if(uc > 1)
			total++;
		if(nc > 1)
			total++;
		if(xc > 1)
			total += 2;
		if(dup < 0)
			total--;
		if(dd < 0)
			total -= 2;
		switch(total) {
			case 0: document.getElementById('pass_str_0').style.display = 'inline'; break;
			case 1: document.getElementById('pass_str_1').style.display = 'inline'; break;
			case 2: document.getElementById('pass_str_2').style.display = 'inline'; break;
			case 3: document.getElementById('pass_str_3').style.display = 'inline'; break;
			default:
				if(total >= 4)
					document.getElementById('pass_str_4').style.display = 'inline';
				else
					document.getElementById('pass_str_0').style.display = 'inline';
				break;
		}
	}
	HideRegErrorMsg();
	if(!skip)
		ShowRegErrorMsg('XPASS_STR', 'XPASS_STR');
	ConfirmPassword(false);
}

function HiLight(fieldName, hasError, code) {
	var fm = document.getElementById('mainForm');
	var fl = fm[fieldName];
	if(hasError && fl.className.indexOf(' hl_input') == -1) {
		fl.className += ' hl_input';
		ShowErrorMsg(code, true);
		//fl.focus();
	}
	else
	if(!hasError && fl.className.indexOf(' hl_input') >= 0) {
		fl.className = fl.className.replace(' hl_input', '');
		ShowErrorMsg(code, false);
	}
}

function ShowErrorMsg(code, show) {
	if(code != '') {
		var item = document.getElementById('err_reg_' + code);
		if(item) {
			if(show)
				item.style.display = 'block';
			else
				item.style.display = 'none';
		}
	}
}

////////////////////////////////////////////////////////////////////////////////

var currentErrorField = false;

var fieldStatuses = {
	'fname': { 'status': 0, 'showMsg': false, 'regField': true },
	'lname': { 'status': 0, 'showMsg': false, 'regField': true },
	'gender': { 'status': 0, 'showMsg': false, 'regField': true },
	'dob': { 'status': 0, 'showMsg': false, 'regField': true, 'msgCode': 'yearunknown' },
	'email': { 'status': 0, 'showMsg': false, 'regField': true, 'profileField': true, 'msgCode': 'mail' },
	'country': { 'status': 0, 'showMsg': false, 'regField': true, 'profileField': true },
	'phone': { 'status': 0, 'showMsg': false, 'regField': true, 'profileField': true, 'msgCode': 'full_phone' },
	'login': { 'status': 0, 'showMsg': false, 'regField': true },
	'password': { 'status': 0, 'showMsg': false, 'regField': true, 'msgCode': 'passempty' },
	'XPASS_STR': { 'status': 0, 'showMsg': false, 'regField': true },
	'pass_verify': { 'status': 0, 'showMsg': false, 'regField': true, 'msgCode': 'passmiss' },
	'currency': { 'status': 0, 'showMsg': false, 'regField': true },
	//'sq': { 'status': 0, 'showMsg': false, 'regField': true },
	//'sa': { 'status': 0, 'showMsg': false, 'regField': true },

	'address_street': { 'status': 0, 'showMsg': false, 'profileField': true },
	'city': { 'status': 0, 'showMsg': false, 'profileField': true },
	'zip': { 'status': 0, 'showMsg': false, 'profileField': true }
	/*,
	'vcode': { 'status': 0, 'showMsg': false, 'msgCode': 'captcha' }*/
};

// statuses are:
// 0 - not yet checked
// 1 - field value is ok
// 2 - field value is wrong
function SetFieldIndicator(tagName, status) {
	var imgURL = 'img/reg_none.gif';
	switch(status) {
		case 1: imgURL = 'img/reg_ok.gif'; break;
		case 2: imgURL = 'img/reg_err.gif'; break;
	}
	var ind = document.getElementById(tagName + '_indicator');
	if(ind) ind.src = imgURL;
}

function FindErrorPopup(msgTag) {
	var ep = msgTag.parentNode.parentNode.parentNode;
	if(ep && ep.tagName == 'DIV')
		return(ep);
	else
		return(undefined);
}

function ShowRegErrorMsg(fieldName, errorCode) {
	if(!errorCode || !fieldName) {
		for(var i in fieldStatuses)
			if(fieldStatuses[i].status == 2) {
				if(fieldStatuses[i].msgCode)
					errorCode = fieldStatuses[i].msgCode;
				else
					errorCode = i;
				fieldName = i;
				break;
			}
	}
	if(errorCode && fieldName) {
		errorCode = 'err_reg_' + errorCode;
		fieldStatuses[fieldName].showMsg = true;
		var msgTag = document.getElementById(errorCode);
		var popupTag = FindErrorPopup(msgTag);
		msgTag.style.display = 'block';
		if(popupTag)
			popupTag.style.display = 'block';
	}
}

function HideRegErrorMsg() {
	for(var i in fieldStatuses)
		if(fieldStatuses[i].showMsg) {
			var errorCode;
			if(fieldStatuses[i].msgCode)
				errorCode = fieldStatuses[i].msgCode;
			else
				errorCode = i;
			errorCode = 'err_reg_' + errorCode;
			var fieldName = i;

			var msgTag = document.getElementById(errorCode);
			var popupTag = FindErrorPopup(msgTag);
			msgTag.style.display = 'none';
			if(popupTag)
				popupTag.style.display = 'none';
			fieldStatuses[fieldName].showMsg = false;
			// If somehow we have more popups showing, then we will hide all of them!
			//break;
		}
	ShowRegOblig(false);
}

var needCheckDOB = false;
var needCheckPhone = false;

function FieldFocused(event) {
	var fm = document.getElementById('mainForm');
	if(needCheckDOB) {
		fm['day'].wasHere = true;
		fm['month'].wasHere = true;
		fm['year'].wasHere = true;
		FieldDOBBlured(event);
	}

	if(needCheckPhone) {
		fm['phone_country_code'].wasHere = true;
		fm['phone_number'].wasHere = true;
		FieldPhoneBlured(event);
	}

	needCheckDOB = false;
	needCheckPhone = false;

	var e = event ? event : window.event;
	var src = e.target ? e.target : e.srcElement;

	if(fieldStatuses[src.name].status == 2 && !fieldStatuses[src.name].showMsg) {
		var errorCode;
		if(fieldStatuses[src.name].msgCode)
			errorCode = fieldStatuses[src.name].msgCode;
		else
			errorCode = src.name;

		HideRegErrorMsg();
		ShowRegErrorMsg(src.name, errorCode);
	}
}

function CheckFieldPassValue(formTag, fieldName) {
	if(formTag[fieldName].value.length == 0) {
		fieldStatuses[fieldName].status = 2;
		fieldStatuses.password.msgCode = 'passempty';
	}
	else
	if(formTag[fieldName].value.length < 6) {
		fieldStatuses[fieldName].status = 2;
		fieldStatuses.password.msgCode = 'shortpass';
	}
	else {
		fieldStatuses[fieldName].status = 1;
	}
	SetFieldIndicator(fieldName, fieldStatuses[fieldName].status);
	HighlightRegField(formTag, fieldName, fieldStatuses[fieldName].status == 2);
}

function FieldPassBlured(event) {
	var e = event ? event : window.event;
	var src = e.target ? e.target : e.srcElement;

	CheckFieldPassValue(src.form, src.name);

	HideRegErrorMsg();
	ShowRegErrorMsg();
}

function FieldBlured(event) {
	var e = event ? event : window.event;
	var src = e.target ? e.target : e.srcElement;

	CheckFieldValue(src.form, src.name);
	HideRegErrorMsg();
	ShowRegErrorMsg();
}

function FieldDOBFocused() {
	needCheckDOB = false;
	FieldFocused({'target': {'name': 'dob'}});
	needCheckDOB = true;
}

function FieldDOBBlured(event) {
	var e = event ? event : window.event;
	var src = e.target ? e.target : e.srcElement;
	src.wasHere = true;

	if(src.form) {
		CheckDOBValue(src.form);
		HideRegErrorMsg();
		ShowRegErrorMsg();
	}
}

function FieldPhoneFocused() {
	needCheckPhone = false;
	FieldFocused({'target': {'name': 'phone'}});
	needCheckPhone = true;
}

function FieldPhoneBlured(event) {
	var e = event ? event : window.event;
	var src = e.target ? e.target : e.srcElement;
	src.wasHere = true;

	if(src.form) {
		CheckPhoneValue(src.form);
		HideRegErrorMsg();
		ShowRegErrorMsg();
	}
}

function CheckFieldValue(formTag, fieldName) {
	if(formTag[fieldName].value.length == 0) {
		fieldStatuses[fieldName].status = 2;
	}
	else {
		fieldStatuses[fieldName].status = 1;
	}
	SetFieldIndicator(fieldName, fieldStatuses[fieldName].status);
	HighlightRegField(formTag, fieldName, fieldStatuses[fieldName].status == 2);
}

function CheckDOBValue(formTag) {
	var ok = 0;
	var status = 1;

	if(formTag['day'].wasHere && formTag['month'].wasHere && formTag['year'].wasHere) {

		if(formTag['day'].value.length == 0 ) {
			ok++;
			HighlightRegField(formTag, 'day', true);
		}
		else HighlightRegField(formTag, 'day', false);
		if(formTag['month'].value.length == 0) {
			ok++;
			HighlightRegField(formTag, 'month', true);
		}
		else HighlightRegField(formTag, 'month', false);
		if(formTag['year'].value.length == 0) {
			ok++;
			HighlightRegField(formTag, 'year', true);
		}
		else HighlightRegField(formTag, 'year', false);

			if(ok > 0) {
			status = 2;
		}
		
		fieldStatuses['dob'].status = status;
		SetFieldIndicator('dob', fieldStatuses['dob'].status);

	}
}

function CheckPhoneValue(formTag) {
	var ok = 0;
	var status = 1;

	if(formTag['phone_country_code'].wasHere && formTag['phone_number'].wasHere) {

		if(formTag['phone_country_code'].value.length == 0) {
			ok++;
			HighlightRegField(formTag, 'phone_country_code', true);
		}
		else HighlightRegField(formTag, 'phone_country_code', false);
		if(formTag['phone_number'].value.length == 0) {
			ok++;
			HighlightRegField(formTag, 'phone_number', true);
		}
		else HighlightRegField(formTag, 'phone_number', false);

		if(ok > 0) {
			status = 2;
		}
		fieldStatuses['phone'].status = status;
		SetFieldIndicator('phone', fieldStatuses['phone'].status);

	}
}

function HighlightRegField(formTag, fieldName, hasError) {
	if(hasError)
		formTag[fieldName].parentNode.className = 'reg_error_field';
	else
		formTag[fieldName].parentNode.className = 'reg_noerror_field';
}

function IsEveryFieldOk() {
	var ok = true;
	for(var i in fieldStatuses) {
		if(fieldStatuses[i].status != 1 && fieldStatuses[i].regField) {
			ok = false;
			break;
		}
	}
	return(ok);
}

function IsEveryProfileFieldOk() {
	var ok = true;
	for(var i in fieldStatuses) {
		if(fieldStatuses[i].status != 1 && fieldStatuses[i].profileField) {
			ok = false;
			break;
		}
	}
	return(ok);
}

function CheckAgreeField() {
	if(!document.getElementById('x_agree').checked) {
		document.getElementById('z_agree').style.color = '#900';
		return(false);
	}
	else {
		document.getElementById('z_agree').style.color = '#000';
		return(true);
	}
}

var formHasObligField = false;
function ShowRegOblig(hasErrors) {
	if(formHasObligField) {
		if(hasErrors)
			document.getElementById('err_reg_oblig').style.display = 'block';
		else
			document.getElementById('err_reg_oblig').style.display = 'none';
	}
}

function MarkSubmitError(formTag, fieldName, errorCode) {
	fieldStatuses[fieldName].msgCode = errorCode;
	fieldStatuses[fieldName].status = 2;
	SetFieldIndicator(fieldName, 2);
	HighlightRegField(formTag, fieldName, true);
}

function CheckRegAfterSubmit() {
	var formTag = document.getElementById('mainForm');

	if(regErrorList['err_reg_mail_taken']) MarkSubmitError(formTag, 'email', 'mail_taken');

	if(regErrorList['fname_len']) MarkSubmitError(formTag, 'fname', 'fname_len');
	if(regErrorList['lname_len']) MarkSubmitError(formTag, 'lname', 'lname_len');
// yearlow
	if(regErrorList['mailempty']) MarkSubmitError(formTag, 'email', 'mailempty');
	if(regErrorList['mail']) MarkSubmitError(formTag, 'email', 'mail');
	if(regErrorList['mail_len']) MarkSubmitError(formTag, 'email', 'mail_len');
	if(regErrorList['country_blocked']) MarkSubmitError(formTag, 'country', 'country_blocked');
	if(regErrorList['nocountry']) MarkSubmitError(formTag, 'country', 'nocountry');
// phones!!!
	if(regErrorList['loginempty']) MarkSubmitError(formTag, 'login', 'loginempty');
	if(regErrorList['wronglogin']) MarkSubmitError(formTag, 'login', 'wronglogin');
	if(regErrorList['logintaken']) MarkSubmitError(formTag, 'login', 'logintaken');
	if(regErrorList['login_len']) MarkSubmitError(formTag, 'login', 'login_len');
	if(regErrorList['login_rules']) MarkSubmitError(formTag, 'login', 'login_rules');

	if(regErrorList['shortpass']) MarkSubmitError(formTag, 'password', 'shortpass');
	if(regErrorList['passinvalid']) MarkSubmitError(formTag, 'password', 'passinvalid');
	if(regErrorList['pass_len']) MarkSubmitError(formTag, 'password', 'pass_len');

	if(regErrorList['passmisswhls']) MarkSubmitError(formTag, 'pass_verify', 'passmisswhls');

	if(regErrorList['currempty']) MarkSubmitError(formTag, 'currency', 'currempty');
	if(regErrorList['nocurr']) MarkSubmitError(formTag, 'currency', 'nocurr');

	if(regErrorList['sa_len']) MarkSubmitError(formTag, 'sa', 'sa_len');
// CAPTCHA!!!
	//if(regErrorList['fname_len']) MarkSubmitError(formTag, 'fname', 'fname_len');
	ShowRegErrorMsg();
}

var userAlreadyExists = false;
var emailAlreadyExists = false;
var shortLogin = false;
var needCheckLogin = false;
var needCheckEmail = false;

function FieldEmailFocused(event) {
	if(emailAlreadyExists) {
		var formTag = document.getElementById('mainForm');
		HideRegErrorMsg();
		ShowRegErrorMsg('email', 'mail_taken');
	}
	else {
		document.getElementById('err_reg_mail_taken').style.display = 'none';
		FieldFocused(event); 
	}
}

function FieldLoginFocused() {
	if(userAlreadyExists) {
		var formTag = document.getElementById('mainForm');
		HideRegErrorMsg();
		ShowRegErrorMsg('login', 'login_taken');
	}
	else
	if(shortLogin) {
		var formTag = document.getElementById('mainForm');
		HideRegErrorMsg();
		ShowRegErrorMsg('login', 'login_len');
	}
	else {
		document.getElementById('err_reg_login_taken').style.display = 'none';
	}
	//auxauxaux
}

function HandleCheckLoginRequest() {
	if(req.readyState == 4 && req.status == 200) {
		var formTag = document.getElementById('mainForm');
		if(req.responseText == '1') {
			if(formTag.login.value.length > 4 && needCheckLogin) {
				HighlightRegField(formTag, 'login', true);
				SetFieldIndicator('login', 2);
				userAlreadyExists = true;
			}
			if(formTag.email.value.length > 0 && needCheckEmail) {
				HighlightRegField(formTag, 'email', true);
				fieldStatuses['email'].status = 2;
				SetFieldIndicator('email', 2);
				emailAlreadyExists = true;
			}
		}
		else
		if(req.responseText == '2') {
			SetFieldIndicator('email', 2);
			HighlightRegField(formTag, 'email', true);
			fieldStatuses['email'].status = 2;
		}
		else {
			if(needCheckLogin) {
				HighlightRegField(formTag, 'login', false);
				SetFieldIndicator('login', fieldStatuses['login'].status);
				userAlreadyExists = false;
			}
			if(needCheckEmail) {
				HighlightRegField(formTag, 'email', false);
				SetFieldIndicator('email', fieldStatuses['email'].status);
				emailAlreadyExists = false;
			}
		}
	}
}

function CheckLoginName(target) {
	if(!target || !target.name) return false;

	var formTag = document.getElementById('mainForm');
	var url;
	if(target.name == 'login') {
		if(formTag.login.value.length <= 4) {
			shortLogin = true;
			fieldStatuses.login.msgCode = 'login_len';
			HighlightRegField(formTag, 'login', true);
			SetFieldIndicator('login', 2);
			return;
		}
		else {
			shortLogin = false;
			HideRegErrorMsg();
			fieldStatuses.login.msgCode = false;
			HighlightRegField(formTag, 'login', false);
			SetFieldIndicator('login', fieldStatuses['login'].status);
		}
		url = 'ajaxCheckUser.html?login=' + formTag.login.value + '&email=';
		needCheckLogin = true;
		needCheckEmail = false;
	}
	else {
		url = 'ajaxCheckUser.html?login=&email=' + formTag.email.value;
		needCheckLogin = false;
		needCheckEmail = true;
	}

	if(window.XMLHttpRequest && !(window.ActiveXObject)) {
		try {
			req = new XMLHttpRequest();
		}
		catch(e) {
			req = false;
		}
	}
	else
	if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e) {
				req = false;
			}
		}
	}
	if(req) {
		req.onreadystatechange = HandleCheckLoginRequest;
		req.open("GET", url, true);
		req.send("");
	}
}

function CheckForm(skipCaptcha) {
	var fm = document.getElementById('mainForm');
	var ok = 0;

	fieldStatuses['XPASS_STR'].status = 1;
	fm['day'].wasHere = true;
	fm['month'].wasHere = true;
	fm['year'].wasHere = true;
	fm['phone_country_code'].wasHere = true;
	fm['phone_number'].wasHere = true;

	CheckFieldValue(fm, 'fname');
	CheckFieldValue(fm, 'lname');
	CheckFieldValue(fm, 'gender');
	CheckDOBValue(fm);
	CheckFieldValue(fm, 'email');
	CheckFieldValue(fm, 'country');
	CheckPhoneValue(fm);
	CheckFieldValue(fm, 'login');
	CheckFieldValue(fm, 'currency');
	CheckFieldPassValue(fm, 'password');
	ConfirmPassword(false);
	//CheckFieldValue(fm, 'sq');
	//CheckFieldValue(fm, 'sa');
	//CheckFieldValue(fm, 'vcode');

	HideRegErrorMsg();
	ShowRegErrorMsg();

	if(!IsEveryFieldOk()) ok++;
	if(!CheckAgreeField()) ok++;

	if(ok != 0)
		ShowRegOblig(true);

	return(ok == 0);
}

function CheckForm2() {
	var fm = document.getElementById('mainForm');
	var ok = 0;

	fm['phone_country_code'].wasHere = true;
	fm['phone_number'].wasHere = true;

	CheckPhoneValue(fm);
	CheckFieldValue(fm, 'gender');
	CheckFieldValue(fm, 'email');
	CheckFieldValue(fm, 'address_street');
	CheckFieldValue(fm, 'city');
	//CheckFieldValue(fm, 'state');
	CheckFieldValue(fm, 'country');
	CheckFieldValue(fm, 'zip');

	HideRegErrorMsg();
	ShowRegErrorMsg();

	return(IsEveryProfileFieldOk());

	ok += CheckOnBlurPhones('phone_country_code', 'phone_number', true, 'full_phone');
	ok += CheckOnBlur(fm.email, true, 'email');
	ok += CheckOnBlur(fm.country, true, 'country');

	ok += CheckOnBlur(fm.address_street, true, 'address_street');
	ok += CheckOnBlur(fm.zip, true, 'zip');
	ok += CheckOnBlur(fm.city, true, 'city');

	return(ok == 0);
}

function CheckEmail(value) {
	if(value == '')
		return(true);
	else
		return(value.match("^[a-zA-Z0-9\\.\\_\\%\\+\\-]+\\@[a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,4}$"));
}

function CheckPFF(formTag) {
	if(CheckEmail(document.getElementById('inEmail').value)) {
		return(true);
	}
	else {
		document.getElementById('inEmail').className += ' hl_input';
		document.getElementById('err_reg_mail').style.display = 'block';
		return(false);
	}
}

var req = false;
var balanceTimer = false;

function StartBalanceTimer() {
	if(!balanceTimer)
		balanceTimer = setTimeout('RequestBalanceInfo()', 60000);
}

function StopBalanceTimer() {
	if(balanceTimer) {
		clearTimeout(balanceTimer);
		balanceTimer = false;
	}
}

function HandleBalanceRequest() {
	if(req.readyState == 4 && req.status == 200) {
		if(req.responseText != ' -1.00') {
			document.getElementById('balanceInfo').innerHTML = req.responseText;
		}
		else {
			window.location = 'index.html?expired=1';
		}
		//StartBalanceTimer();
	}
}

function RequestBalanceInfo() {
	//StopBalanceTimer();
	if(window.XMLHttpRequest && !(window.ActiveXObject)) {
		try {
			req = new XMLHttpRequest();
		}
		catch(e) {
			req = false;
		}
	}
	else
	if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e) {
				req = false;
			}
		}
	}
	if(req) {
		req.onreadystatechange = HandleBalanceRequest;
		req.open("GET", "ajaxGetBalance.html", true);
		req.send("");
	}
}

function ButtonHover(e) {
	if(!e) e = window.event;
	var target = e.target ? e.target : e.srcElement;
	if(target.tagName != 'TABLE') {
		while(target.tagName != 'TABLE' && target.tagName != 'BODY')
			target = target.parentNode;
	}
	target.className = 'link_btn_hover';
}

function ButtonDown(e) {
	if(!e) e = window.event;
	var target = e.target ? e.target : e.srcElement;
	if(target.tagName != 'TABLE') {
		while(target.tagName != 'TABLE' && target.tagName != 'BODY')
			target = target.parentNode;
	}
	target.className = 'link_btn_down';
}

function ButtonUnHover(e) {
	if(!e) e = window.event;
	var target = e.target ? e.target : e.srcElement;
	if(target.tagName != 'TABLE') {
		while(target.tagName != 'TABLE' && target.tagName != 'BODY')
			target = target.parentNode;
	}
	target.className = 'link_btn';
}

function SetupButtons() {
	var tables = document.getElementsByTagName('table');
	var count = tables.length;
	for(var i = 0; i < count; i++) {
		var item = tables[i];
		if(item.className == 'link_btn') {
			/*if(item.parentNode.tagName == 'BUTTON') {
				item = item.parentNode;
			}*/
			//opera.postError('parent: ' + item.parentNode);
			if(item.addEventListener) {
				item.addEventListener('mouseover', ButtonHover, true);
				item.addEventListener('mouseout', ButtonUnHover, true);
				item.addEventListener('mousedown', ButtonDown, true);
				item.addEventListener('mouseup', ButtonUnHover, true);
			}
			else {
				item.attachEvent('onmouseover', ButtonHover);
				item.attachEvent('onmouseout', ButtonUnHover);
				item.attachEvent('onmousedown', ButtonDown);
				item.attachEvent('onmouseup', ButtonUnHover);
			}
		}
	}
}

var jpTimer = false;

function StopJPTimer() {
	if(jpTimer) {
		clearTimeout(jpTimer);
		jpTimer = false;
	}
}

function StartJPTimer() {
	if(!jpTimer) {
		jpTimer = setTimeout('TickJackPot()', 500);
	}
}

function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + '.' + cents);
}

function TickJackPot() {
//	if(window.jp_amount) {
		StopJPTimer();
		for(var i = 0; i < window.jp_count; i++) {
			window['jp_amount' + i] += window['jp_inc' + i];
			//document.getElementById('jp_info').innerHTML = Math.round(window.jp_amount * 100) / 100;
			document.getElementById('jp_info' + i).innerHTML = window['jp_curr' + i] + ' ' + formatCurrency(window['jp_amount' + i].toFixed(2));
		}
		StartJPTimer();
//	}
}

function imagePreloader() {
	var img = new Image();
	img.src = 'img/btn_l_01.gif';
	img.src = 'img/btn_l_01_d.gif';
	img.src = 'img/btn_l_01_h.gif';
	img.src = 'img/btn_l_11.gif';
	img.src = 'img/btn_l_11_d.gif';
	img.src = 'img/btn_l_11_h.gif';
	img.src = 'img/btn_m_01.gif';
	img.src = 'img/btn_m_01_d.gif';
	img.src = 'img/btn_m_01_h.gif';
	img.src = 'img/btn_m_11.gif';
	img.src = 'img/btn_m_11_d.gif';
	img.src = 'img/btn_m_11_h.gif';
	img.src = 'img/btn_r_01.gif';
	img.src = 'img/btn_r_01_d.gif';
	img.src = 'img/btn_r_01_h.gif';
	img.src = 'img/btn_r_02.gif';
	img.src = 'img/btn_r_02_d.gif';
	img.src = 'img/btn_r_02_h.gif';
	img.src = 'img/btn_r_11.gif';
	img.src = 'img/btn_r_11_d.gif';
	img.src = 'img/btn_r_11_h.gif';
}

function JSInit() {
	if(window.needBalanceTimer)
		StartBalanceTimer();
	SetupButtons();
	TickJackPot();
}

// DEPOSIT FORM
function CheckOnBlurDeposit(tag, obligate, eObligate) {
	if(obligate) {
		if(tag.value.length == 0) {
			HiLightDeposit(tag.name, true, eObligate);
			return(1);
		}
		else {
			HiLightDeposit(tag.name, false, eObligate);
		}
	}
	return(0);
}
function HiLightDeposit(fieldName, hasError, code) {
	var fm = document.getElementById('deposit_form');
	var fl = fm[fieldName];
	if(hasError && fl.className.indexOf(' hl_input') == -1) {
		fl.className += ' hl_input';
	}
	else
	if(!hasError && fl.className.indexOf(' hl_input') >= 0) {
		fl.className = fl.className.replace(' hl_input', '');
	}
}

function ccSwitchToSavedCards() {
	document.getElementById('cc_link_new').className = '';
	document.getElementById('cc_link_saved').className = 'vsm_active';
	document.getElementById('cc_new_card').style.display = 'none';
	document.getElementById('cc_saved_card').style.display = 'block';
	document.getElementById('cc_card_mode').value = 1;
}

function ccSwitchToNewCard() {
	document.getElementById('cc_link_new').className = 'vsm_active';
	document.getElementById('cc_link_saved').className = '';
	document.getElementById('cc_new_card').style.display = 'block';
	document.getElementById('cc_saved_card').style.display = 'none';
	document.getElementById('cc_card_mode').value = 0;
}

function ccSetupData() {
	var cardId = document.getElementById('cc_saved_card_id').value;
	if(window.ccSavedCards && ccSavedCards[cardId]) {
		document.getElementById('cc_saved_cvc2').value = '';
		document.getElementById('cc_saved_expmonth').value = ccSavedCards[cardId].expmonth;
		document.getElementById('cc_saved_expyear').value = ccSavedCards[cardId].expyear;
		document.getElementById('cc_saved_chname').value = ccSavedCards[cardId].chname;
	}
}

function redirectTo(URL) { 
	window.location = URL; 
}