function google_afd_ad_request_done(response) {

    var flag = '';
    if (response.error_code) {
        flag = 'error';
    }
    else if (response.faillisted == 'true') {
        flag = 'faillisted';
    }
    else if (response.adult == 'true') {
        flag = 'adult';
    }
    //else if (!response.ads || response.ads.length == 0) {
    //    flag = 'noads';
    //}

    if(flag != '') {
        location.href = '/redirect.php?flag=' + Base64.encode(flag);
        return;
    }

    if (ad_config.source == 6) {
        ad_config.search_token = response.search_token;
        ad_config.token = response.token;
    }

    // Generate markup
    var ads = '';
    for (var i=0; i< response.ads.length; i++) {
        ads += render_ad_fragment( response.ads[i] );
    }

    // Store markup and response object
    ad_config.markup = ads;
 
    if (ad_config.feed_test) {
        ad_config.response = response;
    }


    if (ad_config.use_google_keywords == 1) {
        ad_config.keywords = response.link_units;
    }

    // If onready callback already fired, render the ads now
    if (ad_config.render_now) {
        show_ads();
        if (ad_config.source == 6) {
            if (ad_config.use_google_keywords == 1) {
                replace_keywords(ad_config.keywords);
            }
            else {
                append_tokens();
            }
        }
    }

    return;
}

function show_ads() {
    if (document.getElementById('listings') != null) {
        document.getElementById('listings').innerHTML = ad_config.markup;
    }
}

function append_tokens() {
    // handle the anchor nodes
    var anchors         = document.getElementsByTagName('a');
    var match_regex     = '/^search\.php/';

    for (var i=0; i < anchors.length; i++) {
        if (anchors[i].href.match('search\.php')) {
            anchors[i].href += "&token=" + ad_config.token;
        }
        var url = anchors[i].href;
    }

    //handle the form nodes (there might be more than one)
    var forms   = document.getElementsByTagName('form');
    var input   = document.createElement('input');
    input.type  = 'hidden';
    input.name  = 'token';
    input.value = ad_config.search_token;

    for (var i=0; i < forms.length; i++) {
        if (forms[i].action.match('search\.php')) {
            forms[i].insertBefore(input, forms[i].childNodes[0]);
        }
    }
}

function replace_keywords(keywords) {
    var anchors         = document.getElementsByTagName('a');
    var match_regex     = '/^search\.php/';

    var term_count = 0;
    for (var i=0; i < anchors.length; i++) {
        if (anchors[i].href.match('search\.php')) {
            var link_matches = anchors[i].href.match('term=(.+?)\&append=');
            var term = escape(keywords[term_count].term) + '&token=' + keywords[term_count].token;
            anchors[i].href = anchors[i].href.replace(link_matches[1], term);

            var word_matches = anchors[i].innerHTML.match('<img.*?>(.*)');
            if (word_matches == null) {
                anchors[i].innerHTML = keywords[term_count].term;
            }
            else {
                anchors[i].innerHTML = anchors[i].innerHTML.replace(word_matches[1], ' ' + keywords[term_count].term);
            }
            //anchors[i].text.replace(word_matches[1], ' ' + keywords[term_count].term);
            //anchors[i].text = ' ' + keywords[term_count].term;

            term_count++;
        }
    }
}

// Generate ad fragment
function render_ad_fragment(ad_obj) {
    // build ad redirect url
    var url = '/redirect.php?';
    url += 'odomain=' + ad_config.domain;
    url += '&position=' + ad_obj.n;
    url += '&source=' + ad_config.source;
    url += '&term=' + ad_config.seed_keyword;
    url += '&nterms=' + Base64.encode( ad_config.seed_keyword );
    url += '&currency=' + ad_config.currency;
    url += '&market=' + ad_config.market;
    url += '&to=' + urlencode( ad_obj.url );

    var ad = '<div class="listing">';
    ad += '<div class="listing_title"><a class="title" href="' + url + '" target="' + ad_config.target + '">'+ ad_obj.line1 +'</a></div>';
    ad += '<div class="listing_desc">' + ad_obj.line2 + '</div>';
  
    if (ad_obj.line3 != undefined) {
        ad += '<div class="listing_desc">' + ad_obj.line3 + '</div>';
    }
   
    ad += '<div class="listing_url"><a class="url" href="' + url + '" target="' + ad_config.target + '">'+ ad_obj.visible_url +'</a></div>';
    ad += '</div>';

    return ad;
}


window.onload = function render_on_ready() {
    if (ad_config.markup) {
        show_ads();
        if (ad_config.source == 6) {
            if (ad_config.use_google_keywords == 1) {
                replace_keywords(ad_config.keywords);
            }
            else {
                append_tokens();
            }
        }
    }
    else {
        ad_config.render_now = true;
    }
}

