
var selectedId = "11";
var selectedFoodId = "1";
var selectedGearId = "0";
var selectedUrl;
var currentBabyName = "";

var currentScore = 0;
var TOYS_COUNT = 5;
var TOY_COST = 599;

// scroller
var sspeed = 2;
var spause = 3000;
var foodBelt = "";
var sizeup = 0;
var scrldiv1;
var scrldiv2;

var products = new Array({"name":"cake","yf":"11"},{"name":"icecream","yf":"14"},{"name":"banana","yf":"9"},{"name":"apple","yf":"9"},{"name":"egg","yf":"6"},{"name":"yogurt","yf":"8"},{"name":"maize","yf":"10"},{"name":"orange","yf":"9"});
var toys = new Array("cat", "toy doll", "barbie", "puppet", "bunny");
var words = new Array({"w":" ... hey "},{"w":" ... thanks "},{"w":" ... thanks "},{"w":" ... cool "},{"w":" ... I like "});

var platformId = "1";
var appId = "85538753548";

var isAdoptAuth = 0;

function adoptGirl()
{
    // get data from form
    var data1 = "1";
    var data2 = "1";
    
    for (var i = 0; i < 2; i++) 
    {
        if (document.form1.rdSkin[i].checked)
        {
            data1 = document.form1.rdSkin[i].value + "";
            break;
        }
    }
    
    for (var i = 0; i < 4; i++) 
    {
        if (document.form1.rdCostume[i].checked)
        {
            data2 = document.form1.rdCostume[i].value + "";
            break;
        }
    }
    
    selectedId = data1 + data2;
    
    if (currentUserId == null)
    {
        isAdoptAuth = 1;
        FB.Connect.requireSession(null, cancelAdoptAuth);
    }
    else
    {
        // 
        var url = "http://www.litgirl.com/adoptgirlmanager.aspx";
        var vars = "platformid=" + platformId + "&appid=" + appId + "&userid=" + currentUserId + "&girlid=" + selectedId;
        postData(url, vars, handleAdoptGirl);
    }
}

function cancelAdoptAuth()
{
    isAdoptAuth = 0;
}
    
function feedGirl(selId) 
{
    selectedFoodId = selId;
    
    // 
    var today = new Date();
    var feedTime = today.getTime() + "";
    
    var url = "http://www.litgirl.com/feedgirlmanager.aspx";
    var vars = "platformid=" + platformId + "&appid=" + appId + "&userid=" + currentUserId + "&foodid=" + selId + "&feedtime=" + feedTime;
    postData(url, vars, handleFeedGirl);
}
    
function buyGear(selId) 
{
    selectedGearId = selId;
    
    // 
    var url = "http://www.litgirl.com/buygearmanager.aspx";
    var vars = "platformid=" + platformId + "&appid=" + appId + "&userid=" + currentUserId + "&toyid=" + selId;
    postData(url, vars, handleBuyGear);
}
    
function handleAdoptGirl(response) 
{
    // 
    var firstPage = $("firstPage");
    var secondPage = $("secondPage");

    firstPage.style.display = "none";
    secondPage.style.display = "";

    // 
    selectedUrl = "http://images.x2line.com/apps/littlegirlmagic/canvas/girl" + selectedId + ".gif";
    $("selImage").innerHTML = "<img src='" + selectedUrl + "' border='0' />";
        
    var girlId = parseInt(selectedId);
    if (currentGirlName.length == 0)
    {
        currentGirlName = "Alicia";
    }
    
    // publish to stream
    // attachment
    var attachment = {};
    var media = new Array();
    var media1 = {};
    media1["type"] = "image";
    media1["src"] = "http://images.x2line.com/apps/littlegirlmagic/feed90/default/girl" + selectedId + ".png";
    media1["href"] = appExternalUrl;
    
    media[0] = media1;
    
    attachment["name"] = "Little Girl Magic";
    attachment["href"] = appExternalUrl;
    attachment["caption"] = "{*actor*} adopted " + currentGirlName + " (7-year-old)";
    attachment["description"] = "source: Little Girl Magic";
    attachment["media"] = media;
    
    // actionlinks
    var actionLinks = new Array();
    var actionLink1 = {};
    actionLink1["text"] = "Go to Little Girl Magic";
    actionLink1["href"] = appExternalUrl;
    actionLinks[0] = actionLink1;
    
    if ($("chkShare").checked)
    {
        FB.Connect.streamPublish("", attachment, actionLinks, null, null, publishCallbackNone);
    }
    else
    {
        publishCallbackNone();
    }
    
    // 
    setFBML(currentUserId, selectedId, "http://images.x2line.com/apps/littlegirlmagic/preview/girl", selectedGearId);
}

function publishCallbackNone()
{
    // do nothing
}
    
function handleFeedGirl(response) 
{
    displayMessage("Success! Now not hungry - " + Date() + ".");

    //
    // +++++
    // keys in the value pairs
    var girlId = parseInt(selectedId);
    var foodId = parseInt(selectedFoodId);
    
    // publish to stream
    // attachment
    var attachment = {};
    var media = new Array();
    var media1 = {};
    media1["type"] = "image";
    media1["src"] = "http://images.x2line.com/apps/littlegirlmagic/feed90/eating/food" + selectedFoodId + ".png";
    media1["href"] = appExternalUrl;
    
    var media2 = {};
    media2["type"] = "image";
    media2["src"] = "http://images.x2line.com/apps/littlegirlmagic/feed90/default/girl" + selectedId + ".png";
    media2["href"] = appExternalUrl;
    
    media[0] = media1;
    media[1] = media2;
    
    attachment["name"] = "Little Girl Magic - food";
    attachment["href"] = appExternalUrl;
    attachment["caption"] = "{*actor*} gave " + products[foodId - 1].name + " (yummy-factor: " + products[foodId - 1].yf + ") for " + currentGirlName;
    attachment["description"] = "source: Little Girl Magic";
    attachment["media"] = media;
    
    // actionlinks
    var actionLinks = new Array();
    var actionLink1 = {};
    actionLink1["text"] = "Go to Little Girl Magic";
    actionLink1["href"] = appExternalUrl;
    actionLinks[0] = actionLink1;
    
    if ($("chkShare").checked)
    {
        FB.Connect.streamPublish("", attachment, actionLinks, null, null, publishCallback);
    }
    else
    {
        publishCallback();
    }
}
   
function handleBuyGear(response) 
{
    displayMessage("Success! The toy should appear on your page shortly.");
    currentScore = currentScore - TOY_COST;
    
    drawToy(1);
    
    var girlId = parseInt(selectedId);
    var toyId = parseInt(selectedGearId);
    
    // publish to stream
    // attachment
    var attachment = {};
    var media = new Array();
    var media1 = {};
    media1["type"] = "image";
    media1["src"] = "http://images.x2line.com/apps/littlegirlmagic/feed90/toys/toy" + selectedGearId + ".png";
    media1["href"] = appExternalUrl;
    
    var media2 = {};
    media2["type"] = "image";
    media2["src"] = "http://images.x2line.com/apps/littlegirlmagic/feed90/default/girl" + selectedId + ".png";
    media2["href"] = appExternalUrl;
    
    media[0] = media1;
    media[1] = media2;
    
    attachment["name"] = "Little Girl Magic - toys";
    attachment["href"] = appExternalUrl;
    attachment["caption"] = "{*actor*} purchased " + toys[toyId - 1] + " for " + currentGirlName;
    attachment["description"] = "source: Little Girl Magic";
    attachment["media"] = media;
    
    // actionlinks
    var actionLinks = new Array();
    var actionLink1 = {};
    actionLink1["text"] = "Go to Little Girl Magic";
    actionLink1["href"] = appExternalUrl;
    actionLinks[0] = actionLink1;
    
    if ($("chkShare").checked)
    {
        FB.Connect.streamPublish("", attachment, actionLinks, null, null, publishCallback);
    }
    else
    {
        publishCallback();
    }
    
    // 
    setFBML(currentUserId, selectedId, "http://images.x2line.com/apps/littlegirlmagic/preview/girl", selectedGearId);
}

function publishCallback()
{
    showTooltip("1");
    setTimeout("hideTooltip()", 5000);     
}

// app. entry point
function loadUser() 
{
    // 
    var url = "http://www.litgirl.com/getusermanager.aspx?platformid=" + platformId + "&appid=" + appId + "&userid=" + currentUserId;
    getData(url, handleLoadUser);
}

function loadPreference(prefId) 
{
    // 
    var url = "http://www.litgirl.com/userpreference.aspx?platformid=" + platformId + "&appid=" + appId + "&userid=" + currentUserId + "&prefid=" + prefId + "&method=get";
    getData(url, handleLoadPreference);
}
             
function handleLoadUser(response)
{
    if (response == "0:0:0:0:0:0")
    {
        alert("No girl adopted yet...");
    }
    else
    {
        // ++++++++++++++++++++
        var arrData = response.split(":");
        var girlIdParam = arrData[0];
        var foodIdParam = arrData[1];
        var feedTimeParam = arrData[2];
        var scoreParam = arrData[3];
        var toyIdParam = arrData[4];
                
        //
        // consts
        var MAX_POWER_NOT_HUNGRY = 30;
        var MAX_POWER_HUNGRY = 6;
        var MAX_POWER_MAD = -138;
        var MAX_POWER_ABOUT_TO_DIE = -690;
        var BONUS_POWER_TOY = 14;
        
        selectedGearId = toyIdParam;
        
        //
        // render feedsection
        var smlType = "2";
        var contntFood = "";
        if (girlIdParam != "0")
        {
            selectedId = girlIdParam;
            
            // currentScore
            currentScore = 3;
            if (scoreParam != "0")
            {
                currentScore = parseInt(scoreParam);
            }
        
            //
            var girlId = parseInt(girlIdParam);
            currentGirlName = "Alicia";
            
            contntFood += "<hr />";
            contntFood += "<div style='text-align:center;'><h2>Feeding Section (with shop)</h2></div><br />";
            contntFood += "<table><tr>";

            // 
            var girlUrl = "http://images.x2line.com/apps/littlegirlmagic/canvas/girl" + girlIdParam + ".gif";

            //
            // toys
            contntFood += "<td style='width:160px;' valign='bottom'><div id='toyDiv' class='itemDiv'></div></td>";
            contntFood += "<td valign='bottom' align='left'><div style='height:20px;line-height:20px;'><b><span id='gName'></span></b></div>";
        
            
            // ++++++++++++
            // feed section
            var mood;
            if ((foodIdParam != "0") && (feedTimeParam != "0"))
            {
                var foodId = parseInt(foodIdParam);
                var feedTime = parseInt(feedTimeParam);
            
                var foodAge = getAge(feedTime, "hour");
                var power = MAX_POWER_NOT_HUNGRY - foodAge;
                if (toyIdParam != "0")
                {
                    power = power + BONUS_POWER_TOY;
                }
            
                var foodUrl = "http://images.x2line.com/apps/food2/food" + foodIdParam + "a.gif";
                
                mood = "happy";
                smlType = "1";
                if (power < MAX_POWER_HUNGRY)
                {
                    foodUrl = "http://images.x2line.com/apps/food2/food" + foodIdParam + "b.gif";
                    
                    mood = "hungry";
                    smlType = "3";
                    if ((power < MAX_POWER_MAD) && (power > MAX_POWER_ABOUT_TO_DIE))
                    {
                        mood = "mad";
                        smlType = "2";
                    }
                    if (power < MAX_POWER_ABOUT_TO_DIE)
                    {
                        mood = "about to die";
                        smlType = "2";
                    }
                }
 
                contntFood += "<div>mood: " + mood + "<br />power: " + power  + "<br /><br />score: " + currentScore + " girl points</div>";
                contntFood += "<div><img src='" + foodUrl + "' width='120' height='145' border='0' /></div></td>";
            }
            else
            {
                mood = "hungry";
                contntFood += "<div><div style='float:left;'>mood: " + mood + "<br />power: 0</div></div>";
                contntFood += "<div>&nbsp;</div></td>";
            }
            
            contntFood += "<td valign='bottom'><img src='" + girlUrl + "' width='250' height='340' border='0' /></td>";
            contntFood += "</tr></table><br />";
            
            contntFood += "<table align='center' cellpadding='2' cellspacing='0' border='0'><tr><td style='width:650px;'>";
            contntFood += "<div style='position:relative;overflow:hidden;width:650px;height:230px;clip:rect(0 650px 230px 0);' onmouseover='sspeed=0;' onmouseout='sspeed=2;'>";
            contntFood += "<div id='scrldiv1' style='position:absolute;height:230px;padding:1px;'></div>";
            contntFood += "<div id='scrldiv2' style='position:absolute;height:230px;padding:1px;'></div>";
            contntFood += "</div>";
            contntFood += "</td></tr></table><br />";

            //
            // food belt
            buildFoodBelt(girlIdParam);
        }

        $('feedSection').innerHTML = contntFood;

        if (girlIdParam != "0")
        {
            loadPreference(1);

            startScroll();
            drawToy(1);
            
            
            try
            {
                showTooltip(smlType);
                setTimeout("hideTooltip()", 5000);
            }
            catch(ex) { }
        }
    }
}

function handleLoadPreference(response)
{
    if (response != "0")
    {
        currentGirlName = response;
    }
    
    $("gName").innerHTML = currentGirlName;
}

function buildFoodBelt(girlIdParam)
{
    foodBelt = "<table border='1' class='tbl1' cellpadding='0' cellspacing='0'>";
    foodBelt += "<tr>";
    for (var i = 1; i < 9; i++)
    {
        var imgx = new Image();
        imgx.src = "http://images.x2line.com/apps/food2/food" + i + "a.gif";

        foodBelt += "<td class='td1' align='center'>";
        foodBelt += "<i>25 points</i><br /><small>";
        foodBelt +=  products[i - 1].name + "<br />yummy-factor: ";
        foodBelt +=  products[i - 1].yf + "</small><br />";
        foodBelt += "<img src='" + imgx.src + "' width='120' height='145' />";
        
        if (girlIdParam != "0")
        {
            foodBelt += "<br /><a href='#' title='Feed girl!' onclick='feedGirl(" + i + ");return false;'>Feed girl!</a></td>";
        }
        else
        {
            foodBelt += "<br /><span style='color:red;font-style:italic;'>Locked</span></td>";
        }
    }                      
    foodBelt += "</tr></table>";
}

function startScroll()
{
    scrldiv1 = $("scrldiv1");
    scrldiv2 = $("scrldiv2");

    scrldiv1.style.left = "0px";
    scrldiv2.style.left = "1045px";

    scrldiv1.innerHTML = foodBelt;
    scrldiv2.innerHTML = foodBelt;
    sizeup = scrldiv1.offsetWidth;

    setTimeout("doScroll()", spause);
}

function doScroll()
{
    if (parseInt(scrldiv1.style.left) > 0 && parseInt(scrldiv1.style.left) <= sspeed)
    {
        scrldiv1.style.left = "0px";
        scrldiv2.style.left = "1045px";
        setTimeout("doScroll()", spause);
    }
    else if (parseInt(scrldiv1.style.left) >= sizeup * -1)
    {
        scrldiv1.style.left = parseInt(scrldiv1.style.left) - sspeed + "px";
        scrldiv2.style.left = parseInt(scrldiv2.style.left) - sspeed + "px";
        setTimeout("doScroll()", 100);
    }
    else
    {
        scrldiv1.style.left = "0px";
        scrldiv2.style.left = "1045px";

        sizeup = scrldiv1.offsetWidth;

        setTimeout("doScroll()", spause);
    }
}
    
function getAge(t, unit)
{
    var oneDay = 60 * 1000 * 60 * 24;
    var oneHour = 60 * 1000 * 60;
    
    var today = new Date();
    var diff = today.getTime() - t;
    
    if (unit == "hour")
    {
        diff = Math.floor(diff/oneHour);
    }
    else
    {
        diff = Math.floor(diff/oneDay);
    }
    
    return diff;
}

function drawToy(displayedToyId)
{
    var toyContents = "";
    
    if (selectedGearId != "0")
    {
        var toyUrl = "http://images.x2line.com/apps/toys2/canvas/toy" + selectedGearId + ".gif";
        toyContents += "<img src='" + toyUrl + "' width='130' height='145' />";
        
        if ($("toyDiv"))
        {
            $("toyDiv").className = "itemDivNoBorder";
        }
    }
    else
    {
        var nextToyId = parseInt(displayedToyId) + 1;
        if (nextToyId > TOYS_COUNT)
        {
            nextToyId = 1;
        }
        

        var toyUrl = "http://images.x2line.com/apps/toys2/canvas/toy" + displayedToyId + ".gif";
        
        toyContents += "<a href='#' title='Next toy' onclick='drawToy(" + nextToyId + ");return false;'>Next toy >></a><br />";
        toyContents += "<i>cost: " + TOY_COST + " points</i><br />";
        toyContents += "<img src='" + toyUrl + "' width='130' height='145' />";
            
        if (currentScore > TOY_COST)
        {
            toyContents += "<br /><a href='#' title='Buy!' onclick='buyGear(" + displayedToyId + ");return false;'>Buy!</a>";
        }
        else
        {
            toyContents += "<br /><span style='color:red;font-style:italic;'>Locked</span>";
        }
    }
    
    if ($("toyDiv"))
    {
        $("toyDiv").innerHTML = toyContents;
    }
}
    
function displayMessage(mess)
{
    var rsltDiv = $("rslt");
    rsltDiv.style.backgroundColor = '#ffff99';
    rsltDiv.style.border = '#ee0000 1px solid';
    rsltDiv.innerHTML = mess;
}
    
function postData(url, vars, callbackFunction)
{
    var oXmlHttp = GetXmlHttp();
    oXmlHttp.open("POST", url, true);
    oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    oXmlHttp.setRequestHeader("Content-Length", vars.length);
    oXmlHttp.setRequestHeader("Connection", "close");
    
    oXmlHttp.onreadystatechange = function()
    {
        if ((oXmlHttp.readyState == 4) && (oXmlHttp.status == 200))
        {
            if (oXmlHttp.responseText)
            {
                eval(callbackFunction(oXmlHttp.responseText));
            }
        }
    };
    
    oXmlHttp.send(vars);
}

function getData(url, callbackFunction)
{
    var oXmlHttp = GetXmlHttp();
    oXmlHttp.open("GET", url, true);
    oXmlHttp.onreadystatechange = function()
    {
        if ((oXmlHttp.readyState == 4) && (oXmlHttp.status == 200))
        {
            if (oXmlHttp.responseText)
            {
                eval(callbackFunction(oXmlHttp.responseText));
            }
        }
    };
    
    oXmlHttp.send(null);
}

// Create and return XmlHttp object
function GetXmlHttp()
{
    var oXmlHttp = null;

    if (window.XMLHttpRequest)
    {
        oXmlHttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    return oXmlHttp;
}

// tooltip
function showTooltip(type)
{
    var tooltip,b,s,l;
    
    var img;
    img = CreateEl("img","top",false);
    img.src = "http://generic.x2line.com/images/smiles/s18-" + type + ".gif";

    var ind = Math.floor((5 - 0) * Math.random()) + 1;
    var txt = words[ind - 1].w;
    
    
    tooltip = CreateEl("span","tooltip",true);
    s = CreateEl("span","top",true);
    s.appendChild(document.createTextNode(txt));
    s.appendChild(img);
    tooltip.appendChild(s);

    b = CreateEl("b","bottom",true);
    l = "";
    b.appendChild(document.createTextNode(l));
    tooltip.appendChild(b);

    $("btc").appendChild(tooltip);
}

function hideTooltip()
{
    var d = $("btc");
    if (d.childNodes.length > 0) d.removeChild(d.firstChild);
}

function CreateEl(t,c,toBlock)
{
    var x = document.createElement(t);
    x.className = c;
    if (toBlock)
    {
        x.style.display = "block";
    }
    return(x);
}

// select friends to invite
function showInviteFriendsDialog()
{
    var api = FB.Facebook.apiClient;   
    api.fql_query("SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=" + currentUserId + ") and is_app_user=1", function(result, ex) {   
  
        var str = "";
        for (var i = 0; i < result.length; i++)   
        {   
            str += result[i].uid + ",";
        }

        var excludeIds = '';
        if (str.length > 0)
        {
            str = str.substring(0, str.length - 1);
            excludeIds = 'exclude_ids="' + str + '"';
        }

        //
        // produce to selector   
        var actn = location.href;

        var the_fbml = '<fb:fbml><fb:request-form action="' + actn + '" method="POST" invite="true" type="Little Girl Magic" content=""><fb:fbml-attribute name="content"><fb:intl>Come be friends with me on Little Girl Magic &lt;fb:req-choice url=&quot;' + appExternalUrl + '&quot; label=&quot;Confirm&quot; /&gt;</fb:intl></fb:fbml-attribute>  \
                <fb:multi-friend-selector rows="3" cols="4" max="60" showborder="true" email_invite="false" ' + excludeIds + ' bypass="cancel" actiontext="Invite Your Facebook Friends">  \
            </fb:request-form></fb:fbml>';
        var dlg = new FB.UI.FBMLPopupDialog('Invite Friends', the_fbml);
        dlg.setContentWidth(625);
        dlg.setContentHeight(400);
        dlg.set_placement(FB.UI.PopupPlacement.topCenter);
        dlg.show();  
    });
}

function setFBML(usrId, girlId, imgUrlPrefix, toyId)
{
    var imgMainUrl = imgUrlPrefix + girlId + ".gif";
    var imgBoxesUrl = imgMainUrl.replace("preview","canvas");

    // main
    var profileMainMarkup = "<fb:title>Little Girl Magic</fb:title><center><img src='" + imgMainUrl + "' /><br /><br /><a href='http://apps.facebook.com/littlegirlmagic/' target='_top' class='inputbutton'>Go to Little Girl Magic</a></center>";
    
    // boxes
    var profileBoxesMarkup = "<fb:title>Little Girl Magic</fb:title><br />";
    profileBoxesMarkup += "<div>";
    profileBoxesMarkup += "<div style='float:left;'>";
    if ((toyId != null) && (toyId != "0"))
    {
        var toyUrl = "http://images.x2line.com/apps/toys2/canvas/toy" + toyId + ".gif";
        profileBoxesMarkup = "<img src='" + toyUrl + "' />";
    }
    profileBoxesMarkup += "</div>";
    
    profileBoxesMarkup += "<div style='float:right;'>";    
    profileBoxesMarkup += "<img src='" + imgBoxesUrl + "' /><br />";
    profileBoxesMarkup += "</div>";
    profileBoxesMarkup += "</div>";
    
    profileBoxesMarkup += "<hr style='clear:both;'><br />";
    profileBoxesMarkup += "<div style='text-align:center;'><a href='http://apps.facebook.com/littlegirlmagic/' target='_top' class='inputbutton'>Go to Little Girl Magic</a></div>";
    
    
    FB.Facebook.apiClient.profile_setFBML(usrId, profileBoxesMarkup, null, null, profileMainMarkup, function() {  });
}

function $(id)
{
    return document.getElementById(id);
}
