/**
 * global variables
 *
 * flyermojo_partner_no
 * flyermojo_ad_width
 * flyermojo_container - with leading '#' sign
 * flyermojo_refresh_interval - in seconds
 * flyermojo_try_load_jquery - 1 or 0
 * flyermojo_load_jquery_anyway - 1 or 0
 */

function AdFlyer(){

    var partner;
    var width;
    var container;
    var refreshInterval;
    var intervalRes;

    // cached jquery objects
    var $container = null;
    var $flyerImg = null;
    var $flyerLink = null;

    function init(){
        if(typeof flyermojo_partner_no == 'undefined') partner = '';
        else partner = flyermojo_partner_no;

        if(typeof flyermojo_ad_width == 'undefined') width = 200;
        else width = flyermojo_ad_width;

        if(typeof flyermojo_container == 'undefined') container = '#fm-container';
        else container = flyermojo_container;

        if(typeof flyermojo_refresh_interval == 'undefined') refreshInterval = 0;
        else refreshInterval = flyermojo_refresh_interval;

        if(typeof flyermojo_try_load_jquery == 'undefined') tryLoadJQuery = 1;
        else tryLoadJQuery = flyermojo_try_load_jquery;

        if(typeof flyermojo_load_jquery_anyway == 'undefined') loadJQueryAnyway = 0;
        else loadJQueryAnyway = flyermojo_load_jquery_anyway;

        clearInterval(intervalRes);

        if ((tryLoadJQuery == 1) || (loadJQueryAnyway == 1)){
            load_jQuery();
        }
        else{ // prevent double calling of start() function
            start();
        }
    }

    function load_jQuery(){
        if ((typeof jQuery == 'undefined') || (loadJQueryAnyway == 1)) {
            var headID = document.getElementsByTagName("head")[0];
            var newScript = document.createElement('script');
            newScript.type = 'text/javascript';
            newScript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js';
            headID.appendChild(newScript);
            newScript.onload = start; // or wait several seconds
        }
        else{
            start();
        }
    }

    function start(){
        try{
            $container = $(container);
            if($container.length == 0){
                log(container+' not found');
                log($().jquery);
            }

            if(refreshInterval == 0)
                requestNewFlyer();
            else{
                requestNewFlyer();
                intervalRes = setInterval(requestNewFlyer, refreshInterval * 1000);
            }
        }
        catch(e){}
    }

    function requestNewFlyer(){
        $.getJSON(
            'http://www.flyermojo.com/ajax/adflyer?callback=?',
            {
                partner: partner,
                width: width
            }

            , processFlyerData);
    }

    function processFlyerData(data){
        if(data.length == 0) return;

        if($flyerLink == null)
            $flyerLink = $('<a>').appendTo($container);
            
        var partnerNubmerParts = partner.split("-");
        //!XXX: poissible feature - add encrypted partner code to this link
        $flyerLink.attr({
            href: data.flyerLink + '/partnerId/' + partnerNubmerParts[1],
            target: '_blank'
        });

        if($flyerImg == null)
            $flyerImg = $('<img>').appendTo($flyerLink);

        //!XXX: possible feature - add preload function
        //!XXX: possible feature - check if image loaded
        
        $flyerImg.attr({
            src: data.flyerImg,
            width: width,
            title: data.flyerTitle,
            style: 'border:0px;'
        });
    }

    function log(msg){
        if(typeof console != 'undefined')
            console.log(msg);
    }

    init();

    return {
        init : init
    }
}

function flyermojo_ad_start(){
    if(typeof window.ADFLYER != 'undefined') return;
    window.ADFLYER = new AdFlyer();
}

if (typeof jQuery == 'undefined') {
    if(document.addEventListener){
        document.addEventListener('load', flyermojo_ad_start, true);
    }
    else if (document.attachEvent){
        document.attachEvent('onload', flyermojo_ad_start);
    }
}
else{
    $(document).ready(flyermojo_ad_start);
}
