// Defines:
var pb_mp_rotator_timeout = 5000;
var pb_mp_rotator_speed = 1000;
var pb_scroll_ul_padding = 15;

// Variable:
var pb_mp_rotator_id = -1;
var pb_mp_rotator_current = -1;

var PlanetOfBets =
{
	//main functions
	start: function()
	{
		this.loginSetup();
		this.menuSetup();
		this.mpScrollH('div.sc_menu', 'ul.sc_menu');
		this.mpRotatorStart();
		this.langListener();
	},

	//lang events
	langListener : function()
	{
		$('#langhide').show();
		$('#langhide').children('.langs').slideUp('fast');
		$('#langhide').hide();

		$('#langButton').click(
			function()
			{
				if($('#langhide').is(":visible"))
				{
					$('#langhide').children('.langs').slideUp('fast');
					$('#langhide').slideUp('fast', function()
					{
						$('#pageheader').children('.statusbar').css('overflow', 'hidden');
					});
					$('#langButton').removeClass('active');
				}
				else
				{
					$('#pageheader').children('.statusbar').css('overflow', 'visible');
					$('#langhide').slideDown('fast');
					$('#langhide').children('.langs').slideDown('fast');
				}

				return false;
			}
		);

		$('#langButton').mouseout(
			function()
			{
				if(!$('#langhide').is(":visible"))
				{
					$('#langButton').removeClass('active');
				}
			}
		);

		$('#langButton').mouseover(
			function()
			{
				$('#langButton').addClass('active');
			}
		);
	},

	//login area functions
	loginSetup : function()
	{
		$('#loginButton').click(
			function(login)
			{
				if($('#loginBox').is(":visible"))
				{
					$('#loginButton').removeClass('active');
					$('#loginBox').slideUp('fast');
				}
				else
				{
					$('#loginButton').addClass('active');
					$('#loginBox').slideDown('fast', function() { $("#passwordRecovery").hide(); } );
				}

			}
		);

		$('#loginFormMain').mouseup(
			function()
			{
				return false;
			}
		);

		$('#loginFormRecovery').mouseup(
			function()
			{
				return false;
			}
		);

		$('body').mouseup(
			function(login)
			{
				if(!($(login.target).parent('#loginButton').length > 0))
				{
					$('#loginButton').removeClass('active');
					$('#loginBox').slideUp('fast', function() { $("#passwordRecovery").hide(); });
				}
			}
		);
	},

	menuSetup : function()
	{
		$('#menuButton').click(
			function(login)
			{
				if($('#menuBox').is(":visible"))
				{
					$('#menuButton').removeClass('active');
					$('#menuBox').slideUp('fast');
				}
				else
				{
					$('#menuButton').addClass('active');
					$('#menuBox').slideDown('fast');
				}

			}
		);

		$('#menuForm').mouseup(
			function()
			{
				return false;
			}
		);

		$('body').mouseup(
			function(login)
			{
				if(!($(login.target).parent('#menuButton').length > 0))
				{
					$('#menuButton').removeClass('active');
					$('#menuBox').slideUp('fast');
				}
				if(!($(login.target).parent('#langhide').length > 0))
				{
					$('#langhide').children('.langs').slideUp('fast');
					$('#langhide').slideUp('fast', function()
					{
						$('#pageheader').children('.statusbar').css('overflow', 'hidden');
					});
					$('#langButton').removeClass('active');
				}
			}
		);
	},

	//password recovery
	sendPasswordRecovery: function(login)
	{
		this.disableAndOp($('#login_recovery_form'));

		var req = this.createRequestObject();

		if (req)
		{
			req.open("POST", '/user/passwordrecovery/');
			req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
			req.send("login=" + login);
			
			req.onreadystatechange = function()
			{
				try
				{
					if (req.readyState == 4)
					{
						if (req.status == 200)
						{
							$('#login_recovery_form').val('');
							PlanetOfBets.unclickButtonWait($('#prButton'), planetofbets_data['pb_user_translates']['Send'], function()
							{
								PlanetOfBets.clickButtonWait($(this), 'rbtnwoh borange', 'rbtn');
								PlanetOfBets.sendPasswordRecovery($('#login_recovery_form').val());
							}, 'rbtn borange', 'rbtnwoh');
							PlanetOfBets.enableAndOp($('#login_recovery_form'));
							showMessage(planetofbets_data['pb_user_translates']['Password sended title'], planetofbets_data['pb_user_translates']['Password sended']);
						}
					}
					else
					{
						showMessage("Error", "Unrecognize error");
					}
				}
				catch( e )
				{
					showMessage("Error", "Unrecognize error");
				}
			};
		}

//		$.ajax(
//		{
//			type: 'POST',
//			url: '/user/passwordrecovery/',
//			data: { 'login': login },
//			success: function(data, status, xhr)
//			{
//				$('#login_recovery_form').val('');
//				PlanetOfBets.unclickButtonWait($('#prButton'), planetofbets_data['pb_user_translates']['Send'], function()
//				{
//					PlanetOfBets.clickButtonWait($(this), 'rbtnwoh borange', 'rbtn');
//					PlanetOfBets.sendPasswordRecovery($('#login_recovery_form').val());
//				}, 'rbtn borange', 'rbtnwoh');
//				PlanetOfBets.enableAndOp($('#login_recovery_form'));
//				showMessage(planetofbets_data['pb_user_translates']['Password sended title'], planetofbets_data['pb_user_translates']['Password sended']);
//			}
//		});
	},

	checkHeight : function()
	{
		var margin_h = 10;

		if(($('#botbg').children('.contwrap').outerHeight() + margin_h) < $(window).height() && ($('#pageheader').outerHeight() + $('#rightside').outerHeight() + $('#botmenu').outerHeight() + margin_h) < $(window).height())
		{
			$('#botbg').css('height', '' + ($(window).height() - $('#botmenu').outerHeight() - 1 - parseInt($('#botbg').css('padding-bottom'))) + 'px');
		}
		else if($('#botbg').children('.contwrap').outerHeight() > $(window).height())
		{
			$('#botbg').css('height', '' + ($('#botbg').children('.contwrap').outerHeight() - $('#botmenu').outerHeight() + $('#pageheader').outerHeight() + margin_h) + 'px');
		}
		else if(($('#pageheader').outerHeight() + $('#rightside').outerHeight() + $('#botmenu').outerHeight() + margin_h) > $(window).height() &&
			($('#rightside').outerHeight() + $('#pageheader').outerHeight()) > $('#botbg').children('.contwrap').outerHeight())
		{
			$('#botbg').css('height', '' + ($('#pageheader').outerHeight() + $('#rightside').outerHeight() + margin_h) + 'px');
		}
	},

	checkLoginForm : function()
	{
		if($('#login_input').val().length < 2)
			return false;
		else if($('#password_input').val().length < 2)
			return false;
		else
			return true;
	},

	checkRecoveryForm : function()
	{
		if($('#login_recovery_form').val().length < 2)
			return false;
		else
			return true;
	},

	// line functions
	oddsOpenAddition : function(event_id)
	{
		if($('.tr_addition_' + event_id + '').is(":visible"))
		{
			$('.tr_addition_' + event_id + '').css('display', 'none');
			$('#tr_addition_' + event_id + '_button').text('+');
		}
		else
		{
			$('.tr_addition_' + event_id + '').css('display', $.browser.msie ? 'block' : 'table-row');
			$('#tr_addition_' + event_id + '_button').text('-');
		}
	},

	// main page banner rotator functions
	mpRotatorStart : function()
	{
		if(typeof(pb_mp_logos_array) !== 'undefined' && pb_mp_logos_array != null)
		{
			this.mpRotatorResume();

			$('#pb_mb_logos_rotator_teams').text(pb_mp_logos_array[0]['teams']);
			$('#pb_mb_logos_rotator_3way1').text(pb_mp_logos_array[0]['3way1'] + " - " + pb_mp_logos_array[0]['3way1_odd']);
			$('#pb_mb_logos_rotator_3wayX').text(pb_mp_logos_array[0]['3wayX_odd'] ? pb_mp_logos_array[0]['3wayX'] + " - " + pb_mp_logos_array[0]['3wayX_odd'] : "");
			$('#pb_mb_logos_rotator_3way2').text(pb_mp_logos_array[0]['3way2'] + " - " + pb_mp_logos_array[0]['3way2_odd']);
			$('#pb_mp_logos_rotator').css('background-image', 'url(' + pb_mp_logos_array[0]['image'] + ')');
			$('#pb_mb_logos_rotator_3way1').unbind('click');
			$('#pb_mb_logos_rotator_3way1').click(
				function()
				{
					PlanetOfBets.slipAdd(pb_mp_logos_array[0]['3way1_variant']);
				}
			);

			$('#pb_mb_logos_rotator_3wayX').unbind('click');
			if(pb_mp_logos_array[0]['3wayX_odd'])
			{
				$('#pb_mb_logos_rotator_3wayX').click(
					function()
					{
						PlanetOfBets.slipAdd(pb_mp_logos_array[0]['3wayX_variant']);
					}
				);
			}

			$('#pb_mb_logos_rotator_3way2').unbind('click');
			$('#pb_mb_logos_rotator_3way2').click(
				function()
				{
					PlanetOfBets.slipAdd(pb_mp_logos_array[0]['3way2_variant']);
				}
			);

			pb_mp_rotator_current = 1;

			$('#pb_mp_logos_rotator').mouseover(
				function(e)
				{
					PlanetOfBets.mpRotatorPause();
				}
			);

			$('#pb_mp_logos_rotator').mouseout(
				function(e)
				{
					PlanetOfBets.mpRotatorResume();
				}
			);
		}
	},

	mpRotatorHandler : function()
	{
		if(typeof(pb_mp_logos_array) !== 'undefined' && pb_mp_logos_array != null)
		{
			$('#pb_mp_logos_rotator').animate({opacity: 0.0}, pb_mp_rotator_speed, function()
			{
				if(pb_mp_logos_array[pb_mp_rotator_current]['type'] == 'odd')
				{
					$('#pb_mb_logos_rotator_teams').text(pb_mp_logos_array[pb_mp_rotator_current]['teams']);
					$('#pb_mb_logos_rotator_3way1').text(pb_mp_logos_array[pb_mp_rotator_current]['3way1'] + " - " + pb_mp_logos_array[pb_mp_rotator_current]['3way1_odd']);
					$('#pb_mb_logos_rotator_3wayX').text(pb_mp_logos_array[pb_mp_rotator_current]['3wayX_odd'] ? pb_mp_logos_array[pb_mp_rotator_current]['3wayX'] + " - " + pb_mp_logos_array[pb_mp_rotator_current]['3wayX_odd'] : "");
					$('#pb_mb_logos_rotator_3way2').text(pb_mp_logos_array[pb_mp_rotator_current]['3way2'] + " - " + pb_mp_logos_array[pb_mp_rotator_current]['3way2_odd']);

					$('#pb_mb_logos_rotator_3way1').unbind('click');
					$('#pb_mb_logos_rotator_3way1').click(
						function()
						{
							PlanetOfBets.slipAdd(pb_mp_logos_array[pb_mp_rotator_current != 0 ? (pb_mp_rotator_current - 1) : (pb_mp_logos_array.length - 1)]['3way1_variant']);
						}
					);

					$('#pb_mb_logos_rotator_3wayX').unbind('click');
					if(pb_mp_logos_array[pb_mp_rotator_current]['3wayX_odd'])
					{
						$('#pb_mb_logos_rotator_3wayX').click(
							function()
							{
								PlanetOfBets.slipAdd(pb_mp_logos_array[pb_mp_rotator_current != 0 ? (pb_mp_rotator_current - 1) : (pb_mp_logos_array.length - 1)]['3wayX_variant']);
							}
						);
					}

					$('#pb_mb_logos_rotator_3way2').unbind('click');
					$('#pb_mb_logos_rotator_3way2').click(
						function()
						{
							PlanetOfBets.slipAdd(pb_mp_logos_array[pb_mp_rotator_current != 0 ? (pb_mp_rotator_current - 1) : (pb_mp_logos_array.length - 1)]['3way2_variant']);
						}
					);
				}
				else if(pb_mp_logos_array[pb_mp_rotator_current]['type'] == 'text')
				{
					$('#pb_mb_logos_rotator_teams').text(pb_mp_logos_array[pb_mp_rotator_current]['teams']);
					$('#pb_mb_logos_rotator_3way1').text('');
					$('#pb_mb_logos_rotator_3wayX').text('');
					$('#pb_mb_logos_rotator_3way2').text('');
				}
				$('#pb_mp_logos_rotator').css('background-image', 'url(' + pb_mp_logos_array[pb_mp_rotator_current]['image'] + ')')
				$('#pb_mp_logos_rotator').animate({opacity: 1.0}, pb_mp_rotator_speed);

				pb_mp_rotator_current++;

				if(pb_mp_rotator_current >= pb_mp_logos_array.length)
					pb_mp_rotator_current = 0;
			});
		}
	},

	mpRotatorResume : function()
	{
		pb_mp_rotator_id = window.setInterval('PlanetOfBets.mpRotatorHandler()', pb_mp_rotator_timeout);
	},

	mpRotatorPause : function()
	{
		if(pb_mp_rotator_id)
			clearInterval(pb_mp_rotator_id);
	},

	mpRotatorStop : function()
	{
		pb_mp_rotator_current = -1;

		this.mpRotatorPause();
	},

	mpScrollH : function(obj_div, obj_ul)
	{
		var div = $(obj_div);
		var ul = $(obj_ul);
		var divWidth = div.width();
//		div.css({overflow: 'hidden'});
		var lastLi = ul.find('li:last-child');
		div.mousemove(
			function(e)
			{
				var ulWidth = lastLi[0].offsetLeft + lastLi.outerWidth() + pb_scroll_ul_padding;
				var left = (e.pageX - div.offset().left) * (ulWidth-divWidth) / divWidth;
				div.scrollLeft(left);
			}
		);
	},

	// utils functions
	gotoPage : function(page)
	{
		$("#page_form_value_p").val(page);
		$("#page_form").submit();
	},

	gotoUrl : function(url)
	{
		location.href = url;
	},

	mpAutoHeight : function(top, bottom)
	{
		var lineHeight = 28;

		if(!planetofbets_data['pb_user_id'])
		{
			var mpbets = $(".mpline");

			for(var i = 0; i < mpbets.length; i++)
			{
				if(i * lineHeight + top + bottom < $(window).height())
					$(mpbets[i]).css('display', $.browser.msie ? 'block' : 'table-row');
				else
				{
					var add = ($(window).height() - ((i - 1) * lineHeight + top + bottom)) / 2 - 0.5;
					if(add > 0)
					{
						$('#sc_menu').css('margin-top', '+=' + add + '');
						$('#sc_menu').css('margin-bottom', '+=' + add + '');
					}
					break;
				}
			}
		}
		else
		{
			var mpbets = $(".mpline");

			for(var i = 0; i < 20; i++)
			{
				$(mpbets[i]).css('display', $.browser.msie ? 'block' : 'table-row');
			}
		}
	},

	createRequestObject: function()
	{
		this.slipShowLoading();

		if(window.XMLHttpRequest)
		{
			try
			{
				return new XMLHttpRequest();
			}
			catch (e)
			{
				showMessage("Error", e);
			}
		}
		else if (window.ActiveXObject)
		{
			try
			{
				return new ActiveXObject('Msxml2.XMLHTTP');
			}
			catch (e)
			{
				showMessage("Error", e);

				try
				{
					return new ActiveXObject('Microsoft.XMLHTTP');
				}
				catch (e)
				{
					showMessage("Error", e);
				}
			}
		}

		return null;
	},

	// buttons functions
	clickButton : function(obj, addclass, removeclass)
	{
		addclass = typeof(addclass) != 'undefined' ? addclass : '';
		removeclass = typeof(removeclass) != 'undefined' ? removeclass : '';

		if($(obj).get(0))
		{
			var type = $(obj).get(0).tagName.toLowerCase();

			if(addclass)
				$(obj).addClass(addclass);

			if(removeclass)
				$(obj).removeClass(removeclass);

			switch(type)
			{
				case 'a':
					$(obj).animate( { opacity: 0.2 }, { duration: 250, queue: false } );
					$(obj).attr("onclick", "");
				break;

				case 'img':
					$(obj).animate( { opacity: 0.6 }, { duration: 250, queue: false } );
					$(obj).attr("onclick", "");
				break;

				case 'div':
					$(obj).animate( { opacity: 0.6 }, { duration: 250, queue: false } );
					$(obj).attr("onclick", "");
				break;
			}
		}
	},

	clickButtonWait : function(obj, addclass, removeclass)
	{
		addclass = typeof(addclass) != 'undefined' ? addclass : '';
		removeclass = typeof(removeclass) != 'undefined' ? removeclass : '';

		if($(obj).get(0))
		{
			var type = $(obj).get(0).tagName.toLowerCase();

			if(addclass)
				$(obj).addClass(addclass);

			if(removeclass)
				$(obj).removeClass(removeclass);

			switch(type)
			{
				case 'div':
					var len = $(obj).text().length;
					$(obj).text("");
					for(i = 0; i < len; i++)
					{
						$(obj).html($(obj).html() + '&nbsp;&nbsp;');
					}
					$(obj).attr("onclick", "");
					$(obj).activity({align: 'center', segments: 12, steps: 3, width:2, space: 1, length: 3, color: '#030303', speed: 1.5});
				break;
			}
		}
	},

	unclickButtonWait : function(obj, text, func, addclass, removeclass)
	{
		addclass = typeof(addclass) != 'undefined' ? addclass : '';
		removeclass = typeof(removeclass) != 'undefined' ? removeclass : '';

		if($(obj).get(0))
		{
			var type = $(obj).get(0).tagName.toLowerCase();

			if(addclass)
				$(obj).addClass(addclass);

			if(removeclass)
				$(obj).removeClass(removeclass);

			switch(type)
			{
				case 'div':
					$(obj).html(text);
					$(obj).click(func);
					$(obj).activity(false);
				break;
			}
		}
	},

	unclickButton : function(obj)
	{
		if($(obj).get(0) != 'undefined')
		{
			var type = $(obj).get(0).tagName.toLowerCase();

			switch(type)
			{
				case 'a':
				case 'img':
				case 'div':
					$(obj).animate( { opacity: 1 }, { duration: 250, queue: false } );
				break;
			}
		}
	},

	unclickButtonBet : function(obj, id, v_id)
	{
		$(obj).animate( { opacity: 1 }, { duration: 250, queue: false } );
		$(obj).removeClass('betbtnhov');
		$(obj).addClass('betbtns');
		$(obj).click(function()
		{
			PlanetOfBets.slipAdd(v_id);
			PlanetOfBets.clickButton($(this), 'betbtnhov', 'betbtns');
		});
	},

	disableAndOp : function(obj)
	{
		$(obj).attr('readonly', true);
		$(obj).animate( { opacity: 0.6 }, { duration: 250, queue: false } );
	},

	enableAndOp : function(obj)
	{
		$(obj).removeAttr('readonly');
		$(obj).animate( { opacity: 1 }, { duration: 250, queue: false } );
	},

	//slip functions
	slipClearZeros : function(object)
	{
		if (object.attr("value") == 0)
			object.attr("value", "");
	},
	
	slipFormatNumber : function(num, decplaces)
	{
		num = parseFloat(num);
		
		if (!isNaN(num))
		{
			var str = "" + Math.round(num * Math.pow(10, decplaces));
			
			if (str.indexOf("e") != -1)
				return "Out of Range";
				
			while (str.length <= decplaces)
				str = "0" + str;
				
			var decpoint = str.length - decplaces;
			
			return str.substring(0, decpoint) + "." + str.substring(decpoint, str.length);
		}
		else
		{
			return "NaN";
		}
	},

	slipGetCombination : function(list, indexes)
	{
		var ret = new Array();
		
		for (var i = 0; i < indexes.length; i++)
		{
			ret[i] = list[indexes[i]];
		}
		
		return ret;
	},
	
	slipGetCombinations : function(list, amount)
	{
		if (list.length < 1)      return new Array();
		if (amount < 1)           return new Array();
		if (list.length < amount) return new Array();

		var combinations = new Array();

		var numbers = new Array();
		
		for (var i = 0; i < amount; i++)
		{
			numbers[i] = i;
		}

		combinations.push( this.slipGetCombination(list, numbers) );

		while (1)
		{
			var i = amount - 1;
			
			while (numbers[i] == list.length - amount + i)
			{
				i--;
			}

			if (i < 0)
				break;

			numbers[i] = numbers[i] + 1;
			
			for (var j = i + 1; j < amount; j++)
			{
				numbers[j] = numbers[i] + j - i;
			}
			
			combinations.push( this.slipGetCombination(list, numbers) );
		}

		return combinations;
	},

	slipGetComboOdd : function(combo)
	{
		var odd = 1;
		
		for (var i = 0; i < combo.length; i++)
		{
			odd *= combo[i].odd;
		}
		
		return odd;
	},

	slipCountCountBets : function()
	{
		var count = 0;
		var stakeSum = 0;

		for (var i = 0; i < planetofbets_data['pb_user_variants'].length; i++)
		{
			var variant = planetofbets_data['pb_user_variants'][i];
			var field = $("#bet" + variant.id);

			if (field.attr("value") > 0)
			{
				count++;
				stakeSum += field.attr("value") * 1;
			}
		}

		if (planetofbets_data['pb_user_variants'].length > 1 && planetofbets_data['pb_user_can_combo'])
		{
			for (var i = 1; i < planetofbets_data['pb_user_variants'].length + 1; i++)
			{
				var field = $("#s" + i);
				
				if (field.attr("value") > 0)
				{
					var combo_count = this.slipGetCombinations(planetofbets_data['pb_user_variants'], i).length;
					
					count += combo_count;

					stakeSum += field.attr("value") * combo_count;
				}
			}
		}
		else if (planetofbets_data['pb_user_variants'].length > 1)
		{
			var field = $("#s1");
			
			if (field.attr("value") > 0)
			{
				var combo_count = this.slipGetCombinations(planetofbets_data['pb_user_variants'], 1).length;
				
				count += combo_count;
				stakeSum += field.attr("value") * combo_count;
			}
		}

		planetofbets_data['pb_user_bets_count'] = count;
		planetofbets_data['pb_user_bets_sum'] = this.slipFormatNumber(stakeSum, 2);

		if (planetofbets_data['pb_user_variants'].length > 0)
		{
			$("#count_bets").html(planetofbets_data['pb_user_bets_count']);
			
			if (stakeSum > planetofbets_data['pb_user_balance'])
			{
				$("#amount_bets").html("<div><font color=red>" + planetofbets_data['pb_user_bets_sum'] + "</font>");
			}
			else
			{
				$("#amount_bets").html(planetofbets_data['pb_user_bets_sum']);
			}
		}

		return planetofbets_data['pb_user_bets_sum'];
	},

	slipSaveBetValuesToSlipCode : function ()
	{
		planetofbets_data['pb_user_bets_text'] = $("#slip_body").html();
		for (var i = 0; i < planetofbets_data['pb_user_variants'].length; i++)
		{
			var variant = planetofbets_data['pb_user_variants'][i];
			var field = $("#bet" + variant.id);
			var re = new RegExp('<input class="betinp" name="bet' + variant.id + '" id="bet' + variant.id + '" value=".*?"');
			planetofbets_data['pb_user_bets_text'] = planetofbets_data['pb_user_bets_text'].replace(re, '<input class="betinp" name="bet' + variant.id + '" id="bet' + variant.id + '" value="' + field.attr("value") + '"');
		}

		if (planetofbets_data['pb_user_variants'].length > 1 && planetofbets_data['pb_user_can_combo'])
		{
			for (var i = 1; i < planetofbets_data['pb_user_variants'].length + 1; i++)
			{
				var field = $("#s" + i);
				var re = new RegExp('<input name="s' + i + '" id="s' + i + '" class="betinp" value=".*?"');
				planetofbets_data['pb_user_bets_text'] = planetofbets_data['pb_user_bets_text'].replace(re, '<input name="s' + i + '" id="s' + i + '" class="betinp" value="' + field.attr("value") + '"');
			}
		}
		else if (planetofbets_data['pb_user_variants'].length > 1)
		{
			var i = 1;
			var field = $("#s" + i);
			var re = new RegExp('<input name="s' + i + '" id="s' + i + '" class="betinp" value=".*?"');
			planetofbets_data['pb_user_bets_text'] = planetofbets_data['pb_user_bets_text'].replace(re, '<input name="s' + i + '" id="s' + i + '" class="betinp" value="' + field.attr("value") + '"');
		}
	},

	slipCheckClosed : function()
	{
		var haveClosed = 0;
		
		for (var i = 0; i < planetofbets_data['pb_user_variants'].length; i++)
		{
			var variant = planetofbets_data['pb_user_variants'][i];

			if (variant.isclosed || variant.closetime < PlanetOfBets.slipGetServerTime())
			{
				haveClosed = 1;

				$("#div_" + variant.id).css({"textDecoration": "line-through", "color": "red"});
			}
			else
			{
				$("#div_" + variant.id).css({"textDecoration": "", "color": ""});
			}
		}

		return haveClosed ? false : true;
	},
	
	slipCheckCanBet : function()
	{
		if (!planetofbets_data['pb_user_id'])
		{
			showMessageRandom(planetofbets_data['pb_user_translates']["Bet"], planetofbets_data['pb_user_translates']['Need auth'], 250, 250);
			return false;
		}

		if (!this.slipCheckClosed())
		{
			showMessageRandom(planetofbets_data['pb_user_translates']["Bet"], planetofbets_data['pb_user_translates']['Some events closed'], 200, 150);
			return false;
		}

		if (planetofbets_data['pb_user_bets_sum'] > planetofbets_data['pb_user_balance'])
		{
			showMessageRandom(planetofbets_data['pb_user_translates']["Bet"], planetofbets_data['pb_user_translates']['Insufficient money2'], 200, 150);
			return false;
		}

		if (planetofbets_data['pb_user_bets_sum'] < 0.01)
		{
			showMessageRandom(planetofbets_data['pb_user_translates']["Bet"], planetofbets_data['pb_user_translates']['Need one stake'], 200, 150);
			return false;
		}

		return true;
	},

	slipSaveValuesToCookies : function()
	{
		var odinars = new Array();
		var combos  = new Array();

		for (var i = 0; i < planetofbets_data['pb_user_variants'].length; i++)
		{
			var variant = planetofbets_data['pb_user_variants'][i];
			var field = $("#bet" + variant.id);
			odinars.push(field.attr("value"));
		}

		if (planetofbets_data['pb_user_variants'].length > 1 && planetofbets_data['pb_user_can_combo'])
		{
			for (var i = 1; i < planetofbets_data['pb_user_variants'].length + 1; i++)
			{
				var field = $("#s" + i);
				combos.push(field.attr("value"));
			}
		}
		else if (planetofbets_data['pb_user_variants'].length > 1)
		{
			var i = 1;
			var field = $("#s" + i);
			combos.push(field.attr("value"));
		}
		else
		{
			combos.push(0);
		}

		this.cookieSet('slip_odinars', odinars.join('|'), 10);
		this.cookieSet('slip_combos', combos.join('|'), 10);
	},

	slipAddToSlip : function(id)
	{
		var combos_cookie = new String(this.cookieGet('slip_combos'));
		var arr_combos = combos_cookie.split('|');
		if (arr_combos.length > 0)
		{
			arr_combos.push(arr_combos[arr_combos.length - 1]);
			arr_combos[arr_combos.length - 2] = 0;
		}
		
		this.cookieSet('slip_combos', arr_combos.join('|'), 10);
	},

	slipDelFromSlip : function(id)
	{
		var combos_cookie = this.cookieGet('slip_combos');
		var arr_combos = combos_cookie.split('|');

		if (arr_combos.length > 2)
		{
			arr_combos[arr_combos.length - 2] = arr_combos[arr_combos.length - 1];

			arr_combos.length = arr_combos.length - 1;
		}
		else if (arr_combos.length > 1)
		{
			arr_combos.length = 0;
			arr_combos.push('0.00');
		}
		else if (arr_combos.length > 0)
		{
			arr_combos.length = 0;
		}

		this.cookieSet('slip_combos', arr_combos.join('|'), 10);

		var odinars_cookie = this.cookieGet('slip_odinars');
		var arr_odinars = odinars_cookie.split('|');
		var result_odinars = new Array();

		for (var i = 0; i < arr_odinars.length; i++)
		{
			if (planetofbets_data['pb_user_variants'][i].id != id)
				result_odinars.push(arr_odinars[i]);
		}

		this.cookieSet('slip_odinars', result_odinars.join('|'));
	},
	
	slipShowBets : function()
	{
		$("#slip_body").animate( { opacity: 'hide' }, 'slow', function()
		{
			document.getElementById("slip_body").innerHTML = planetofbets_data['pb_user_bets_text'];
			$("#left_placebet").html('<div class="rbtn dn vh">&nbsp;</div>');
			$("#right_placebet").html('<div class="rbtn bblack white" id="confirm_button" name="confirm_button" onclick="if(PlanetOfBets.slipCheckCanBet()) { PlanetOfBets.slipSubmit(); PlanetOfBets.clickButton($(this)); }">' + planetofbets_data['pb_user_translates']['Place bet'] + '</div>');
			$("#slip_body").animate( { opacity: 'show' }, 'slow' );
			$("#slip_clear_button").show();

			PlanetOfBets.slipHideLoading();

			$("#slip_body").animate( { opacity: '1' }, 'slow' );
			$("#slip_summary").animate( { opacity: '1' }, 'slow' );
		});

		if ($("#accept_odd_change1"))
			$("#accept_odd_change1").attr('disabled',false);
	},
	
	slipShowConfirm : function()
	{
		planetofbets_data['pb_user_bets_text'] = $("#slip_body").html();

		planetofbets_data['pb_user_odinars'] = new Array();
		planetofbets_data['pb_user_combos'] = new Array();
		
		for (var i = 0; i < planetofbets_data['pb_user_variants'].length; i++)
		{
			var variant = planetofbets_data['pb_user_variants'][i];
			var field = $("#bet" + variant.id);
			planetofbets_data['pb_user_odinars'].push(field.attr("value"));
		}

		$("#slip_clear_button").hide();

		if (planetofbets_data['pb_user_variants'].length > 1 && planetofbets_data['pb_user_can_combo'])
		{
			for (var i = 1; i < planetofbets_data['pb_user_variants'].length + 1; i++)
			{
				var field = $("#s" + i);
				planetofbets_data['pb_user_combos'].push(field.attr("value"));
			}
		}
		else if (planetofbets_data['pb_user_variants'].length > 1)
		{
			var field = $("#s1");
			planetofbets_data['pb_user_combos'].push(field.attr("value"));
		}
		else
		{
			planetofbets_data['pb_user_combos'].push(0);
		}

		$("#slip_body").animate( { opacity: 'hide' }, 'slow', function()
		{
			for (var i = 0; i< planetofbets_data['pb_user_variants'].length; i++  )
			{
				var variant = planetofbets_data['pb_user_variants'][i];
				var value_bet = $('#bet' + variant.id).attr("value");
				$('#bet' + variant.id).remove();
				$('#div_lock_' + variant.id).hide();
				$('#td_delete_' + variant.id).remove();

				if(value_bet > 0)
					$('#div_lock_' + variant.id).text(value_bet).show();
				else
					$('#div_lock_' + variant.id).text("n/a").show();
			}
			
			if (planetofbets_data['pb_user_variants'].length > 1 && planetofbets_data['pb_user_can_combo'])
			{
				for(var i = 1; i <= planetofbets_data['pb_user_variants'].length; i++)
				{
					var value_s = $("#s" + i).attr("value");
					
					$("#s" + i).remove();

					if(value_s > 0)
						$("#div_lock_s_" + i).html('<span id="span_s_input_' + i + '" class="span_slip f-right">' + value_s + '</span>');
					else
						$("#div_lock_s_" + i).html('<span id="span_s_input_' + i + '" class="span_slip f-right">n/a</span>');
				}
			}
			else if(planetofbets_data['pb_user_variants'].length > 1)
			{
				for(var i = 1; i < planetofbets_data['pb_user_variants'].length; i++)
				{
					var value_s = $("#s" + i).attr("value");
					
					$("#s" + i).remove();

					if(value_s > 0)
						$("#div_lock_s_" + i).html('<span id="span_s_input_' + i + '" class="span_slip f-right">' + value_s + '</span>');
					else
						$("#div_lock_s_" + i).html('<span id="span_s_input_' + i + '" class="span_slip f-right">n/a</span>');
				}
			}
			
			$("#slip_body").animate( { opacity: 'show' }, 'slow' );
		});

		if ($("#accept_odd_change1"))
			$("#accept_odd_change1").attr('disabled',true);

		$("#left_placebet").html('<div class="rbtn bblack white" id="editslip_button" name="editslip_button" onclick="PlanetOfBets.slipShowBets(); PlanetOfBets.clickButton($(this));">' + planetofbets_data['pb_user_translates']['Edit slip'] + '</div>');
		$("#right_placebet").html('<div class="rbtn bblack white" id="confirm_button" name="confirm_button" onclick="PlanetOfBets.slipConfirm(); PlanetOfBets.clickButton($(this));">' + planetofbets_data['pb_user_translates']['Confirm slip'] + '</div>');
	},

	slipPrepareFields : function()
	{
		for (var i = 0; i < planetofbets_data['pb_user_variants'].length; i++)
		{
			var variant = planetofbets_data['pb_user_variants'][i];
			var field = $("#bet" + variant.id);
			if (field.attr("value") != this.slipGetValue(field.attr("value")))
			{
				field.attr("value", this.slipGetValue(field.attr("value")));
			}
		}

		if (planetofbets_data['pb_user_variants'].length > 1 && planetofbets_data['pb_user_can_combo'])
		{
			for (var i = 1; i < planetofbets_data['pb_user_variants'].length + 1; i++)
			{
				var field = $("#s" + i);
				if (field.attr("value") != this.slipGetValue(field.attr("value")))
				{
					field.attr("value", this.slipGetValue(field.attr("value")));
				}
			}
		}
		else if (planetofbets_data['pb_user_variants'].length > 1)
		{
			var field = $("#s1");
			if (field.attr("value") != this.slipGetValue(field.attr("value")))
				field.attr("value", this.slipGetValue(field.attr("value")));
		}
	},

	slipCountWinBets : function()
	{
		var win = 0;
		for (var i = 0; i < planetofbets_data['pb_user_variants'].length; i++)
		{
			var variant = planetofbets_data['pb_user_variants'][i];
			var field = $("#bet" + variant.id);
			if (field.attr("value") > 0)
			{
				win += field.attr("value") * variant.odd;
			}
		}

		if (planetofbets_data['pb_user_variants'].length > 1 && planetofbets_data['pb_user_can_combo'])
		{
			for (var i = 1; i < planetofbets_data['pb_user_variants'].length + 1; i++)
			{
				var field = $("#s" + i);
				if (field.attr("value") > 0)
				{
					var combos = this.slipGetCombinations(planetofbets_data['pb_user_variants'], i);
					for (var j = 0; j < combos.length; j++)
					{
						win += this.slipGetComboOdd(combos[j]) * field.attr("value");
					}
				}
			}
		}
		else if (planetofbets_data['pb_user_variants'].length > 1)
		{
			var field = $("#s1");
			
			if (field.attr("value") > 0)
			{
				var combos = this.slipGetCombinations(planetofbets_data['pb_user_variants'], 1);
				for (var j = 0; j < combos.length; j++)
				{
					win += this.slipGetComboOdd(combos[j]) * field.attr("value");
				}
			}
		}

		planetofbets_data['pb_user_bets_win'] = this.slipFormatNumber(win, 2);

		if (planetofbets_data['pb_user_variants'].length > 0)
		{
			$("#amount_win").html(planetofbets_data['pb_user_bets_win']);
		}

		return planetofbets_data['pb_user_bets_win'];
	},

	slipCountBets : function()
	{
		this.slipCountCountBets();
		this.slipCountWinBets();
	},
	
	slipGetServerDateTime : function()
	{
		var theYear = ( planetofbets_data['pb_server_time'].getYear() % 100 ) + ( ( ( planetofbets_data['pb_server_time'].getYear() % 100 ) < 39 ) ? 2000 : 1900 );
		var temp = new Date(theYear, planetofbets_data['pb_server_time'].getMonth(), planetofbets_data['pb_server_time'].getDate(), planetofbets_data['pb_server_time'].getHours(), planetofbets_data['pb_server_time'].getMinutes(), planetofbets_data['pb_server_time'].getSeconds() + (parseInt((new Date()).getTime() / 1000) - planetofbets_data['pb_start_time']));
		return temp;
	},

	slipGetServerTime : function()
	{
		return parseInt((new Date()).getTime() / 1000) + planetofbets_data['pb_time_diff'];
	},
	
	slipCheckSelected : function()
	{
		for (var i = 0; i < planetofbets_data['pb_user_variants'].length; i++)
		{
			var variant = planetofbets_data['pb_user_variants'][i];
			this.clickButton($("#but_bet_" + variant.variant_id), 'betbtnhov', 'betbtns');
		}
	},
	
	slipGetValue : function(value)
	{
		if(value)
		{
			value = value.replace(/,/, '.');

			value = value.replace(/[^\d\.]/, '');

			var value_arr = value.split('.');

			if (value_arr.length > 2)
				value_arr.length = 2;
			value = value_arr.join('.');

			if (value >= 0.01 && value < planetofbets_data['pb_user_minimum_bet']) return planetofbets_data['pb_user_minimum_bet'];
			if (value < 0.01) return '0.00';

			return value;
		}
		
		return '0.00';
	},
	
	slipError : function(req)
	{
		var content = req.responseXML.getElementsByTagName('content').item(0).firstChild.nodeValue;
		var error_code = content.substr(content.indexOf(' ') + 1);
		showMessage(planetofbets_data['pb_user_translates']["Bet"], planetofbets_data['response_error'][error_code]);

		PlanetOfBets.slipHideLoading();

		$("#slip_body").animate( { opacity: '1' }, 'slow' );
		$("#slip_summary").animate( { opacity: '1' }, 'slow' );

		this.slipGet();
	},

	getUrlVars : function()
	{
		var vars = [], hash;
		var hashes = window.location.href.slice( window.location.href.indexOf('?') + 1 ).split('&');

		for(var i = 0; i < hashes.length; i++)
		{
			hash = hashes[i].split('=');
			vars.push(hash[0]);
			vars[hash[0]] = hash[1];
		}

		return vars;
	},

	slipAddedEvent : function(req)
	{
		try
		{
			if (req.readyState == 4)
			{
				if (req.status == 200)
				{
					if (req.responseXML)
					{
						if (req.responseXML.getElementsByTagName('status').item(0).firstChild.nodeValue == 'ok')
						{
							var content = req.responseXML.getElementsByTagName('content').item(0).firstChild.nodeValue;
							$('#SlipDiv').html($.trim(content));
						}
						else if ($(req.responseXML).find('status').text() == 'error')
						{
							this.slipError(req);
						}
					}
				}
				else
				{
					showMessage(planetofbets_data['pb_user_translates']["Bet"], planetofbets_data['pb_user_translates']["Error connect to server"]);
					this.slipShowBets();
				}
			}
		}
		catch( e )
		{
			showMessage(planetofbets_data['pb_user_translates']["Bet"], planetofbets_data['pb_user_translates']["Error connect to server"]);
			this.slipShowBets();
		}
	},
	
	slipRemovedEvent : function(req)
	{
		try
		{
			if (req.readyState == 4)
			{
				if (req.status == 200)
				{
					if (req.responseXML)
					{
						if (req.responseXML.getElementsByTagName('status').item(0).firstChild.nodeValue == 'ok')
						{
							var content = req.responseXML.getElementsByTagName('content').item(0).firstChild.nodeValue;
							$('#SlipDiv').html($.trim(content));
						}
						else if ($(req.responseXML).find('status').text() == 'error')
						{
							this.slipError(req);
						}
					}
				}
				else
				{
					showMessage(planetofbets_data['pb_user_translates']["Bet"], planetofbets_data['pb_user_translates']["Error connect to server"]);
					this.slipShowBets();
				}
			}
		}
		catch( e )
		{
			showMessage(planetofbets_data['pb_user_translates']["Bet"], planetofbets_data['pb_user_translates']["Error connect to server"]);
			this.slipShowBets();
		}
	},
	
	slipSendEvent : function(req)
	{
		try
		{
			if (req.readyState == 4)
			{
				if (req.status == 200)
				{
					if (req.responseXML)
					{
						if (req.responseXML.getElementsByTagName('status').item(0).firstChild.nodeValue == 'ok')
						{
						
							for (var i = 0; i < planetofbets_data['pb_user_variants'].length; i++)
							{
								var variant = planetofbets_data['pb_user_variants'][i];

								this.unclickButtonBet($("#but_bet_" + variant.variant_id), variant.id, variant.variant_id);
								this.unclickButtonBet($("#a_bet_" + variant.variant_id), variant.id, variant.variant_id);
							}

							var content = req.responseXML.getElementsByTagName('content').item(0).firstChild.nodeValue;
							$('#SlipDiv').html(content);

							this.cookieClearSlip();
						}
						else if ($(req.responseXML).find('status').text() == 'error')
						{
							this.slipError(req);
						}
					}
				}
				else
				{
					showMessage(planetofbets_data['pb_user_translates']["Bet"], planetofbets_data['pb_user_translates']["Error connect to server"]);
					this.slipShowBets();
				}
			}
		}
		catch( e )
		{
			showMessage(planetofbets_data['pb_user_translates']["Bet"], planetofbets_data['pb_user_translates']["Error connect to server"]);
			this.slipShowBets();
		}
	},
	
	slipAdd : function(id)
	{
		var req = this.createRequestObject();

		this.slipAddToSlip(id);

		if (req)
		{
			req.open("POST", '/cgi-bin/slip/add.pl');
			req.setRequestHeader("Content-type","application/x-www-form-urlencoded");

			if( planetofbets_data["pb_qb"] == '1' )
				req.send("quick_bet=1&variant_id=" + id);
			else
				req.send("variant_id=" + id);

			req.onreadystatechange = function() { PlanetOfBets.slipAddedEvent(req); };
		}
	},
	
	slipGet : function()
	{
		var req = this.createRequestObject();

		if (req)
		{
			req.open("POST", '/cgi-bin/slip/get.pl');
			req.setRequestHeader("Content-type","application/x-www-form-urlencoded");

			if( planetofbets_data["pb_qb"] == '1' )
				req.send("quick_bet=1");
			else
				req.send("");

			req.onreadystatechange = function() { PlanetOfBets.slipAddedEvent(req); };
		}
	},
	
	slipRemove : function(id, v_id)
	{
		var req = this.createRequestObject();
		
		this.unclickButtonBet($("#but_bet_" + v_id), id, v_id);
		this.unclickButtonBet($("#a_bet_" + v_id), id, v_id);
		
		this.slipDelFromSlip(id);
		
		if (req)
		{
			req.open("POST", '/cgi-bin/slip/del.pl');
			req.setRequestHeader("Content-type","application/x-www-form-urlencoded");

			if( planetofbets_data["pb_qb"] == '1' )
				req.send("quick_bet=1&id=" + id);
			else
				req.send("id=" + id);

			req.onreadystatechange = function() { PlanetOfBets.slipRemovedEvent(req); };
		}
	},

	slipRecount : function(object, odd)
	{
		if (object.attr("value") == this.slipGetValue(object.attr("value")))
		{
			this.slipCountBets();
		}
	},
	
	slipRecountAll : function()
	{
		this.slipPrepareFields();
		this.slipSaveValuesToCookies();
		this.slipSaveBetValuesToSlipCode();
		this.slipCountBets();
		this.slipCheckClosed();
	},
	
	slipSubmit : function()
	{
		this.slipRecountAll();

		if(this.slipCheckCanBet())
		{
			this.clickButton($("#placebet_button"));
			this.slipShowConfirm();
			this.slipRecountAll();
		}
	},
	
	slipConfirm : function()
	{
		if (this.slipCheckCanBet())
		{
			var variant_ids = new Array();
			var odds = new Array();

			$("#slip_body").animate( { opacity: '0.5' }, 'slow' );
			$("#slip_summary").animate( { opacity: '0.5' }, 'slow' );

			var have_live = false;
			for (var i = 0; i < planetofbets_data['pb_user_variants'].length; i++)
			{
				if (planetofbets_data['pb_user_variants'][i].is_live)
					have_live = true;
				variant_ids.push("v" + planetofbets_data['pb_user_variants'][i].variant_id);

				odds.push(planetofbets_data['pb_user_variants'][i].odd);
			}

			this.clickButton($("#editslip_button"));

			var req = this.createRequestObject();
			if (req)
			{
				req.open("POST", '/cgi-bin/slip/bet.pl');
				req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
				var odds_change = $("#accept_odd_change1") && $("#accept_odd_change1").attr('checked') ? 1 : 0;

				if( planetofbets_data["pb_qb"] == '1' )
					req.send("variants=" + variant_ids.join('|') + "&odds=" + odds.join("|") + "&odinars=" + planetofbets_data['pb_user_odinars'].join('|') + "&combos=" + planetofbets_data['pb_user_combos'].join('|') + '&accept_odds_change=' + odds_change + '&quick_bet=1');
				else
					req.send("variants=" + variant_ids.join('|') + "&odds=" + odds.join("|") + "&odinars=" + planetofbets_data['pb_user_odinars'].join('|') + "&combos=" + planetofbets_data['pb_user_combos'].join('|') + '&accept_odds_change=' + odds_change);

				req.onreadystatechange = function() { PlanetOfBets.slipSendEvent(req); };
			}
		}
	},
	
	slipClear : function()
	{
		for (var i = 0; i < planetofbets_data['pb_user_variants'].length; i++)
		{
			var variant = planetofbets_data['pb_user_variants'][i];

			this.unclickButtonBet($("#but_bet_" + variant.variant_id), variant.id, variant.variant_id);
			this.unclickButtonBet($("#a_bet_" + variant.variant_id), variant.id, variant.variant_id);
		}
		
		var req = this.createRequestObject();
		if (req)
		{
			req.open("POST", '/cgi-bin/slip/clear.pl');
			req.setRequestHeader("Content-type","application/x-www-form-urlencoded");

			if( planetofbets_data["pb_qb"] == '1' )
				req.send("quick_bet=1");
			else
				req.send("");

			req.onreadystatechange = function() { PlanetOfBets.slipRemovedEvent(req); PlanetOfBets.cookieClearSlip(); };
		}
	},

	slipHideLoading : function()
	{
		$('#sliphead').activity(false);
	},

	slipShowLoading : function()
	{
		$('#sliphead').activity({align: 'right', segments: 12, steps: 3, width:2, space: 1, length: 3, color: '#030303', speed: 1.5});
	},

	// odds functions
	selectOddHover : function(obj)
	{
		$(obj).animate( { backgroundColor: '#0b51ac', color: '#ffffff' }, { queue: true, duration: 600 } );
	},

	selectOddNormal : function(obj)
	{
		$(obj).animate( { backgroundColor: '#dfe7f3', color: '#0b51ac' }, { queue: true, duration: 600 } );
	},

	// cookie functions
	cookieSet : function(_name, _value, expireHours)
	{
		var curDate    = new Date();
		var theYear = ( curDate.getYear() % 100 ) + ( ( ( curDate.getYear() % 100 ) < 39 ) ? 2000 : 1900 );
		var expireDate = new Date(theYear, curDate.getMonth(), curDate.getDate(), curDate.getHours(), curDate.getMinutes(), curDate.getSeconds() + expireHours * 60 * 60);
		document.cookie = escape(_name) + "=" + escape(_value) + "; expires=" + expireDate.toGMTString() + "; path=/; domain=" + "planetofbets.com";
		document.cookie = escape(_name) + "=" + escape(_value) + "; expires=" + expireDate.toGMTString() + "; path=/; domain=" + ".planetofbets.com";
	},

	cookieGet : function(_name)
	{
		var prefix = escape(_name) + "=";
		var c = document.cookie;

		if(c == null)
			c = '';

		var cookieStartIndex = c.indexOf(prefix);

		if(cookieStartIndex == -1)
			return '';

		var cookieEndIndex = c.indexOf(";", cookieStartIndex + prefix.length);

		if(cookieEndIndex == -1)
			cookieEndIndex = c.length;

		return unescape(c.substring(cookieStartIndex + prefix.length, cookieEndIndex));
	},

	cookieDelete : function(_name)
	{
		document.cookie = escape(_name) + "=" + "; path=/; expires=Thu, 01-Jan-70 00:00:01 GMT";
		document.cookie = escape(_name) + "=" + "; path=/; domain=planetofbets.com; expires=Thu, 01-Jan-1970 00:00:01 GMT";
		document.cookie = escape(_name) + "=" + "; path=/; domain=.planetofbets.com; expires=Thu, 01-Jan-1970 00:00:01 GMT";
	},

	cookieClearSlip : function()
	{
		this.cookieDelete("slip");
		this.cookieDelete("odinars");
		this.cookieDelete("combos");
		this.cookieDelete("slip_odinars");
		this.cookieDelete("slip_combos");
	}
};

