﻿if(typeof casinoGames_map == "undefined") casinoGames_map = null;
if(typeof casinoGames_mapPath == "undefined") casinoGames_mapPath = CASINOSERVER + "games/flashGames/";
if(typeof casinoGames_width == "undefined") casinoGames_width = 800;
if(typeof casinoGames_height == "undefined") casinoGames_height = 535;
if(typeof casinoGames_TableSize == "undefined") casinoGames_TableSize = 1024;
if(typeof casinoGames_Color == "undefined") casinoGames_Color = "Green";
if(typeof casinoGames_resourceUrl == "undefined") casinoGames_resourceUrl = "/res/en/stringres/casinostrings.xml";
if(typeof casinoGames_LangCode == "undefined") casinoGames_LangCode = "en";
if(typeof casinoGames_imgPath == "undefined") casinoGames_imgPath = CASINOSERVER +"/res/";
if(typeof casinoGames_baseUrl == "undefined") casinoGames_baseUrl = CASINOSERVER;
if(typeof casinoGames_webServiceUrl == "undefined") casinoGames_webServiceUrl = CASINOSERVICE ;

function getObjByName(map, name) {
    for (var i = 0; i < map.length; i++) {
        if (map[i].name.toLowerCase() == name.toLowerCase()) {
            return map[i];
        }
    }
    throw new Error("Object '" + name + "' was not found in the map")
}
function getFlashVarsByName(obj, name, authToken, balance) {
    var flashvars = obj.flashvars;
    if (!!obj.authTokenVarName && !!authToken) flashvars[obj.authTokenVarName] = authToken;
    if (!!obj.balanceVarName && typeof balance != "undefined") flashvars[obj.balanceVarName] = balance;
    flashvars["playMode"] = casinoGames_PlayMode;
    flashvars["width"] = casinoGames_width;
    flashvars["UnvBal"] = balance;


    return flashvars;
}
function overrideDefault(obj, paramName, defaultObj) {
    for (var each in obj[paramName]) {
        defaultObj[each] = obj[paramName][each];
    }
    return defaultObj;
}
function urlWithoutVars(rawUrl){
    return rawUrl.split('#')[0].split('?')[0];
}
function getNameByUrl(map, url) {
    url = urlWithoutVars(url);
    var arr = url.split('/');
    if (arr.length < NAME_SEGMENT_INDEX_IN_URL) {
        return null;
    }
    var name = null;
    if (arr.length > NAME_SEGMENT_INDEX_IN_URL)
        name = findNameByUrlPart(map, arr[NAME_SEGMENT_INDEX_IN_URL]);
    else if (name == null && arr.length > (NAME_SEGMENT_INDEX_IN_URL-1))
        name = findNameByUrlPart(map, arr[NAME_SEGMENT_INDEX_IN_URL]);

    return name;
}

function findNameByUrlPart(map, url) {
    for (var i = 0; i < map.length; i++) {
        if (map[i].url.toLowerCase() == url.toLowerCase()) {
            return map[i].name;
        }
    }
    throw new Error("Object '" + url + "' was not found in the map")
}

function findPropertyByUrl(map, url, propertyName) {
    url = urlWithoutVars(url);
    var arr = url.split('/');
    if (arr.length < NAME_SEGMENT_INDEX_IN_URL) {
        return null;
    }
    for (var i = 0; i < map.length; i++) {
        if (map[i].url.toLowerCase() == arr[NAME_SEGMENT_INDEX_IN_URL].toLowerCase()) {
            return eval("map[i]." + propertyName);
        }
    }
    throw new Error("Object '" + url + "' and the property '" + propertyName + "' was not found in the map")
}

function getGameName() {
    var url = window.location.href;
    url = urlWithoutVars(url);
    var arr = url.split('/');
    if (arr.length < NAME_SEGMENT_INDEX_IN_URL) {
        return null;
    }
    return arr[NAME_SEGMENT_INDEX_IN_URL].toLowerCase();
}

function getGameTypeUrl() {
    var url = window.location.href;
    url = urlWithoutVars(url);
    var arr = url.split('/');
    if (arr.length < (NAME_SEGMENT_INDEX_IN_URL - 1)) {
        return null;
    }
    return arr[NAME_SEGMENT_INDEX_IN_URL - 1].toLowerCase();
}

function findFlashVarsPropertyByUrl(map, url, propertyName) {
    url = urlWithoutVars(url);
    var arr = url.split('/');
    if (arr.length < NAME_SEGMENT_INDEX_IN_URL) {
        return null;
    }

    for (var i = 0; i < map.length; i++) {
        if (map[i].url.toLowerCase() == arr[NAME_SEGMENT_INDEX_IN_URL].toLowerCase()) {
            if (map[i].flashvars[propertyName] != null) {
                return eval(map[i].flashvars[propertyName]);
            }
        }
    }
    throw new Error("Object findFlashVarsPropertyByUrl '" + propertyName + "' and the property '" + propertyName + "' was not found in the map")
}

function getMachineId() {
    return findFlashVarsPropertyByUrl(casinoGames_map, document.location.href, "machineID");
}

//--Scripts on the page---------------------------------
var objAttrbute = {
    id: "contents",
    name: "contents",
    width: "",
    height: ""
}
var objPara = { quality: "high", scale: "noscale", allowScriptAccess: "always "}//, allowScriptAccess: "sameDomain" };
//-------------------------------------------------------------------------------
function includeCasinoGame(authToken, balance, width, height, map, mapPath, state) {
    var name = (!state) ? getNameByUrl(map, document.location.href) : state.name;
    if (name == null) throw new Error("No name found for url:" + document.location.href);
    var obj = (!state) ? getObjByName(map, name) : state;
    if(!!obj.hasDemo || window.__ThrillX_LIU){
        var flashvars = getFlashVarsByName(obj, name, authToken, balance);
        var attributes = overrideDefault(
                obj, "attributes",
                objAttrbute);
        var params = overrideDefault(obj, "params", objPara);
        swfobject.embedSWF(mapPath + obj.swf, "flashcontent", width, height, "9.0.28", "expressInstall.swf", flashvars, params, attributes);
    }else{
        var container = document.getElementById("flashcontent");
        container.innerHTML = "<img src=\""+getScreenShotUrl()+"\" class=\""+casinoGames_ScreenshotCssClass+"\" />";
    }
}
//-------------------------------------------------------------------------------
function getScreenShotUrl(){
    var CPN = "{CURRENT_PAGE_NAME}", U4 = "{URL_SEGMENT_4}", U3 = "{URL_SEGMENT_3}", U2 = "{URL_SEGMENT_2}", U1 = "{URL_SEGMENT_1}";
    var s = casinoGames_ScreenshotUrl;
    if(s.indexOf("{") >= 0){
        if(s.indexOf(CPN) >= 0) s = s.split(CPN).join(casinoGames_CurrentPageName);
        var segments = document.location.href.split('?')[0].split('//').join('/').split('/').slice(2);
        if(segments.length >= 4 && s.indexOf(U4) >= 0) s = s.split(U4).join(segments[3]);
        if(segments.length >= 3 && s.indexOf(U3) >= 0) s = s.split(U3).join(segments[2]);
        if(segments.length >= 2 && s.indexOf(U2) >= 0) s = s.split(U2).join(segments[1]);
        if(segments.length >= 1 && s.indexOf(U1) >= 0) s = s.split(U1).join(segments[0]);
    }
    return s;
}
function OpenHistory(authToken, gameName, items, type, fromDate, toDate, lang) {
    var machineID = null;
    if(casinoGames_map == null){
        gameName = gameServiceCaller.name;
        lang = gameServiceCaller.language;
        machineID = gameServiceCaller.flashvars.machineID;
        authToken = casinoGames_authToken;
    }
    else{
        machineID = getMachineId();
    }
    window.open(CASINOHISTORY + 'GameHistoryPopUp.aspx?GameName=' + gameName +
                             '&language=' + lang +
                             '&GameID=' + machineID +
                             '&AuthToken=' + authToken,
    						'History', 'width=700,Height=500,scrollbars=1');
}
function InGameHelp(playMode, authToken, gameName, lang) {
    var gameType = getGameTypeUrl();
    var gameName = getGameName();
    
    if(typeof(window.GameServiceCaller_HelpOpener) == "function"){
        window.GameServiceCaller_HelpOpener(gameType, gameName);
    }else{
        var gameHelpDir = "/Includes/How-To-Play";
        window.open(gameHelpDir + '/' + gameType + '/' + gameName, 'Rules', 'width=560,Height=440,scrollbars=1,');
    }
}
function OpenCashier() {
    window.opener.navigate(CASHIERURL);
    this.close();
}
function keepSession() {
    document.getElementById("iframeInvisible").src = document.getElementById("iframeInvisible").src;
    //window.frames["iframeInvisible"].location.reload(true);
    setTimeout("keepSession()", 300000);
    return true;
}

function ExitGame() {
}
window.onUnload = function() {
    return false;
}
window.onClose = function() { };

window.onbeforeunload = "javascript:return false;";

function openFullScreen() { }
function GetData() {
    var url = CASINOSERVICE + "functions.asmx/SetCustomerLoggedMachine?Machine=" + getMachineId() + "&playMode=real&CurrentSession=" + sessionId + "&Token=" + authToken;
    sendAjaxRequest(url);    
}
function loadXMLDoc() {
    var url = CASINOSERVICE + "functions.asmx/CloseMe?auth=" + m_uid + "&Game=" + getMachineId();
    sendAjaxRequest(url);
}
function sendAjaxRequest(url) {
    try {
        var XMLb = new XMLHttpRequest();
        XMLb.open("GET", url, false);
        XMLb.send("");
    } catch (err) {
        try {
            var XMLa = new ActiveXObject("Microsoft.xmlhttp");
            XMLa.open("GET", url, false);
            XMLa.send();
        } catch (err) { }
    }
}
function SessionClose() {
    loadXMLDoc();
    GetData();
}
window.onbeforeUnload = function() { SessionClose(); };
