var GBL = {};
    GBL.AD_DIV = undefined;
    GBL.RIGHT_AD_DIV = undefined;


function init(){
    outputDebug("init called");

    document.getElementById("mainFrame").style.marginTop = "0px";
    document.getElementById("mainFrame").style.paddingTop = "0px";
    gadgets.window.adjustHeight(2250);

    //Google GA tracking.
    try{
        _uacct = "UA-4182330-7";
        urchinTracker();
    }catch(err){}

    //Fetch paramters to the view
    var l_params = gadgets.views.getParams();
    for(var l_id in l_params){
        outputDebug(l_id + " >>> " + l_params[l_id]);
    }

    //Determine install state
    try{
        var l_installState = l_params["installState"];
        switch(l_installState){
            case "0": constant.app_install_state = constant.APP_NOT_INSTALLED; break;
            case "1": constant.app_install_state = constant.APP_INSTALLED; break;
            case "2": constant.app_install_state = constant.APP_JUST_INSTALLED; break;

            default: constant.app_install_state = constant.APP_INSTALLED; break;
        }
    } catch(err){
        constant.app_install_state = constant.APP_INSTALLED;
    }
    outputDebug("App install state: " + constant.app_install_state);


    if(constant.app_install_state == constant.APP_NOT_INSTALLED){
        showNotInstalledMessage();
    } else {

        //Create top and right banner advertisement
//        try{
              // moved into function
//              showAdvertisement();

//            var l_topBannerFrame = document.getElementById("topBanner");
//            l_topBannerFrame.style.display = "block";
//            l_topBannerFrame.style.paddingLeft = "20px";
//            l_topBannerFrame.style.paddingBottom = "10px";

//            l_topBannerFrame.style.textAlign = "center";
//            l_topBannerFrame.innerHTML = "<a target='_blank' href='http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=109588&track=kissme_canvas_top'> <img style='border:none;' src='http://cdn0.pokerpartyapp.com/prod_poker/img/js/promotional/poker_banner.gif'/> </a>";

//            var l_adDiv = new STDAdvertisementDiv(l_topBannerFrame,    "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=113384&appParams=%7B%22rsrc%22%3A%22kissme_canvas_top%22%7D&track=kissme_canvas_top",
//                                                                        "sorority_canvas_top",
//                                                                        "http://cdn0.mobwarsapp.com/prod_sororitywars/sororitywars/images/sl_directory.gif",
//                                                                        "<span style='font-size:14px; font-weight:bold;'> Sorority Life </span><br/> Try a life of Style and Glamour to become the queen bee of MySpace!");

//            var l_adDiv = new STDAdvertisementDiv(l_topBannerFrame,    "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=104761&appParams=%7B%22rsrc%22%3A%22kissme_canvas_top%22%7D&track=kissme_canvas_top",
//                                                                        "green_canvas_top",
//                                                                        "http://cdn0.mobwarsapp.com/prod_green/images/promotional/64x64.png",
//                                                                        "<span style='font-size:14px; font-weight:bold;'> Green Garden </span><br/> Save the planet by keeping your green garden healthy!");

//            var l_adDiv = new STDAdvertisementDiv(l_topBannerFrame,    "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=109588&track=kissme_canvas_top",
//                                                                        "poker_canvas_top",
//                                                                        "http://cdn0.pokerpartyapp.com/prod_poker/img/js/promotional/Poker_Party_Myspace_64x64.jpg",
//                                                                        "<span style='font-size:14px; font-weight:bold;'> Poker Palace </span><br/> Play for FREE in the best poker game on MySpace! Fun & Easy!");

//            var l_adDiv = new STDAdvertisementDiv(l_topBannerFrame,    "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=104283&friendId=354470298&appParams=%7B%22rsrc%22%3A%22kissme_canvas_top%22%7D&track=kissme_canvas_top",
//                                                                        "mobsters_canvas_top",
//                                                                        "http://a365.ac-images.myspacecdn.com/images01/76/l_37742731b12fdf19953104d492547ca4.gif",
//                                                                        "<span style='font-size:14px; font-weight:bold;'> Mobsters </span><br/> Start a Mob with your friends. Rise from a petty thief to Mafia Don. Rule MySpace!");

//        } catch(err){}
        
        //Create loading image
        new CenteredTextMessageDiv(document.getElementById("mainFrame"), "<span style='font-weight:bold;'> Waiting for MySpace to respond... </span> <br/> <span style='font-size:10px;'> (Refreshing the page may help...) </span>", "300px");

        //Create central data (user/viewer data), then create the ui.
        MAIN_DATA = new CentralData(createUI);
    }
}

function showNotInstalledMessage() {
    //document.getElementById("mainFrame").innerHTML = "Please click on \"Add this application\" above.";
    var l_mainFrameDiv = document.getElementById("mainFrame");

    var l_arrowImg = document.createElement("img");
    l_mainFrameDiv.appendChild(l_arrowImg);
    l_arrowImg.src = "http://cdn0.supercomment.com/kissme/images/up_arrow2.gif";
    l_arrowImg.style.position = "absolute";
    l_arrowImg.style.top = "0px";
    l_arrowImg.style.left = "315px";
    l_arrowImg.style.zIndex = 0;

    var l_msgDiv = document.createElement("div");
    l_mainFrameDiv.appendChild(l_msgDiv);
    l_msgDiv.style.textAlign = "center";
    l_msgDiv.style.backgroundColor = "#FFFFFF";
    l_msgDiv.style.padding = "10px";
    l_msgDiv.style.fontSize = "18px";
    l_msgDiv.style.borderColor = "black";
    l_msgDiv.style.borderStyle = "solid";
    l_msgDiv.style.borderWidth = "4px";
    l_msgDiv.style.position = "absolute";
    l_msgDiv.style.top = "110px";
    l_msgDiv.style.left = "250px";
    l_msgDiv.style.zIndex = 0;
    l_msgDiv.innerHTML = "You must add this application to continue!";
    return false;
}

//////////////////////////////////////////////////////////////////
// for advertisement
function showAdvertisement(){
    var l_viewerinfo = new Array();
    try {
        var l_viewer = MAIN_DATA.getViewer();
        if(isValid(l_viewer)) {
            var l_uid = l_viewer.getUserId();
            var l_age = l_viewer.getAge();
            var l_gender = l_viewer.getGender();
            if(isValid(l_uid)) l_viewerinfo.push("uid="+l_uid);
            if(isValid(l_age)) l_viewerinfo.push("age="+l_age);
            if(isValid(l_gender) && l_gender.length>0) {
                l_gender = l_gender[0].toLowerCase();
                if(l_gender=='m' || l_gender=='f')
                    l_viewerinfo.push("gender="+l_gender);
            }
        }
    } catch(e) {}

    var l_viewerStr = l_viewerinfo.join("&");

    try{
        //Create top Banner
        var l_topBannerFrame = document.getElementById("topBanner");
        l_topBannerFrame.style.paddingLeft = "100px";
        l_topBannerFrame.style.paddingBottom = "10px";
        l_topBannerFrame.style.display = "block";
        l_topBannerFrame.innerHTML = "";

//        GBL.AD_DIV = new TopBannerDiv(l_topBannerFrame,
//                                        "dogtime_canvas_top",
//                                        "");





//        GBL.AD_DIV = new TopBannerDiv(l_topBannerFrame,
//                                          "zedo_canvas_top",
//                                          '<iframe src="http://d3.zedo.com/jsc/d3/ff2.html?n=850;c=2;s=2;d=14;w=728;h=90" frameborder=0 marginheight=0 marginwidth=0 scrolling="no" allowTransparency="true" width=728 height=90></iframe>');

        <!--  Rubicon Project tag -->
        <!--  Site: YouPlus   Zone: Kiss Me   Size: Leaderboard (728x90)  -->
        //GBL.AD_DIV = new TopBannerDiv(l_topBannerFrame,
        //                                  "zedo_canvas_top",
        //                                  '<IFRAME SRC="http://optimized-by.rubiconproject.com/a/6579/10999/17991-2.html?'+l_viewerStr+'" FRAMEBORDER="0" MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="NO" WIDTH="728" HEIGHT="90"></IFRAME>');
        <!-- end Rubicon Project tag -->

        <!-- start lifebites ad -->
        //GBL.AD_DIV = new TopBannerDiv(l_topBannerFrame,
        //                                  "lifebites_canvas_top",
        //                                  "<a target='_top' href='http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=133092&track=ni_kissme'><img src='http://cdn0.supercomment.com/kissme/images/uglybanner2.gif' style='border: 0;'></a>");
        <!-- end lifebites ad -->
        GBL.AD_DIV = new TopBannerDiv(l_topBannerFrame,
                                          "socialreach_canvas_top",
                                          "<div id=\"sr_5545_728x90\"></div>");

    } catch(err){}

    try{
        //Create right Banner
        <!-- begin ZEDO for channel: Kiss Me Wide Skyscraper , publisher: Kiss Me , Ad Dimension: Wide Skyscraper - 160 x 600 -->
        //                                      '<iframe src="http://d3.zedo.com/jsc/d3/ff2.html?n=850;c=4;s=2;d=7;w=160;h=600" frameborder=0 marginheight=0 marginwidth=0 scrolling="no" allowTransparency="true" width=160 height=600></iframe>');

        var l_rightBannerFrame = document.getElementById("rightBanner");
        if(isValid(l_rightBannerFrame)){
            <!--  Rubicon Project tag -->
            <!--  Site: YouPlus   Zone: Kiss Me   Size: Wide Skyscraper (160x600)  -->
            /*
            GBL.RIGHT_AD_DIV = new TopBannerDiv(l_rightBannerFrame,
                                              "zedo_canvas_right",
                                              '<IFRAME SRC="http://optimized-by.rubiconproject.com/a/6579/10999/17991-9.html?'+l_viewerStr+'" FRAMEBORDER="0" MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="NO" WIDTH="160" HEIGHT="600"></IFRAME>');
            */
            <!-- end Rubicon Project tag -->        

            // Social Reach ad tag
            GBL.RIGHT_AD_DIV = new TopBannerDiv(l_rightBannerFrame,
                                              "socialreach_canvas_right",
                                              '<div id="sr_5403_160x600"></div>');
            sr_gof();
        }
    } catch(err){}
}

function refreshAdvertisement(){
    try{
        if(!isValid(GBL.AD_DIV)){
            return;
        }

//        var l_viewer = MAIN_DATA.getViewer();
//        var l_urlSuffix = "uid="+l_viewer.getUserId()+
//                          "&first_name="+encodeURIComponent(l_viewer.getDisplayName())+
//                          "&last_name="+encodeURIComponent(l_viewer.getDisplayName())+
//                          "&birthday="+encodeURIComponent(l_viewer.getDateOfBirth())+
//                          "&age="+l_viewer.getAge()+
//                          "&gender="+encodeURIComponent(l_viewer.getGender());
//        var l_iframeURL = "<iframe src='http://ads.socialreach.com/impression?zone=2367&size=728x90&"+l_urlSuffix+"' frameborder='0' marginheight='0' marginwidth='0' scrolling='no' allowTransparency='true' width='728' height='90'></iframe>";
//        GBL.AD_DIV.setAdInnerHTML(l_iframeURL);
    } catch(err){}
}


function createUI(){
    showAdvertisement();

    var l_mainFrame = document.getElementById("mainFrame");
    l_mainFrame.innerHTML = "";

    var l_nameArray = new Array();
    l_nameArray.push("Kiss Friends");
    l_nameArray.push("My Kisses");

    var l_callbackArray = new Array();
    l_callbackArray.push(toInviteFriendsTab);
    l_callbackArray.push(toMyKissesTab);

    var l_alignArray = new Array();
    l_alignArray.push("left");
    l_alignArray.push("left");

    var l_defaultTabIndex = 0;

    new TabsDiv(l_mainFrame, l_nameArray, l_callbackArray, l_alignArray, l_defaultTabIndex, "unSelectedTab", "selectedTab", "tab");
    document.getElementById("rightTabs").innerHTML = "<div style='font:12px'><a href='http://cdn0.supercomment.com/kissme/privacy.htm' target='_blank'>Privacy</a>&#160;&#160;<a href='http://cdn0.supercomment.com/kissme/ToS.htm' target='_blank'>ToS</a></div>";

    // Add videoegg advertising unit
    var ve_publisher = "testPublisher";
    var ve_site = "myspace";
    var ve_area = "testArea";
    var ve_width =  160;
    var ve_height =  600;
    var ve_a = MAIN_DATA.getViewer().getAge();
    var ve_g = MAIN_DATA.getViewer().getGender();
    var ve_channel = "shopping";
    var ve_parentElement = "ad_videoegg";
    var ve_location = "below_dogtime";
    //document.getElementById("ad_videoegg").innerHTML="<script src='http://core.videoegg.com/eap/html/js/init.js?" + Math.random() + "'><\/script>";
    document.getElementsByTagName("head").innerHTML+="<script src='http://core.videoegg.com/eap/html/js/init.js?" + Math.random() + "'></script>";
    //document.write("<script src='http://core.videoegg.com/eap/html/js/init.js?" + Math.random() + "'><\/script>");
}


function toInviteFriendsTab(a_contentDiv){
    refreshAdvertisement();
    a_contentDiv.innerHTML = "";
    new KissMeInviteDiv(a_contentDiv);
}

function toMyKissesTab(a_contentDiv){
    refreshAdvertisement();
    a_contentDiv.innerHTML = "";
    new MyHugsDiv(a_contentDiv);
}

//DivButton stores a string inside and a call back function
//(executed after div is clicked)
function DivButton(a_parentDiv, a_buttongString, a_callback) {
    var m_parentDiv = a_parentDiv;
    var m_buttonDiv = undefined;
    var m_buttonString = a_buttongString;
    var m_callback = a_callback;

    //Getter function
    this.getButtonDiv = getButtonDiv;

    if (isValid(m_parentDiv)) {
        createDiv(m_parentDiv);
    }

    function createDiv(a_parentDiv) {
        m_parentDiv = a_parentDiv;

        m_buttonDiv = document.createElement("div");
        m_buttonDiv.innerHTML = m_buttonString;
        m_buttonDiv.style.backgroundColor = "#3b5998";
        m_buttonDiv.style.padding = "10px";
        m_buttonDiv.style.color = "white";
        m_buttonDiv.textAlign = "CENTER";
        m_buttonDiv.style.cursor = "pointer";

        m_buttonDiv.style.borderBottomStyle = "solid";
        m_buttonDiv.style.borderBottomWidth = "2px";
        m_buttonDiv.style.borderBottomColor = "#cccccc";

        m_buttonDiv.style.borderRightStyle = "solid";
        m_buttonDiv.style.borderRightWidth = "2px";
        m_buttonDiv.style.borderRightColor = "#cccccc";

        m_parentDiv.appendChild(m_buttonDiv);

        if(isValidFunction(a_callback)){
            addEvent(m_buttonDiv, "click", m_callback);
        }
    }

    function getButtonDiv(){
        return m_buttonDiv;
    }
}

/*
 * ADImageDiv stores a image as background inside a div and attach it
 * to the input parent div.
 */
function ADImageDiv(a_parentDiv, a_imageUrl, a_width, a_height, a_bgcolor){
    var m_parentDiv = a_parentDiv;
    var m_imageUrl = a_imageUrl;
    var m_width = a_width;
    var m_height = a_height;
    var m_bgcolor = a_bgcolor;

    var m_imageDiv = null;

    //Getter function
    this.getContainerDiv = getContainerDiv;

    if(isValid(m_parentDiv)){
        createDiv(m_parentDiv);
    }

    function createDiv(_a_parentDiv){
        m_parentDiv = _a_parentDiv;

        m_imageDiv = document.createElement("div");
        m_parentDiv.appendChild(m_imageDiv);

        m_imageDiv.style.backgroundImage = "url('"+m_imageUrl+"')";
        m_imageDiv.style.backgroundPosition = "center center";
        m_imageDiv.style.backgroundRepeat = "no-repeat";
        if(m_bgcolor == null)
            m_imageDiv.style.backgroundColor = "#EEEEEE";
        else
            m_imageDiv.style.backgroundColor = m_bgcolor;

        m_imageDiv.style.width = m_width;
        m_imageDiv.style.height = m_height;
    }

    function getContainerDiv(){
        return m_imageDiv;
    }
}


function TopBannerDiv(a_parentDiv, a_abtest, a_ad) {
    var m_parentDiv = a_parentDiv;
    var m_ad = a_ad;
    var m_abtest = a_abtest;
    var m_adDiv = undefined;

    this.setAdInnerHTML = setAdInnerHTML;

    if (m_parentDiv != undefined) {
        createDiv(m_parentDiv);
    }

    function createDiv(_parentDiv){
        m_parentDiv = _parentDiv;
        m_adDiv = document.createElement("div");
        m_parentDiv.appendChild(m_adDiv);
        m_adDiv.innerHTML = a_ad;

//        addEvent(m_adDiv, "click", function() {
//            abTest(MAIN_DATA.getViewer().getUserId(), m_abtest);
//        });
    }

    function setAdInnerHTML(a_html){
        m_adDiv.innerHTML = a_html;
    }
}


function STDAdvertisementDiv(a_parentDiv, a_linkTarget, a_abtest, a_directoryImage, a_directoryText){
    var m_parentDiv = a_parentDiv;
    var m_linkTarget = a_linkTarget;
    var m_abtest = a_abtest;
    var m_directoryImage = a_directoryImage;
    var m_directoryText = a_directoryText;
    var m_containerDiv = undefined;

    if(isValid(m_parentDiv)){
        createDiv(m_parentDiv);
    }

    //Getter function
    this.getContainerDiv = getContainerDiv;

    function createDiv(_parentDiv){
        m_parentDiv = _parentDiv;

        m_containerDiv = document.createElement("div");
        m_parentDiv.appendChild(m_containerDiv);
        m_containerDiv.style.marginLeft = "auto";
        m_containerDiv.style.marginRight = "auto";
        m_containerDiv.style.padding = "0px";
        m_containerDiv.style.border = "solid 1px #3b5998";
        m_containerDiv.style.cursor = "pointer";

        //When the container is clicked, open the input link.
        addEvent(m_containerDiv, "click", function(){
            window.open(m_linkTarget);
        });

        var l_contentTable = document.createElement("table");
        m_containerDiv.appendChild(l_contentTable);
        var l_contentTBody = document.createElement("tbody");
        l_contentTable.appendChild(l_contentTBody);
        var l_contentTr = document.createElement("tr");
        l_contentTBody.appendChild(l_contentTr);

        var l_imgTd = document.createElement("td");
        l_contentTr.appendChild(l_imgTd);
        l_imgTd.style.verticalAlign = "middle";
        l_imgTd.style.paddingLeft = "10px";
        new ADImageDiv(l_imgTd, m_directoryImage, "64px", "64px");


        var l_contentTd = document.createElement("td");
        l_contentTr.appendChild(l_contentTd);
        l_contentTd.style.verticalAlign = "middle";
        l_contentTd.style.paddingLeft = "30px";
        l_contentTd.style.paddingRight = "30px";
        l_contentTd.innerHTML = m_directoryText;


        var l_continueTd = document.createElement("td");
        l_contentTr.appendChild(l_continueTd);
        l_continueTd.style.verticalAlign = "middle";
        var l_button = new DivButton(l_continueTd, "Play Now!");
        l_button.getButtonDiv().style.backgroundColor = "green";
    }

    function getContainerDiv(){
        return m_containerDiv;
    }
}