var external_refresh_marquee = null;
var external_refresh_side_marketing = null;

$(document).ready(function() {
    var side_marketing = null;
    var marquee = null;
    var back_button = null;
    var pause_button = null;
    var forward_button = null;

    function map_selectors() {
	side_marketing = $('#side_marketing');
	marquee = $('#marquee');
	back_button = $('#back_button');
	forward_button = $('#forward_button');
	pause_button = $('#pause_button');
    ads_zip_code = $('#id_zip_code');
    }
    map_selectors();
    function get_zip_code() {
        if (typeof(ads_zip_code.val()) !== 'undefined') {
            return ads_zip_code.val();
        } else {
            return ''
        }
    }
    var pause = false;
    var url = '';

    function refresh_side_marketing_events() {
        var side_ids = [];
        $('#side_marketing li.publish-ad a.ad').each(function() {
            side_ids.push($(this).attr("id").split("side_ad_")[1]);
            $(this).unbind('click');
        });
        if (side_ids.length > 0) {
            register_ad_action('side_ad', 'view', side_ids.join(':'));    
        }
        $('#side_marketing li.publish-ad a.ad').each(function() {
            var label = get_side_ad_info(this);
            try {
                console.log("side view " + label);
            } catch (err) {
            
            }
            _gaq.push(['_trackEvent', "Ads", "view", label]);
        }).click(function() {
            var label = get_side_ad_info(this);
            url = $(this).attr('href');
            register_ad_action('side_ad', 'click', $(this).attr("id").split("side_ad_")[1]);
            _gaq.push(['_trackEvent', "Ads", "click", label]);
        
            //setTimeout(go_to_url, 500);
        });
    }
    function refresh_side_marketing() {
        var side_ads_length = $('#side_marketing li.publish-ad a.ad').length;
        $.ajax({
            url: '/advertisements/get_advertisements/' + '?zip_code=' + get_zip_code() + '&num_ads=' + side_ads_length,
            type: 'get',
            dataType: 'html',
            cache: false,
            success: function (resp) {
                var ad_text = [];
                for(var ad_idx = 0; ad_idx < $(resp).length; ad_idx++) {
                    ad_text.push($(resp)[ad_idx])
                }
                var ad_idx = 0;
                $('#side_marketing li.publish-ad').each(function() {
                    $(this).replaceWith(ad_text.pop());
                });
                refresh_side_marketing_events();
            }
        });
    }
    external_refresh_side_marketing = refresh_side_marketing;

    function refresh_marquee(operation) {
	var marquee_id = get_marquee_id();
        //$.ajax({
        //    url: '/advertisements/get_marquee/?id=' + marquee_id + '&operation=' + operation + '&zip_code=' + get_zip_code(),
        //    type: 'get',
        //    dataType: 'html',
        //    cache: false,
        //    success: function (resp) {
        //        marquee.html(resp);
        //    }
        //});
        marquee.load('/advertisements/get_marquee/?id=' + marquee_id + '&operation=' + operation + '&zip_code=' + get_zip_code(), 
            function() {
		    var label = get_ad_info();
                    try {
                        console.log("marquee view " + label);
                    } catch (err) {
                    
                    }
                    register_ad_action('marquee', 'view', $('#marquee_id').val());
			_gaq.push(['_trackEvent', "Ads", "view", label]);
                $('#marquee a').unbind('click');
                $('#marquee a').click(function() {
                    var label = get_ad_info();
                    url = $(this).attr("href");
                        register_ad_action('marquee', 'click', $('#marquee_id').val());
		            _gaq.push(['_trackEvent', "Ads", "click", label]);
                    setTimeout(go_to_url, 500);
                    return false;
                });
            }
	);
    }
    external_refresh_marquee = refresh_marquee;

    function go_to_url() {
        window.open(url);
    }
    var get_ad_info = function() {
	var marquee_input = $('#marquee input');
        var marquee_img = $('#marquee a img');
        var marquee_img_src = marquee_img.attr("src");
        var label = marquee_input.attr("name") + " " +
                marquee_input.val() + " " +
                marquee_img_src;
        if (typeof(marquee_input.attr("name")) === 'undefined') {
            try {
                console.log('Undefined label for marquee input');
            } catch (err) {
            
            }
        }
        return label;
    }
    
    var get_side_ad_info = function(el) {
        var id = $(el).attr("id").split("side_ad_")[1];
        var label = $(el).attr("title") + " " +
                    id + " " + $(el).children("img").attr("src");
        if (typeof($(el).attr("id")) === 'undefined') {
            try {
                console.log('Undefined label for side ad: ' + el);
                console.log('Attempted to bring side ads in: ' + $('#side_marketing a.ad'));
            } catch (err) {
            
            }
        }
        return label;
    }
    
    var get_marquee_id = function() {
        var ad = $('#marquee_id');
	if (ad.length > 0) { 
            return ad.val().trim(); 
	} else {
	    return null;
	}
    }
    var get_marquee = function(operation) {
        if (pause === false) {  
            if (operation !== 'forward' || operation !== 'back') { 
                operation = 'forward'; 
            }
            var marquee_id = get_marquee_id();
	    refresh_marquee(operation);
        }
    }
    
    /* Control Events */
    back_button.click(function() {
        get_marquee('back');
    });
    
    pause_button.click(function() {
        if (pause === false) {
            pause = true
            pause_button.css(
                'background', 
                'transparent ' +
                'url(/public/images/button_play_small.png) ' +
                'no-repeat scroll 0 0;'
            );
        } else {
            pause = false
            pause_button.attr('style', function() {
                return 'background: transparent url(/public/images/button_pause_small.png) no-repeat scroll 0 0;'
            });
        }
    });
    
    forward_button.click(function() {
        get_marquee('forward');
    });
    
    function rotate() {
        setInterval(get_marquee, 30000);
    }
    
        
    if (side_marketing.length > 0) {
        refresh_side_marketing_events();
    }
    if (marquee.length > 0 && marquee.hasClass('publish-ad')) { 
        marquee.load('/advertisements/get_marquee/' + '?zip_code=' + get_zip_code(), null, function() {
            register_ad_action('marquee', 'view', $('#marquee_id').val());
            rotate();
            $('#marguee a').unbind('click');
            $('#marquee a').click(function() {
                var label = get_ad_info();
                url = $(this).attr("href");
                register_ad_action('marquee', 'click', $('#marquee_id').val());
			    _gaq.push(['_trackEvent', "Ads", "click", label]);
                setTimeout(go_to_url, 500);
                return false;
            })
        });
    }

});

