﻿/**
 * Hello There
 * 
 * radgan amas kitxulob eseigi ak shemtxvevit ar moxvedrilxar :)
 * 
 * ketili iyos sheni fexi patara samotxeshi 8-)
 * 
 * W E L C O M E ;)
 * 
 * @author Merabi <merabi.merabi@gmail.com>
 * 
 */

/* FUNCTIONS */

function json_encode(string){
	return $.toJSON(string);
}
function str_ireplace ( search, replace, subject ) {
    var i, k = '';
    var searchl = 0;
    var reg;
     var escapeRegex = function(s) {
        return s.replace(/([\\\^\$*+\[\]?{}.=!:(|)])/g, '\\$1');
    };
     search += '';
    searchl = search.length;
    if (!(replace instanceof Array)) {
        replace = [replace];
        if (search instanceof Array) {
            while (searchl > replace.length) {
                replace[replace.length] = replace[0];
            }
        }
    }
     if (!(search instanceof Array)) {
        search = [search];
    }
    while (search.length>replace.length) {
        replace[replace.length] = '';
    } 
    if (subject instanceof Array) {
        for (k in subject) {
            if (subject.hasOwnProperty(k)) {
                subject[k] = str_ireplace(search, replace, subject[k]);
            }
        }
        return subject;
    }
    searchl = search.length;
    for (i = 0; i < searchl; i++) {
        reg = new RegExp(escapeRegex(search[i]), 'gi');
        subject = subject.replace(reg, replace[i]);
    }
    return subject;
}
function xGamesMenuResize(){
	var docwidth = (parseInt($("#container-content").width()));
	var realContWidth = docwidth - 340;
	var cellWidth = realContWidth / 5;
	cellWidth = cellWidth - 14;
	var gamesnumWidth = 15;

	var cellWidth_worldcup = realContWidth / 3;
	cellWidth_worldcup = -14;

	$(".xGamesMenu").find("a").css( {
		"width" : cellWidth - gamesnumWidth + "px"
	});
	$(".xGamesMenu ul li").find("a").css( {
		"width" : "auto"
	});

	$(".xGamesMenu_worldcup").find("a").css( {
		"width" : "auto"
	});

	if($.browser.msie){
		$(".xGamesMenu ul li").css( {
			"width" : cellWidth + 8 + "px"
		});
	}
	else{
		$(".xGamesMenu ul li").find("a").css( {
			"width" : "auto"
		});
	}
}

function betClick(obj, bettingType){
	if(obj !== undefined){
		if(bettingType === undefined){
			bettingType = "put";
		}
		if(bettingType=='worldcup'){
			var xType = "._" + $(obj).attr("xType");
			var xGameNum = ".N_" + $(obj).attr("xGameID");
			if(!$(obj).hasClass("BETSELECTED")){
				$(xType).removeClass("BETSELECTED");
				$(obj).addClass("BETSELECTED");
				xTicket.add(obj);
			}
			else{
				$(obj).removeClass("BETSELECTED");
				xTicket.remove(obj);
			}
		}else{
			var xType = "._" + $(obj).attr("xType");
			var xGameNum = ".N_" + $(obj).attr("xGameID");
			if(!$(obj).hasClass("BETSELECTED")){
				$(xType + xGameNum).removeClass("BETSELECTED");
				$(obj).addClass("BETSELECTED");
				xTicket.add(obj);
			}
			else{
				$(obj).removeClass("BETSELECTED");
				xTicket.remove(obj);
			}
		}
		
	}
}
function livebetClick(obj){
	if(obj !== undefined){
		if(bettingType === undefined){
			var bettingType = "putlive";
		}

		xTicket.liveadd(obj,bettingType);



		
		
	}
}
function clearSelectedBet(obj){
	if(obj === undefined){
		$(".BETSELECTED").removeClass('BETSELECTED');
	}
	else{
		$("._" + $(obj).attr("ztype") + ".N_" + $(obj).attr("zid")).removeClass('BETSELECTED');
	}
}

function xGamesMenuTabClickHandler(){
	$(".main-content-tab").click(function(){
		$(".main-content-tab").removeClass("active");
		$(this).toggleClass("active");
		var __categoryID = explode("_", $(this).attr("id"))[3];
		$("#conteiner-xGamesmenuTableConteiner").fadeOut('normal', function(){
			xGames.buildGamesMainMenu(__categoryID);
			xGames.info.category = __categoryID;
		});
		$("#conteiner-xGamesmenuTableConteiner").fadeIn('normal');
	});
	xGamesMenuClickHandler();
}
function xGamesMenuClickHandler(){
	$(".xGamesMenu").click(function(){
		if(!$(this).hasClass("xactive")){
			$(this).find("ul").css( {
				"width" : $(this).css("width")
			});
			$(this).find("ul").slideDown('fast').show();
			$(this).addClass("xactive");
			$(this).hover(function(){}, function(){
				$(this).find("ul").slideUp('slow');
				$(this).removeClass("xactive");
			});
		}
	});
	$(".xGamesMenu").find("a").css( {
		"white-space" : "nowrap"
	});
	xGamesMenuResize();
}

function xGamesMenuPrepare(){}

function xGamesMenu(obj, advanced, windowText, searchParam){
	if(advanced === undefined){
		var __parts = explode('-', $(obj).attr("id"));
		var category = __parts[1];
		var group = __parts[2];
		var subgr = __parts[3];
		xGames.window.act.click(obj, category, group, subgr);
	}
	else if(advanced == 'live'){
		xGames.window.act.advancedClick(obj, {
			text : 'დამატებითი ფსონები:'
		}, {
			meta : 'live'
		});
	}
	else if(advanced == 'worldcup'){
		xGames.window.act.advancedClick(obj, {
			text : windowText
		}, {
			meta : 'worldcup'
		});
	}
	else{
		xGames.window.act.advancedClick(obj, {
			text : windowText
		}, {
			gameStartDate : searchParam
		});
	}
}

function xGamesWindowClose(id){
	xGames.window.act.close(id);
}

function additionalBets(obj, p, _global){
	if(p === undefined) p = true;
	var additionalBetsClass = $(obj).attr('xAdditionals');
	if(p == true){
		$("." + additionalBetsClass).show();
		if(_global === undefined){
			$(obj).hide();
			$(obj).parent().find('.el-img-minus').show();
		}
	}
	else{
		$("." + additionalBetsClass).hide();
		if(_global === undefined){
			$(obj).hide();
			$(obj).parent().find('.el-img-plus').show();
		}
	};

}

function shortcutClick(obj){
	var IDselector = '#' + $(obj).attr('windowID');
	scrollWin(IDselector);
	$(IDselector).find('.w-gui-t1').animate( {
		'background-color' : '#FF6600'
	}, 500).animate( {
		'background-color' : '#dfe8f6'
	}, 500).animate( {
		'background-color' : '#FF6600'
	}, 500).animate( {
		'background-color' : '#dfe8f6'
	}, 500);
	$('.el-divBgSkyBlue2').removeClass('el-divBgSkyBlue2--hover');
	$(IDselector).find('.el-divBgSkyBlue2').addClass('el-divBgSkyBlue2--hover');
}
function beforeRemoveWindow(ID, executefunction){
	$("#window-" + ID).find('.w-gui-t1').animate( {
		'background-color' : '#FF6600'
	}, 100).animate( {
		'background-color' : '#dfe8f6'
	}, 100, function(){
		executefunction();
	});
	return $;
}
function newsShowHide(){
	if(xGames.window.process.countAll() > 0){
		$("#news").slideUp();
	}
	else{
		$("#news").slideDown();
	}
}
function xGamesWindowMinMax(ID){
	$("#window-" + ID).find(".contentMarker").toggleClass('display-none');
}
function popupLogin(){
	$("#popupauthorization").fadeIn(400);
}

/* sexotermodinamika 8-) */
var remoteFunctionList = {
	"popupLogin" : function(){
		return popupLogin();
	}
};
var xGames = {
	doNothing : function(){
		var doNothing = true;
	},
	info : {
		category : 1
	},
	storage : {
		xGamesData : {
			data : {},
			tree : {}
		},
		xGamesMenu : {},
		xGamesWindow : {},
		xBetNames : {}
	},
	init : function(){
		this.getBetNames.exec();
		this.getGamesMenu.exec();
	},
	tpl : {
		xGamesLoader : '<img id=xGamesLoader src="img/loaders/loader-1.gif" alt="loading" title="იტვირთება...">',
		xGamesButton : '<div  class="xGamesMenu"><div class="el-menu-gamesnum">{num}</div><a href="javascript:void(0);">{buttonTitle}</a><ul>{menu}</ul></div>',
		xGamesButton_worldcup : '<div id="xGamesMenu-{menuName}-worldcup"  class="xGamesMenu_worldcup" onclick="xGamesMenu(this,\'worldcup\',$(this).find(\'a\').html())" ><div class="el-menu-gamesnum">{num}</div><a href="javascript:void(0);">{buttonTitle}</a></div>',
		xGamesMenu : '<li><a id="xGamesMenu-{menuName}" class="corner-2px" onclick="xGamesMenu(this)" href="javascript:void(0);"><span class="el-menu-gamesnum2">{num}</span>{menuTitle}</a></li>',
		xGamesMenuLive : '<li><a id="xGamesMenu-{menuName}-live" class="corner-2px" onclick="xGamesMenu(this,\'live\')" href="javascript:void(0);"><span class="el-menu-gamesnum2">{num}</span>{menuTitle}</a></li>'
	},
	classes : {
		btnClose : "el-closeBtnX",
		loading : "el-loader"
	},
	error : function(ERROR){
		alert("\n".ERROR);
	},
	errors : {
		ajaxError : function(){
			alert("Error occured\nPlease refresh page.");
		}
	},
	functions : {
		getTpl : function(tplSelector){
			return $("#xtemplates").find("." + tplSelector).html();
		},
		buildTpl : function(selector, replace, tpl){
			return str_replace(selector, replace, tpl);
		},
		getAjaxData : function(object){
			object.preloader();
			$.ajax( {
				cache : false,
				dataType : "json",
				processData : true,
				type : "POST",
				url : "ajax.php",
				data : object.parameters.data,
				error : object.error,
				success : function(data){
					if(data == "" || data == undefined || data == null){
						xGames.errors.ajaxError();
					}
					else{
						object.handler(data);
					}
					object.preloader(true);
				}
			});
		},
		error : function(error){
			alert('error occured\n' + error);
		},
		fly : function(startX, startY, startWidth, startHeight, endX, endY, endWidth, endHeight){

			$("#xfly").stop(true, true).css( {
				left : startX,
				top : startY,
				width : startWidth,
				height : startHeight
			}).css( {
				"display" : ""
			}).animate( {
				left : endX,
				top : endY,
				width : endWidth,
				height : endHeight
			}, 'normal').fadeOut('normal');
		},
		alert : function(endX, endY, endWidth, endHeight){
			$("#xfly").css( {
				left : endX,
				top : endY,
				width : endWidth,
				height : endHeight,
				display : 'block'
			}).animate( {
				width : endWidth
			}, "normal").fadeOut('normal');
		}
	},
	menu : {
		openGames : function(category, group, subgr){},
		openGame : function(){}
	},
	window : {
		process : {
			autoID : 0,
			storage : {},
			generateID : function(){
				return "auto-" + (this.autoID += 1);
			},
			isset : function(ID){
				return xGames.window.process.storage[ID] ? true : false;
			},
			get : function(ID){
				return xGames.window.process.storage[ID];
			},
			countAll : function(){
				return count(xGames.window.process.storage);
			},
			register : function(ID, data){
				xGames.window.process.storage[ID] = {};
				xGames.window.process.storage[ID].active = true;
				if(data !== undefined){
					$.each(data, function(index, value){
						xGames.window.process.storage[ID][index] = value;
					});
				}
				return this;
			},
			remove : function(ID){
				delete xGames.window.process.storage[ID];
				return this;
			},
			update : function(ID, data){
				$.each(data, function(index, value){
					if(xGames.window.process.storage[ID][index] == undefined) xGames.window.process.storage[ID][index] = {};
					xGames.window.process.storage[ID][index] = value;
				});
				return this;
			}
		},
		classes : {
			loading : "el-loader",
			loaded : "el-closeBtnX"
		},
		tpl : {
			shortcut : "xtpl-shortcut",
			window : {
				containers : {
					'main-container' : "xtpl-window-main-container", /* [{xid},{text},{content}] */
					'content-container' : "xtpl-window-content-container" /* [{content}] */
				},
				categories : {
					football : {
						header : 'xtpl-header-football',
						row : 'xtpl-row-football'
					},
					basketball : {
						header : 'xtpl-header-basketball',
						row : 'xtpl-row-basketball'
					}
				},
				morebet : {
					'row-morebets-conteiner' : 'xtpl-row-morebets-container',
					'row-morebets-table' : 'xtpl-row-morebets-table'
				}
			}
		},
		actions : {
			getData : function(ID){
				var w = xGames.window;
				var processData = w.process.get(ID);
				var query = "app=xGames&act=getGamesData&param=" + json_encode(processData.parameter);
				$.ajax( {
					cache : false,
					dataType : "json",
					processData : true,
					type : "POST",
					url : "ajax.php",
					data : query,
					error : this.error,
					success : function(data){
						if(data == "" || data == undefined || data == null){
							xGames.error("function: xGames.actions.getData\nparameter(s): " + ID);
						}
						else{
							w.process.update(ID, {
								data : data
							});
							w.actions.gotDataHandler(ID);
						}
					}
				});
			},
			getDataByGameID : function(gameID){},
			getDataByDate : function(gameStartDate, startDateTo){},
			createWindow : function(ID, text){
				var w = xGames.window;
				var getTpl = xGames.functions.getTpl;
				var buildTpl = xGames.functions.buildTpl;
				return buildTpl( [ '{xid}', '{text}', '{xContent}' ], [ ID, text, '' ], getTpl(w.tpl.window.containers['main-container']));
			},
			gotDataHandler : function(ID){
				var w = xGames.window;
				var processData = w.process.get(ID);
				if(processData.data){
					if(processData.data.data && processData.data.tree && processData.data.windowData){
						if(xGames.storage.xGamesWindow[ID] === undefined) xGames.storage.xGamesWindow[ID] = {};
						xGames.storage.xGamesWindow[ID] = processData.data.windowData;
						$.each(processData.data.data, function(index, value){
							xGames.storage.xGamesData.data[index] = value;
						});
						$.each(processData.data.tree, function(category, categoryData){
							$.each(categoryData, function(group, groupData){
								$.each(groupData, function(subgr, subgrData){
									$.each(subgrData, function(gameNum, gameData){
										if(xGames.storage.xGamesData.tree[category] === undefined) xGames.storage.xGamesData.tree[category] = {};
										if(xGames.storage.xGamesData.tree[category][group] === undefined) xGames.storage.xGamesData.tree[category][group] = {};
										if(xGames.storage.xGamesData.tree[category][group][subgr] === undefined) xGames.storage.xGamesData.tree[category][group][subgr] = {};
										xGames.storage.xGamesData.tree[category][group][subgr][gameNum] = gameData;
									});
								});
							});
						});
						w.process.update(ID, {
							data : false,
							loaded : true
						});
					}
				}
				w.actions.status(ID, true);
				w.actions.putWindowData(ID);
			},
			getWindowData : function(ID, putType, type, parameter){
				var w = xGames.window;
				var categoryID = -1;
				if(putType === undefined || putType == false || putType == null) putType = "replace";
				if(type === undefined || type == false || type == null) type = 'normal';
				if(parameter === undefined || parameter == false || parameter == null) parameter = {};
				if(type == "normal"){
					var p = explode('-', ID);
					parameter = {
						category : p[0],
						group : p[1],
						subgr : p[2]
					};
					categoryID = p[0];
				}
				if(type == "advanced"){
					categoryID = xGames.info.category;
					//parameter.category = categoryID;
				}
				w.process.update(ID, {
					putType : putType,
					type : type,
					parameter : parameter,
					categoryName : xGames.storage.xGamesMenu.categoryNames[categoryID]
				});
				w.actions.getData(ID);
			},
			putWindowData : function(ID){
				var w = xGames.window;
				var s = xGames.storage;
				var gettpl = xGames.functions.getTpl;
				var buildtpl = xGames.functions.buildTpl;
				var windowData = xGames.storage.xGamesWindow[ID];
				var processData = w.process.get(ID);
				var categoryName = processData['categoryName'];
				var thisWindowSelector = "#window-" + ID;
				var thisWindowContentSelector = "#window-" + ID + "  .contentMarker";
				var thisWindowContentTable = "#window-" + ID + "  .contentMarker .w-content-table";
				var tpl_header = gettpl('xtpl-header-' + categoryName);
				var tpl_row = gettpl('xtpl-row-' + categoryName);
				var tpl_more_row_conteiner = gettpl('xtpl-row-morebets-container');
				var headerData = tpl_header;
				var rowsData = '';
				/* ============================================================ */
				var searchArr = new Array();
				var replaceArr = new Array();
				searcArr = [ "{even-odd}", "{windowID}", "{gameId}", "{name}", "{datetime}", "{z-type1-basic-1}", "{z-type1-basic-x}", "{z-type1-basic-2}", "{z-type1-basic-1x}", "{z-type1-basic-12}", "{z-type1-basic-x2}", "{z-type1-basic-10}", "{z-type1-basic-20}", "{z-type1-basic_underover-1}", "{z-type1-basic_underover-t}", "{z-type1-basic_underover-2}", "{z-type1-bothgoals-1}", "{z-type1-bothgoals-2}", "{z-type1-handicap-t}", "{z-type1-handicap-1}", "{z-type1-handicap-x}", "{z-type1-handicap-2}", "{z-type1-spread-1}", "{z-type1-spread-t}", "{z-type1-spread-2}", "{morebets}", "{morebetdisplay}", "{morebetsimgplus}", "{morebetsimgminus}", "{morebetsnone}" ];

				var searchArr_worldcup = new Array();
				searchArr_worldcup = [ "{even-odd}", "{windowID}", "{gameId}", "{name}", "{datetime}", "{z-type1-basic-1}","{xType}","{xBettype}","{z-type1-basic-2}" ];

				var replaceArr_worldcup = new Array();
				
				var rowtpl = tpl_row;
				var rows = {};
				var thisgame = 0;
				var num = 1;
				var evenORodd = '';
				var old_group_subgr = '';
				var temp;
				var NNN = 0;
				var morebet = 0;
				var morebetsdisplay = 'none';
				var plus = 'none';
				var minus = '';
				var none = 'none';
				var Aname;
				var Axtype;
				var Atype;
				var Atitle;
				var Aheaders;
				var morebetsContainer = $(".xtpl-row-morebets-container").html();
				var morebetsHtmlHeader;
				var morebetsHtmlRow;
				var morebetsHtml;
				var _morebets_header;
				var _morebets_row;
				var _type;
				var _headers;
				var _xdataarr;
				var _indexnum;
				var __normal = 1;
				var worldcup_appendname;
				var _s={};
				var _r={};

				$.each(windowData, function(index, value){
					morebetsHtmlHeader = '';
					morebetsHtmlRow = '';
					morebetsHtml = '';
					_morebets_header = '';
					_morebets_row = '';

					evenORodd = num % 2 != 0 ? "even" : "odd";
					thisgame = xGames.storage.xGamesData.data[value];

					if(thisgame['bets']['type1'] !== undefined){
						__normal = 1;

						if(thisgame['bets']['type1'] && thisgame['bets']['type1']['spread'] && thisgame['bets']['type1']['spread']["f1"] && isTot(thisgame['bets']['type1']['spread']["f1"]) && isTot(thisgame['bets']['type1']['spread']["f2"])){
							if(isTot(thisgame['bets']['type1']['spread']["f1"]) > 0) thisgame['bets']['type1']['spread']["f1"] = "+" + isTot(thisgame['bets']['type1']['spread']["f1"]);
							if(isTot(thisgame['bets']['type1']['spread']["f2"]) > 0) thisgame['bets']['type1']['spread']["f2"] = "+" + isTot(thisgame['bets']['type1']['spread']["f2"]);
						}
						if(thisgame['bets']['type1']['handicap'] !== undefined){

						}
						if(thisgame['bets']['type1']){}
						$.each(thisgame['bets'], function(type, typedata){
							$.each(typedata, function(bettype, bettypedata){
								_type = {};
								_headers = {};
								plus = ' style="display:inline" ';
								minus = ' style="display:none" ';
								none = ' style="display:none" ';
								morebetsdisplay = ' style="display:none" ';
								if(bettype != 'handicap' && bettype != 'spread' && bettype != "basic" && bettype != "basic_underover" && bettype != 'bothgoal' && bettype !== null && xGames.storage.xBetNames[bettype] != undefined){
									
									minus = ' style="display:none" ';
									none = ' style="display:none" ';
									plus = ' style="display:inline" ';
									morebetsdisplay = ' style="display:none" ';
									
									if((bettype != 'spread' && bettype != 'handicap' && bettype != 'half_underover') || ((bettype == 'spread' || bettype == 'handicap' || bettype == 'half_underover') && bettypedata[0] && bettypedata[0]['1'] > 1)){

										minus = ' style="display:none" ';
										none = ' style="display:none" ';
										plus = ' style="display:inline" ';
										morebetsdisplay = ' style="display:none" ';
										morebet++;

										Aname = xGames.storage.xBetNames[bettype]['name'];
										Axtype = xGames.storage.xBetNames[bettype]['xtype'];
										Atype = xGames.storage.xBetNames[bettype]['type'];
										Atitle = xGames.storage.xBetNames[bettype]['title'];
										Aheaders = xGames.storage.xBetNames[bettype]['headers'];

										morebetsHtmlHeader = $(".xtpl-" + Aname + "  .w-morebets-header").html();
										morebetsHtmlRow = $(".xtpl-" + Aname + "  .w-more-row").html();

										$.each(Atype, function(index, value){
											_type[index] = "{" + value + "}";
										});
										$.each(Aheaders, function(index, value){
											_headers[index] = value;
										});
										_morebets_header = str_replace("{text}", Atitle, morebetsHtmlHeader);
										$.each(_type, function(index, value){
											_morebets_header = str_replace(value, _headers[index], _morebets_header);
										});
										_morebets_header = "<tr class=__moretableheader>" + _morebets_header + "</tr>";
										$.each(bettypedata, function(name, data){
											if(is_array(data)){
												if(data !== undefined && data['1'] !== undefined){
													_indexnum = 0;
													morebetsHtmlRow = str_replace( [ '{Type}', '{Bettype}', '{gameId}' ], [ type, bettype, thisgame['id'] ], morebetsHtmlRow);
													if(data != ""){
														$.each(data, function(kname, kdata){
															if(kdata != ""){
																if(kname == 'tot'){
																	kname = 't';
																	morebetsHtmlRow = str_replace("{t}", kdata, morebetsHtmlRow);
																}
																else{
																	morebetsHtmlRow = str_replace("{" + kname + "}", round(kdata,2), morebetsHtmlRow);
																	morebetsHtmlRow = str_replace('{betIndex}', _indexnum, morebetsHtmlRow);
																	_indexnum++;
																}
															}
														});
													}
												}
											}
											else{
												if(data !== ""){
													morebetsHtmlRow = str_replace( [ '{Type}', '{Bettype}', '{gameId}' ], [ type, bettype, thisgame['id'] ], morebetsHtmlRow);

													if(name == 'tot'){
														name = 't';
														morebetsHtmlRow = str_replace("{t}", data, morebetsHtmlRow);
													}
													else{
														morebetsHtmlRow = str_replace("{" + name + "}", round(data,2), morebetsHtmlRow);
														morebetsHtmlRow = str_replace('{betIndex}', 0, morebetsHtmlRow);
													}
												}
											}

										});
										morebetsHtmlRow = str_replace( [ '{1}', '{x}', '{2}', '{1x}', '{12}', '{x2}', '{10}', '{20}', '{11}', '{12}', '{21}', '{22}', '{x1}', '{2x}', '{xx}' ], '', morebetsHtmlRow);
										_morebets_row = "<tr class=__moretablerow>" + morebetsHtmlRow + "</tr>";

										morebetsHtml += "<table class=__moretable>" + _morebets_header + _morebets_row + "</table>";

									}
								}
								else{
									if(morebet===undefined || morebet ==0){
									plus = ' style="display:none" ';
									none = ' style="display:inline" ';}
								}
							});

						});

						replaceArr = [ evenORodd, ID, thisgame['id'], thisgame['host'] + "-" + thisgame['guest'], date('d/m H:i', thisgame['timestamp']), thisgame['bets']['type1']['basic'] !== undefined ? isKoef(thisgame['bets']['type1']['basic']["1"]) : "", thisgame['bets']['type1']['basic'] !== undefined ? isKoef(thisgame['bets']['type1']['basic']["x"]) : "", thisgame['bets']['type1']['basic'] !== undefined ? isKoef(thisgame['bets']['type1']['basic']["2"]) : "", thisgame['bets']['type1']['basic'] !== undefined ? isKoef(thisgame['bets']['type1']['basic']["1x"]) : "", thisgame['bets']['type1']['basic'] !== undefined ? isKoef(thisgame['bets']['type1']['basic']["12"]) : "", thisgame['bets']['type1']['basic'] !== undefined ? isKoef(thisgame['bets']['type1']['basic']["x2"]) : "",
								thisgame['bets']['type1']['basic'] !== undefined ? isKoef(thisgame['bets']['type1']['basic']["10"]) : "", thisgame['bets']['type1']['basic'] !== undefined ? isKoef(thisgame['bets']['type1']['basic']["20"]) : "",

								thisgame['bets']['type1']['basic_underover'] !== undefined ? isKoef(thisgame['bets']['type1']['basic_underover'][0]["1"]) : "", thisgame['bets']['type1']['basic_underover'] !== undefined ? isTot(thisgame['bets']['type1']['basic_underover'][0]["tot"]) : "", thisgame['bets']['type1']['basic_underover'] !== undefined ? isKoef(thisgame['bets']['type1']['basic_underover'][0]["2"]) : "",

								thisgame['bets']['type1']['bothgoal'] !== undefined ? isKoef(thisgame['bets']['type1']['bothgoal']["1"]) : "", thisgame['bets']['type1']['bothgoal'] !== undefined ? isKoef(thisgame['bets']['type1']['bothgoal']["2"]) : "",

								thisgame['bets']['type1']['handicap'] !== undefined ? (isTot(thisgame['bets']['type1']['handicap'][0]["f1"]) + "-" + isTot(thisgame['bets']['type1']['handicap'][0]["f2"])) : "", thisgame['bets']['type1']['handicap'] !== undefined ? isKoef(thisgame['bets']['type1']['handicap'][0]["1"]) : "", thisgame['bets']['type1']['handicap'] !== undefined ? isKoef(thisgame['bets']['type1']['handicap'][0]["x"]) : "", thisgame['bets']['type1']['handicap'] !== undefined ? isKoef(thisgame['bets']['type1']['handicap'][0]["2"]) : "", thisgame['bets']['type1']['spread'] !== undefined ? isKoef(thisgame['bets']['type1']['spread'][0]["1"]) : "",
								thisgame['bets']['type1']['spread'] !== undefined ? (spreadFora(isTot(thisgame['bets']['type1']['spread'][0]["f1"])) + "/" + spreadFora(isTot(thisgame['bets']['type1']['spread'][0]["f2"]))) : "", thisgame['bets']['type1']['spread'] !== undefined ? isKoef(thisgame['bets']['type1']['spread'][0]["2"]) : "", morebetsHtml, morebetsdisplay, plus, minus, none ];
					}
					else{
						searchArr_worldcup;
						__normal = 0;

						var __type;
						var __bettype;
						_s={};
						_r={};
						$.each(thisgame['bets'], function(type, typedata){
							
							__type=type;

							$.each(typedata, function(bettype, bettypedata){
								
								__bettype=bettype;

								if(bettype=="basic")worldcup_appendname = 1;
								if(bettype=="cup_etap")worldcup_appendname = 2;
								if(bettype=="cup_point")worldcup_appendname = 3;
								if(bettype=="cup_underover")worldcup_appendname = 4;
								if(bettype=="cup_yesno")worldcup_appendname = 5;
								
								$.each(bettypedata,function(koefname, koef){
									_s[bettype+worldcup_appendname+koefname]="{z-"+bettype+"-"+koefname+"}";
									_r[bettype+worldcup_appendname+koefname]=koef;

								});
								
									
							});
						});
						
						replaceArr_worldcup = [ evenORodd, ID, thisgame['id'], str_replace("-#","",thisgame['host'] + "-" + thisgame['guest']), date('d/m H:i', thisgame['timestamp']), thisgame['bets'][__type]['basic'] !== undefined ? isKoef(thisgame['bets'][__type]['basic']["1"]) : "",__type,__bettype,thisgame['bets'][__type]['basic'] !== undefined ? isKoef(thisgame['bets'][__type]['basic']["2"]) : "" ];
						

					}
					if(old_group_subgr == '' || old_group_subgr != thisgame['group_id'] + "_" + thisgame['subgr_id']){
						if(processData.type == 'advanced'){


							if(__normal==0){
								
								rows[NNN++] = buildtpl('{xtitle}', '<div class="st-83">' + thisgame['group'] + ": " + str_replace("#","",thisgame['subgr']) + '</div>', gettpl('xtpl-header-' + categoryName+ "-"+worldcup_appendname));

							}else{
								rows[NNN++] = buildtpl('{xtitle}', '<div class="st-83">' + thisgame['group'] + " " + thisgame['subgr'] + '</div>', headerData);

							}
							
						}
						else{

							rows[NNN++] = buildtpl('{xtitle}', '', headerData);
						}
					}
					old_group_subgr = thisgame['group_id'] + "_" + thisgame['subgr_id'];

					if(__normal==1){
						rows[NNN++] = buildtpl(searcArr, replaceArr, tpl_row);
					}
					else{
						
						var junk = ['{z-cup_etap-1}','{z-cup_etap-2}','{z-cup_etap-3}','{z-cup_etap-4}','{z-cup_etap-5}',
						            '{z-cup_point-10}','{z-cup_point-1}','{z-cup_point-2}','{z-cup_point-3}','{z-cup_point-4}','{z-cup_point-5}','{z-cup_point-6}','{z-cup_point-7}','{z-cup_point-9}',
						            '{z-cup_underover-1}','{z-cup_underover-t}','{z-cup_underover-2}',
						            '{z-cup_yesno-1}','{z-cup_yesno-2}',
						            '{z-type1-basic-1}','{z-type1-basic-2}'
						            ];
						
						rows[NNN++] = str_replace(junk,'',str_replace(array_values(_s),array_values(_r),buildtpl(searchArr_worldcup, replaceArr_worldcup, gettpl('xtpl-row-' + categoryName+"-"+worldcup_appendname)))); 
					}
					num++;

				});
				rowsData = implode(" ", rows);
				/* ============================================================ */
				var contentData = rowsData;
				$(thisWindowContentTable).html(contentData);
				return betClick();
			},
			createShortcut : function(ID, text){
				var w = xGames.window;
				var getTpl = xGames.functions.getTpl;
				var buildTpl = xGames.functions.buildTpl;
				return buildTpl( [ '{xid}', '{text}' ], [ ID, text ], getTpl(w.tpl.shortcut));
			},
			status : function(ID, status){
				if(status === undefined) status = false;
				if(status == true){
					$("#bookmakers-content").find("#window-" + ID).find(".statusMarker2").show();
					$("#bookmakers-content").find("#window-" + ID).find(".statusMarker1").hide();
					$("#shortcut-" + ID).find(".statusMarker2").show();
					$("#shortcut-" + ID).find(".statusMarker1").hide();
				};
				if(status == false){
					$("#bookmakers-content").find("#window-" + ID).find(".statusMarker2").hide();
					$("#bookmakers-content").find("#window-" + ID).find(".statusMarker1").show();
					$("#shortcut-" + ID).find(".statusMarker2").hide();
					$("#shortcut-" + ID).find(".statusMarker1").show();
				};
			},
			destroyShortcut : function(ID){
				$("#shortcut-" + ID).hide(200, function(){
					$(this).html('').css( {
						display : "none"
					}).attr(id, '').remove();
				});
				return true;
			},
			destroyWindow : function(ID){
				$("#window-" + ID).slideUp(200, function(){
					$(this).html('').css( {
						display : "none"
					}).attr(id, '').remove();
				});
				return true;
			}
		},
		parsers : {},
		act : {
			markShortcut : function(shortcutObj){
				xGames.functions.alert(($(shortcutObj).offset().left - 4), ($(shortcutObj).offset().top - 4), $(shortcutObj).width(), $(shortcutObj).height());
				$(shortcutObj).effect("pulsate", {
					times : 2
				}, 300);
			},
			flyShortcut : function(obj, shortcutObj){
				xGames.functions.fly($(obj).offset().left, $(obj).offset().top, $(obj).width(), $(obj).height(), ($(shortcutObj).offset().left - 4), ($(shortcutObj).offset().top - 4), $(shortcutObj).width(), $(shortcutObj).height());
			},

			click : function(obj, category, group, subgr){
				/* momzadeba */
				var w = xGames.window;
				var ID = category + "-" + group + "-" + subgr;
				var shortcutObj = '#shortcut-' + ID;
				var text = xGames.storage.xGamesMenu.meta.groupList[group] + " " + xGames.storage.xGamesMenu.meta.subgrList[subgr];
				var shortcut = w.actions.createShortcut(ID, text);
				var window = w.actions.createWindow(ID, text);
				/* mokmedeba :) */
				if($(obj).hasClass('xGamesmenu_checked')){
					w.act.markShortcut(shortcutObj);
					xGames.window.act.close(ID);
				}
				else{
					$(obj).addClass('xGamesmenu_checked');
					if(!w.process.isset(ID)){
						w.process.register(ID);
						$(".shortcutPlace").append(shortcut);
						$("#shortcut-" + ID).fadeIn(1000).show(1000);
						w.act.flyShortcut(obj, shortcutObj);
						$("#bookmakers-content").prepend(window);
						w.actions.status(ID);
						w.actions.getWindowData(ID);
					}
					else{
						w.act.markShortcut(shortcutObj);
					}
				}
				newsShowHide();
			},
			advancedClick : function(obj, windowParam, searchParam){
				var w = xGames.window;
				if(substr($(obj).attr('id'), -4, 4) == 'live'){
					var ID = $(obj).attr('id');
				}
				else if(substr($(obj).attr('id'), -8, 8) == 'worldcup'){
					var ID = substr($(obj).attr('id'),11);
					var ____t = substr(ID,0,-9);

					____t = explode('-',____t);
					searchParam={
							category:____t[0],
							group : ____t[1]
					};
				}
				else if($(obj).hasClass('xGamesmenuAdvanced_checked')){
					var ID = $(obj).attr('xProcessID');
				}
				else{
					var ID = w.process.generateID();
				}
				var shortcutObj = '#shortcut-' + ID;
				var text = xGames.storage.xGamesMenu.meta.categoryList[xGames.info.category] + ": " + windowParam.text;
				var shortcut = w.actions.createShortcut(ID, text);
				var window = w.actions.createWindow(ID, text);
				/* mokmedeba :) */
				if($(obj).hasClass('xGamesmenuAdvanced_checked')){
					w.act.markShortcut(shortcutObj);
					xGames.window.act.close(ID);
				}
				else{
					$(obj).addClass('xGamesmenuAdvanced_checked').attr('xProcessID', ID);
					if(!w.process.isset(ID)){
						w.process.register(ID);
						$(".shortcutPlace").append(shortcut);
						$("#shortcut-" + ID).fadeIn(1000).show(1000);
						w.act.flyShortcut(obj, shortcutObj);
						$("#bookmakers-content").prepend(window);
						w.actions.status(ID);
						w.actions.getWindowData(ID, false, 'advanced', searchParam);
					}
					else{
						w.act.markShortcut(shortcutObj);
					}
				}
				newsShowHide();
			},
			close : function(ID){
				var w = xGames.window;
				var shortcutID = "#shortcut-" + ID;
				if(w.process.get(ID) && w.process.get(ID).loaded){
					beforeRemoveWindow(ID, function(){
						w.process.remove(ID);
						w.actions.destroyWindow(ID);
						if($("#xGamesMenu-" + ID).hasClass('xGamesmenu_checked')){
							$("#xGamesMenu-" + ID).removeClass('xGamesmenu_checked');
						}
						if($("[xProcessID=" + ID + "]").hasClass('xGamesmenuAdvanced_checked')){
							$("[xProcessID=" + ID + "]").removeClass('xGamesmenuAdvanced_checked').removeAttr('xProcessID');
						}
						newsShowHide();
					});
					w.actions.destroyShortcut(ID);

					return true;
				}
				else{
					return false;
				}

			}
		}

	},
	getBetNames : {
		exec : function(){
			xGames.storage.xBetNames = json_decode($(".xtpl-xBetNames").text());
		}
	},
	getGamesMenu : {
		storage : {},
		parameters : {},
		exec : function(){
			this.request();
		},
		request : function(param){
			if(param === undefined) param = "all";
			this.parameters.data = "app=xGames&act=getGamesMenu&data=" + param;
			xGames.functions.getAjaxData(this);
		},
		handler : function(data){
			xGames.storage.xGamesMenu = data;
			/* $("#debug").append(print_r(data, true)); */
			this.processor();
		},
		preloader : function(param){
			if(param === undefined){
				$("#xGamesMenuLoader").slideDown('slow');
			}
			else{
				$("#xGamesMenuLoader").slideUp('slow');
			}
		},
		error : function(){
			xGames.getGamesMenu.preloader(true);
			alert("Error occured\nPlease refresh page.");
		},
		processor : function(){
			var __menuIDs = new Array();
			var __groupButtonTpl = xGames.tpl.xGamesButton;
			var __groupButtonTpl_worldcup = xGames.tpl.xGamesButton_worldcup;
			var __subgrMenuTpl = xGames.tpl.xGamesMenu;
			var __subgrMenuTplLive = xGames.tpl.xGamesMenuLive;
			var __subgrmenu = {};
			var __groupmenu_title = "";
			var __groupButtons = {};
			var dataArray = xGames.storage.xGamesMenu;
			$.each(dataArray.menudatadetail, function(index, value){
				var __thisMenuID = "#main_content_tab_" + index;
				if($(__thisMenuID).hasClass("hidden")) $(__thisMenuID).fadeIn('slow').removeClass("hidden");
				array_push(__menuIDs, __thisMenuID);
			});
			$.each($(".main-content-tab"), function(index, value){
				if(!in_array("#" + $(this).attr("id"), __menuIDs)){
					if($(this).hasClass("hidden")){
						0;
					}
					else{
						$(this).hide('slow').addClass("hidden");
					}
				}
			});
			var __subgrmenu = {};
			$.each(dataArray.menudatadetail, function(categoryID, categoryData){
				if(categoryID == 3){
					$.each(categoryData, function(groupID, groupData){
						if(__groupButtons[categoryID] == undefined) __groupButtons[categoryID] = {};
						__groupButtons[categoryID][dataArray.meta.groupList[groupID]] = xGames.functions.buildTpl( [ '{menuName}',"{buttonTitle}", "{menu}", '{num}' ], [ categoryID+"-"+groupID  ,dataArray.meta.groupList[groupID], implode('', __subgrmenu), count(dataArray.games.groupped[categoryID][groupID], 'COUNT_RECURSIVE') - count(dataArray.games.groupped[categoryID][groupID]) ], __groupButtonTpl_worldcup);
					});
				}
				else{
					$.each(categoryData, function(groupID, groupData){
						__subgrmenu = {};
						$.each(groupData, function(subgrID, subgrData){
							if(categoryID == -1){
								__subgrmenu[dataArray.meta.subgrList[subgrID]] = xGames.functions.buildTpl( [ '{menuName}', '{menuTitle}', '{num}' ], [ dataArray.menudatadetail[categoryID][groupID][subgrID]['category'] + "-" + groupID + "-" + subgrID, dataArray.meta.subgrList[subgrID], count(dataArray.games.groupped[categoryID][groupID][subgrID]) ], __subgrMenuTplLive);
							}
							else{
								__subgrmenu[dataArray.meta.subgrList[subgrID]] = xGames.functions.buildTpl( [ '{menuName}', '{menuTitle}', '{num}' ], [ categoryID + "-" + groupID + "-" + subgrID, dataArray.meta.subgrList[subgrID], count(dataArray.games.groupped[categoryID][groupID][subgrID]) ], __subgrMenuTpl);
							}
						});
						ksort(__subgrmenu);
						if(__groupButtons[categoryID] == undefined) __groupButtons[categoryID] = {};
						__groupButtons[categoryID][dataArray.meta.groupList[groupID]] = xGames.functions.buildTpl( [ "{buttonTitle}", "{menu}", '{num}' ], [ dataArray.meta.groupList[groupID], implode('', __subgrmenu), count(dataArray.games.groupped[categoryID][groupID], 'COUNT_RECURSIVE') - count(dataArray.games.groupped[categoryID][groupID]) ], __groupButtonTpl);
						__subgrmenu = "";
					});
				}

			});
			$.each(__groupButtons, function(categoryID, categoryData){
				ksort(categoryData);
				__groupButtons[categoryID] = categoryData;
			});

			this.storage.groupButtons = __groupButtons;
			xGames.buildGamesMainMenu();
		}
	},
	buildGamesMainMenu : function(categoryID, menuData){
		if(menuData == "" || menuData == undefined || menuData == null) menuData = xGames.getGamesMenu.storage.groupButtons;
		if(categoryID == "" || categoryID == undefined || categoryID == null) categoryID = 1;
		/**
		 * column-ebis raodenoba konfigurirebadia
		 */

		var __columnNum = 5;
		var __raod = count(menuData[categoryID]);
		var __rowNum = parseInt(__raod / __columnNum);
		var __rowPlus = __raod % __columnNum;
		var __position = 0;
		var __data = array_values(menuData[categoryID]);
		var __currentColumnNum = 1;
		var __num = 0;
		var __forCleaning = 1;

		if(categoryID == 3){
			var __columnNum = 3;
			var __raod = count(menuData[categoryID]);
			var __rowNum = parseInt(__raod / __columnNum);
			var __rowPlus = __raod % __columnNum;
			var __position = 0;
			var __data = array_values(menuData[categoryID]);
			var __currentColumnNum = 1;
			var __num = 0;
			var __forCleaning = 1;

			while (__columnNum >= __forCleaning){
				$("#xGamesCell_worldcup-" + __forCleaning++).html('');
			}
			while (__currentColumnNum <= __columnNum){
				__position = __rowNum;
				while (__position > 0){
					$("#xGamesCell_worldcup-" + __currentColumnNum).append(__data[__num]);
					__position--;
					__num++;
				}
				if(__rowPlus > 0){
					$("#xGamesCell_worldcup-" + __currentColumnNum).append(__data[__num]);
					__rowPlus--;
					__num++;
				}
				__currentColumnNum++;
			}
			$("#table-xGamesmenuTableConteiner").hide();
			$("#table-xGamesmenuTableConteiner_worldcup").show();
		}
		else{
			var __columnNum = 5;
			var __raod = count(menuData[categoryID]);
			var __rowNum = parseInt(__raod / __columnNum);
			var __rowPlus = __raod % __columnNum;
			var __position = 0;
			var __data = array_values(menuData[categoryID]);
			var __currentColumnNum = 1;
			var __num = 0;
			var __forCleaning = 1;

			while (__columnNum >= __forCleaning){
				$("#xGamesCell-" + __forCleaning++).html('');
			}
			while (__currentColumnNum <= __columnNum){
				__position = __rowNum;
				while (__position > 0){
					$("#xGamesCell-" + __currentColumnNum).append(__data[__num]);
					__position--;
					__num++;
				}
				if(__rowPlus > 0){
					$("#xGamesCell-" + __currentColumnNum).append(__data[__num]);
					__rowPlus--;
					__num++;
				}
				__currentColumnNum++;
			}
			$("#table-xGamesmenuTableConteiner").show();
			$("#table-xGamesmenuTableConteiner_worldcup").hide();
		}

		xGamesMenuClickHandler();
		/*
		 * $("#debug").html(str_replace(' ', '| ',
		 * print_r(xGames.storage.xGamesMenu, true)));
		 */
	},
	getGamesData : {
		request : function(ID){
			var gotDataHandler = 'gotDataHandler';
			var w = xGames.window;
			var processData = w.process.get(ID);
			var query = "app=xGames&act=getGamesData&param=" + json_encode(processData.parameter);

			xGames.functions.returnAjaxData(query, gotDataHandler);
			return true;
		}
	}

};

var xTicket = {
	systemData:{},
	storage : {
		data : {},
		activetab : "normal"
	},
	errors : {
		ajaxError : function(){
			alert("ticket error, please refresh page");
		}
	},
	functions : {
		getAjaxData : function(object){
			object.preloader();
			$.ajax( {
				cache : false,
				dataType : "json",
				processData : true,
				type : "POST",
				url : "ajax.php",
				data : object.parameters.data,
				error : object.error,
				success : function(data){
					if(data == "" || data == undefined || data == null){
						xTicket.errors.ajaxError();
					}
					else{
						object.handler(data);
					}
				}
			});
		}
	},
	request : {
		parameters : {
			data : {}
		},
		clearticket : function(){
			xTicket.request.parameters.data = "app=xGames&act=ticket&param=-1";
			xTicket.functions.getAjaxData(this);
		},
		exec : function(obj, action, bettingType){
			if(obj !== undefined && obj !== false && obj !== "placebet"){
				if($(obj).attr("xbetIndex")){
					var betindex = $(obj).attr("xbetIndex");
				}
				else{
					var betindex = -1;
				}
				var parameters = {
					"action" : action,
					"bettingtype" : bettingType,
					"type" : $(obj).attr("xtype"),
					"bettype" : $(obj).attr("xbettype"),
					"bet" : $(obj).attr("xbet"),
					"betindex" : betindex,
					"gameid" : $(obj).attr("xgameid")
				};
				
				
				
				xTicket.request.parameters.data = "app=xGames&act=ticket&param=" + json_encode(parameters);
			}
			else if(obj === "placebet"){
				var betData = xTicket.collectBetData();
				/* alert_r(betData); */
				
				xTicket.request.parameters.data = "app=xGames&act=ticket&param=0&ticketaction=placebet&ticketdata=" + json_encode(betData);
			}
			else{
				xTicket.request.parameters.data = "app=xGames&act=ticket&param=0";
			}
			xTicket.functions.getAjaxData(this);
		},
		error : function(){
			alert("ticket data request error,\nplease check internet connection and refresh page");
		},
		handler : function(data){
			xTicket.storage['data'] = data;
			if(data.message){
				$(".ticket-message").html(data.message);
			}
			if(data.text){
				$(".ticket-message").html('');
				$("#ticket-text").slideDown('normal');
				$("#ticket-text").html(data.text);
			}
			else{
				$("#ticket-text:visible").slideUp('normal');
			}
			if(data.run){

				remoteFunctionList[data.run]();

			}
			data = xTicket.storage.data;
			this.preloader(true);
			if(data.data){
				var rowtpl = $(".xtpl-ticket-row>tbody").html();
				var rep1 = new Array();
				var rep2 = new Array();
				var optionsNum = count(data.data);
				var optionsData = '';
				var optionsNum2 = 1;
				rep1 = [ '{gameID}', '{num}', '{game}', '{bettext}', '{koef}', '{bet}', '{type}', '<option>{select-options}</option>', '<OPTION>{select-options}</OPTION>' ];
				var n = 1;
				var rows = '';
				var ___opt;
				$.each(data.data, function(index, gameData){
					optionsNum2 = 1;
					optionsNum = count(data.data);
					optionsData = '';
					while (optionsNum > 0){
						___opt = (optionsNum2 == n) ? "selected" : "";
						optionsData += "<option " + ___opt + ">" + optionsNum2 + "</option>\n";
						optionsNum2++;
						optionsNum--;
					}
					rep2 = [ gameData['id'], n, gameData['name'], gameData['bettitle'], gameData['koef'], gameData['betname'], gameData['type'], optionsData,optionsData ];

					rows += str_replace(rep1, rep2, rowtpl);
					n++;
				});
				
				$(".ticket-table-row").html(rows);
			}
			else{
				$(".ticket-table-row").html('');
			}
			xTicket.calculator();
		},
		preloader : function(param){
			if(param === undefined){
				$(".ticket-message").hide(0, function(){
					$(".ticket-loader").show();
				});
			}
			else{
				$(".ticket-loader").hide(0, function(){
					$(".ticket-message").show();
				});
			}
		},
		parameters : {
			data : ''
		}
	},
	add : function(obj, bettingType){
		if(bettingType === undefined){
			bettingType = "put";
		}
		xTicket.request.exec(obj, 'add', bettingType);
	},
	liveadd : function(obj, bettingType){
		if(bettingType === undefined){
			bettingType = "put";
		}
		xTicket.request.exec(obj, 'liveadd', bettingType);
	},
	remove : function(obj, bettingType){
		if(bettingType === undefined){
			bettingType = "put";
		}
		xTicket.request.exec(obj, 'remove', bettingType);
	},
	refresh : function(){
		xTicket.request.exec();
	},
	collectBetData : function(){
		var data = {};
		data['system'] = xTicket.storage.activetab;
		data['bet'] = $("#xticket-bet").val();
		data['bettingtype'] = 'put';
		data['bets'] = {};
		
		if(xTicket.storage.activetab == "system"){
			data['system_plus1'] = xTicket.systemData['plus1'];
			data['system_minus'] = xTicket.systemData['system_minus'];
			data['system_data'] = xTicket.systemData['system_data'];
		}
		
		$.each(xTicket.storage.data.data, function(index, thigame){
			data['bets'][index] = {};
			data['bets'][index]['id'] = thigame['id'];
			data['bets'][index]['type'] = thigame['type'];
			data['bets'][index]['bettype'] = thigame['bettype'];
			data['bets'][index]['bet'] = thigame['bet'];
			data['bets'][index]['betindex'] = thigame['betindex'];
		});
		
		return data;
	},
	calculator : function(){
		if(this.storage.data === undefined || this.storage.data.data === undefined || count(xTicket.storage.data.data) < 3){
			xTicket.tickettab.click('normal', $("#ticket-tab-normal"), true);
		}
		if(this.storage.data !== undefined){
			if(this.storage.data.meta !== undefined){
				if(this.storage.data.meta.koefs !== undefined){
					this.calc2(false,true);
				}
				else{
					$("#xticket-variantebi").val('');
					$("#xticket-koef").val('');
					$("#xticket-bet").val('');
					$("#xticket-supp").val('');
				}
			}
			else{
				$("#xticket-variantebi").val('');
				$("#xticket-koef").val('');
				$("#xticket-bet").val('');
				$("#xticket-supp").val('');
			}
		}
		else{
			$("#xticket-variantebi").val('');
			$("#xticket-koef").val('');
			$("#xticket-bet").val('');
			$("#xticket-supp").val('');
		}
	},
	calc : function(changed){
		setTimeout("xTicket.calc2('" + changed + "')", 3500);
	},
	calc2 : function(changed,systemselectboxcalc){
		
		var t__blocks={};
		$.each($(".ticket-table-row .system-selectbox"),function(i,obj){
			if($(obj).val()!=-1)
			t__blocks[$(obj).val()]=$(obj).val();
		});
		if(count(t__blocks)<2){
			
			xTicket.storage.activetab = "normal";
			//xTicket.tickettab.click('normal',this,true);

			//return false;
		}
		
		
		if(xTicket.storage.activetab == "normal"){
			$("#ticket-placebet").attr('disabled',false);
			var multiplekoefs = 1;
			if(this.storage.data && this.storage.data.meta && this.storage.data.meta.koefs){
				$.each(this.storage.data.meta.koefs, function(index, value){
					multiplekoefs = multiplekoefs * value;
				});
			}
			var temp;
			var ticket_koef = multiplekoefs;
			var ticket_variantebi = 1;
			var ticket_bet = $("#xticket-bet").val();
			var ticket_supp = $("#xticket-supp").val();
			if(ticket_bet != ""){
				ticket_bet = parseFloat(str_replace( [ "," ], [ "." ], ticket_bet));
			}
			if(ticket_supp != ""){
				ticket_supp = parseFloat(str_replace( [ "," ], [ "." ], ticket_supp));
			}
			if(isNaN(ticket_bet) || ticket_bet==0 || ticket_bet == false || !ticket_bet){
				ticket_bet = 0.25;
			}
			if(ticket_bet == "" && ticket_supp == ""){
				ticket_bet = 0.25;
			}
			if(changed == "bet"){
				ticket_bet = parseFloat(str_replace( [ "," ], [ "." ], ticket_bet));
				if(ticket_bet < 0.25){
					ticket_bet = 0.25;
				}
			}
			if(changed == "supp"){
				ticket_supp = parseFloat(str_replace( [ "," ], [ "." ], ticket_supp));
				if(ticket_supp > 0.25){
					ticket_bet = round(ticket_supp / ticket_koef, 2);
				}
				if(ticket_bet < 0.25){
					ticket_bet = 0.25;
				}
				if(round(ticket_koef * ticket_bet, 2) < ticket_supp){
					ticket_bet += 0.01;
				}
			}
			
			
			if(ticket_koef > 1200){
				ticket_koef=1200;
			}
			
			if(ticket_koef > 1000 && ticket_bet>=1 && ticket_bet<=10){
				$(".coeflabel").html('+50%');
			}else{
				$(".coeflabel").html('');
			}
			
			
			ticket_supp = round(ticket_koef * ticket_bet, 2);
			
			if(ticket_koef > 1000 &&  ticket_bet>=1 && ticket_bet<=10){
				$(".winlabel").html('+'+ round(ticket_supp/2 , 2));
			}else{
				$(".winlabel").html('');
			}
			
			$("#xticket-variantebi").val(ticket_variantebi);
			
			
			temp = round(ticket_koef, 2);
			
			temp = temp.toFixed(2);
			$("#xticket-koef").val(temp);
			
			temp = 0;
			temp = round(ticket_bet, 2);
			temp = temp.toFixed(2);	
			$("#xticket-bet").val(temp);
			
			temp = 0;
			temp = round(ticket_supp, 2);
			temp = temp.toFixed(2);	
			$("#xticket-supp").val(temp);
		}
		if(xTicket.storage.activetab == "system"){
			$("#ticket-placebet").attr('disabled',true);
			$(".coeflabel").html('');
			$(".winlabel").html('');
			
			var blocks={};
			$.each($(".ticket-table-row .system-selectbox"),function(i,obj){
				if($(obj).val()!=-1)
				blocks[$(obj).val()]=$(obj).val();
			});
			if(count(blocks)<2){
				
				xTicket.storage.activetab = "normal";
				xTicket.tickettab.click('normal',this,true);

				return false;
			}
			
			if(systemselectboxcalc==true)
			var t1 = $("#xticket-sistema").html(this.getsystemselectboxoptions(count(blocks)));
			
			if(count(blocks)>=2){$("#ticket-placebet").attr('disabled',false);}
			else {
				$("#ticket-placebet").attr('disabled',true);
				alert('სისტემისთვის აუცილებელია ლობის გარდა მინიმუმ 2 სხვადასხვა ბლოკის არსებობა!\nრომელიმე შედეგზე ლობი შეცვალეთ განასხვავებული ბლოკით!');
				return false;
			}
			
			var system_minus = $("#xticket-sistema").val();
			
			var ticket_variantebi = binomial(count(blocks),system_minus) ;
			
			//if(ticket_variantebi==1)ticket_variantebi=count(xTicket.storage.data.data);
			
			var ticket_bet = parseFloat(str_replace( [ "," ], [ "." ], $("#xticket-bet").val()));
			
			if($("#xticket-system-plusone").attr('checked'))ticket_variantebi++;
			
			var variant_bet = (ticket_bet/ticket_variantebi < 0.25) ? 0.25 : (ticket_bet/ticket_variantebi) ;
			
			//alert(variant_bet+" "+ticket_variantebi+" "+count(xTicket.storage.data.data))
			ticket_bet=variant_bet*ticket_variantebi;
			//alert(ticket_variantebi+" "+variant_bet+" "+ticket_bet)
			
			
			
			
			var tmp_xgame;
			var tmp_xtype;
			var tmp_val;
			var system_data = {};
			var statick_koef = 1;
			var lobs_koef = 1;
			var system_kombinations = {};
			$.each($(".ticket-table-row .system-selectbox"),function(i,obj){
				tmp_xgame = $(obj).attr('xgame');
				tmp_xtype = $(obj).attr('xtype');
				tmp_val = $(obj).val();
								
				if(!system_data[tmp_val])system_data[tmp_val]={};

				system_data[tmp_val][tmp_xgame+"_"+tmp_xtype]={
						xgame:tmp_xgame,
						xtype:tmp_xtype,
						block:tmp_val,
						koef: xTicket.storage.data.data[tmp_xgame+"_"+tmp_xtype]['koef']
						};
				
				if(tmp_val==-1){
					lobs_koef = lobs_koef*xTicket.storage.data.data[tmp_xgame+"_"+tmp_xtype]['koef'];	
				}
				statick_koef=statick_koef * xTicket.storage.data.data[tmp_xgame+"_"+tmp_xtype]['koef'];
								
				if(tmp_val!=-1){					
					if(!system_kombinations[tmp_val])system_kombinations[tmp_val]=1;
					system_kombinations[tmp_val]=system_kombinations[tmp_val]*xTicket.storage.data.data[tmp_xgame+"_"+tmp_xtype]['koef'];
				}
			});
			
			xTicket.systemData['plus1'] = $("#xticket-system-plusone").attr('checked') ? 1 : 0;
			xTicket.systemData['system_minus']=system_minus;
			xTicket.systemData['system_data']=system_data;
			
			
			if($("#xticket-system-plusone").attr('checked')){
				var plus_1=1;
				var plus_static = statick_koef*variant_bet;
			}
			else{
				var plus_1=0;
				var plus_static = 0;
			}

			var supp = doPerms(system_kombinations,system_minus,lobs_koef,variant_bet);
			supp = round( supp+plus_static , 2);
			
			$("#xticket-supp").val(supp);
			
			$("#xticket-bet").val( ticket_bet );
			
			$("#xticket-variantebi").val(ticket_variantebi);
			
		}
	},
	getsystemselectboxoptions : function(blocksnum){
		
		if(blocksnum===undefined)
		var gamesnum = count(xTicket.storage.data.data);
		else var gamesnum = blocksnum;
		var gamesnum2 = 1;
		var system_menu_options = '';
		while (gamesnum2 < gamesnum){
			system_menu_options += "<option value="+gamesnum2+">" + gamesnum + "-" + gamesnum2 + "</option>\n";
			gamesnum2++;
		}
		return system_menu_options;
	},
	tickettab : {
		click : function(name, obj, manual){
			var makechange = 0;
			if(xTicket.storage.data !== undefined && xTicket.storage.data.data !== undefined && count(xTicket.storage.data.data) >= 2){
				if(count(xTicket.storage.data.data) <= 15){
					makechange = 1;
					/*
					 * alert("ამორჩეულ თამაშებზე სისტემით ბილეთის დადება
					 * შეუძლებელია");
					 */
				}
				else{
					alert("სისტემით  ბილეთის  დადება შესაძლებელია  მაქსიმუმ 15 შედეგზე.\nდამატებითი ინფორმაციისათვის ეწვიეთ წესების განყოფილებას.");
				}
			}
			else{
				if(name == 'system'){
					alert("სისტემის გამოსაყენებლად აუცილებელია ბილეთში იყოს 2 შედეგზე მეტი");
				}
			}
			//if(manual === true){
			//	makechange = 1;
			//}
			
			if(makechange==1){
				if(name=='normal'){
					xTicket.storage.activetab='normal';
					if($("#ttab-normal").hasClass('opacity-50')){
						$("#ttab-normal").removeClass('opacity-50');
						
					}
					if(!$("#ttab-system").hasClass('opacity-50')){
						$("#ttab-system").addClass('opacity-50');
					}
					$("#ttab-normal").css('z-index',1);
					$("#ttab-normal").css('z-index',2);
					$(".ticket-system").css( {
						display : "none"
					});
					$("#xticket-supp").attr('disabled',false);
					$("#ticket-offer-normal").slideDown();
				}
				if(name=='system'){
					xTicket.storage.activetab='system';
					if(!$("#ttab-normal").hasClass('opacity-50')){
						$("#ttab-normal").addClass('opacity-50');
					}
					if($("#ttab-system").hasClass('opacity-50')){
						$("#ttab-system").removeClass('opacity-50');
					}
					$("#ttab-normal").css('z-index',2);
					$("#ttab-normal").css('z-index',1);
					$(".ticket-system").css( {
						display : ""
					});
					$("#xticket-supp").attr('disabled',true);
					$("#ticket-offer-normal").slideUp();
				}
			}
			
			if(manual === true){
				xTicket.calc2(false,true);
			}
			else xTicket.calc2();
			
			
			/*
			if(makechange === 1){
				xTicket.storage.activetab = name;
				if($(obj).hasClass('active-ticket-system')){

				}
				else{
					$('.ticket--tab').removeClass('active-ticket-system');
					$(obj).addClass('active-ticket-system');
				}
				if(xTicket.storage.activetab == 'normal'){
					$(".ticket-system").css( {
						display : "none"
					});
				}
				if(xTicket.storage.activetab == 'system'){
					$(".ticket-system").css( {
						display : ""
					});
				}
				xTicket.calc2();
			}
			*/
		}
	}

};

function updateOpenedGames(){

}
