/* set up the share buttons */
dojo.addOnLoad(function(){

    var fb_id = 1;

    dojo.query('.facebook').forEach(function(node){
        var rect = node.getBoundingClientRect();

        var div = document.createElement('div');
        div.id = 'facebook_share_' + fb_id;
        div.style.width = '240px';
        div.style.height = '96px';
        div.style.padding = '10px';
        div.style.position = 'absolute';
        div.style.background = 'url(/images/Facebook_Share_BG.png) no-repeat';
        div.style.top = rect.bottom - 7 + 'px';
        div.style.left = rect.left + 3 + 'px';
        div.style.display = 'none';
        div.style.textAlign = 'right';
        div.className = 'shareblock';

        var url = escape(node.value);
		url = window.location;

        div.innerHTML = '<a href="#" onclick="smart.helpers.hideShareBlocks(); return false;" style="font-size: 9pt;">close</a><iframe src="https://www.facebook.com/plugins/like.php?href=' + url + '&amp;layout=standard&amp;show_faces=true&amp;width=240&amp;action=recommend&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:240px; height:80px;" allowTransparency="true"></iframe>';

        document.body.appendChild(div);

        dojo.connect(node, 'onclick', div, function(){
            smart.helpers.hideShareBlocks();
            this.style.display = 'block';
        });

        fb_id ++;
    });

});

/* set up the shopping cart */
var numFades = 0;
var fadeInProgress = false;
function fadeCart(){
    fadeInProgress = true;
    var onEnd = '';
    if(numFades < 5){
        onEnd = fadeCart;
    }

    numFades ++;
    if(numFades > 5){
        numFades = 0;
        fadeInProgress = false;
    }

    dojo.anim('cart', {opacity: 0.5}, 1000, 0, function(){
        dojo.anim('cart', {opacity: 1}, 1000, 0, onEnd);
    }, 0);
}

var timeout;
var flashing = false;
var flashToggle = true;
function flashCart(){
    flashing = true;
    dojo.byId('cart').style.display = 'block';
    var min = parseInt(timeout / 60);
    var sec = timeout % 60;
    if(sec < 10){
        sec = '0' + sec;
    }

    if(min < 10){
        min = '0' + min;
    }

    dojo.byId('cart_timer').style.color = '#a5c900';
    dojo.byId('cart_timer').innerHTML = min + ':' + sec;
    
    myInterval = window.setInterval(function(){
        timeout --;
        var min = parseInt(timeout / 60);
        var sec = timeout % 60;

        if(min <= 0 && sec < 0){
            min = 0;
            sec = 0;
			dojo.xhrGet({url:'/cart/reset',handleAs:'text'});
			window.clearInterval(myInterval);
        }

        if(sec < 10){
            sec = '0' + sec;
        }

        if(min < 10){
            min = '0' + min;
        }

        if(sec % 5 == 0){
            flashToggle = !flashToggle;
        }

        if(min < 2){
            flashToggle = true;
            dojo.byId('cart_timer').style.color = 'red';
        }
        else{
            dojo.byId('cart_timer').style.color = '#a5c900';
        }

        if(flashToggle){
            dojo.byId('cart_timer').innerHTML = min + ':' + sec;
        }
        else{
            dojo.byId('cart_timer').innerHTML = 'PAY NOW';
        }
    }, 1000);
}

function setupCart(){
    dojo.xhrGet({
        url: '/map/basketsummary',
        handleAs: 'json',
        load: function(response){
            if(response.data.count > 0){
                timeout = response.data.timeout;
                if(!flashing){
                    flashCart();
                }
            }
            else{
                dojo.byId('cart').style.display = 'none';
            }
        },
        error: function(e){
            console.log('Shopping cart: ' + e);
        }
    });
}

dojo.addOnLoad(function(){
    setupCart();
})

dojo.provide('smart');
dojo.provide('smart.helpers');

smart.helpers.hideShareBlocks = function(){
    dojo.query('.shareblock').style('display', 'none');
}

smart.helpers.fbshare = function(url){
    window.open('https://www.facebook.com/sharer.php?u='+ url,
        'sharer','toolbar=0,status=0,width=626,height=250');
}

smart.helpers.searchBoxCleared = false;
smart.helpers.clearSearchBox = function(){
    if(!smart.helpers.searchBoxCleared){
        smart.helpers.searchBoxCleared = true;
        dijit.byId('search_keyword').attr('value', '');
    }
}

smart.helpers.fillSearchBox = function(){
    if(dijit.byId('search_keyword').attr('value') == ''){
        dijit.byId('search_keyword').attr('value', 'Search');
        smart.helpers.searchBoxCleared = false;
    }
}

smart.helpers.newsletterNameCleared = false;
smart.helpers.clearNewsletterName = function(){
    if(!smart.helpers.newsletterNameCleared){
        smart.helpers.newsletterNameCleared = true;
        dijit.byId('newsletter_name').attr('value', '');
    }
}

smart.helpers.fillNewsletterName = function(){
    if(dijit.byId('newsletter_name').attr('value') == ''){
        smart.helpers.newsletterNameCleared = false;
        dijit.byId('newsletter_name').attr('value', 'Name');
    }
}

smart.helpers.newsletterEmailCleared = false;
smart.helpers.clearNewsletterEmail = function(){
    if(!smart.helpers.newsletterEmailCleared){
        smart.helpers.newsletterEmailCleared = true;
        dijit.byId('newsletter_email').attr('value', '');
    }
}

smart.helpers.fillNewsletterEmail = function(){
    if(dijit.byId('newsletter_email').attr('value') == ''){
        smart.helpers.newsletterEmailCleared = false;
        dijit.byId('newsletter_email').attr('value', 'E-Mail');
    }
}

smart.helpers.newsletterGoOnce = true;
smart.helpers.newsletterGo = function(){
    if(smart.helpers.newsletterGoOnce){
        smart.helpers.newsletterGoOnce = false;
        dojo.byId('newsletter_heading').innerHTML = '<span class="eq_green" style="font-weight: bold;">Working...</span>';
        
        var name = dijit.byId('newsletter_name').attr('value');
        var email = dijit.byId('newsletter_email').attr('value');

        if(name == '' || email == '' || !smart.helpers.newsletterNameCleared || !smart.helpers.newsletterEmailCleared){
            dojo.byId('newsletter_heading').innerHTML = '<span style="color: red; font-weight: bold;">Please enter your name and e-mail</span>';
            smart.helpers.newsletterGoOnce = true;
        }else if(!email.match('^[A-z0-9._%-]+@[A-z0-9.-]+\\.[A-z]{2,4}$')){
            dojo.byId('newsletter_heading').innerHTML = '<span style="color: red; font-weight: bold;">Please check your e-mail address</span>';
            smart.helpers.newsletterGoOnce = true;
        }
        else{
            dojo.xhrPost({
                url: '/newsletter/subscribe',
                content: {name: name, email: email},
                handleAs: 'json',
                load: function(response){
                    if(response.status == 'success'){
                        smart.helpers.newsletterGoOnce = true;
                        dojo.byId('newsletter_heading').innerHTML = '<span class="eq_green" style="font-weight: bold;">' + response.data.message + '</span>';
                    }
                    else{
                        this.error();
                    }
                },
                error: function(){
                    smart.helpers.newsletterGoOnce = true;
                    dojo.byId('newsletter_heading').innerHTML = '<span style="color: red; font-weight: bold;">We\'re sorry, an error occurred</span>';
                }
            });
        }
    }
}

var areaOnce = false;
smart.helpers.goAddVenue = function(){
    if(!areaOnce){
        areaOnce = true;

        dojo.byId('working').innerHTML = 'Working...';

        var name = dijit.byId('venue_name').attr('value');
        var area = dijit.byId('venue_area').attr('value');

        dojo.xhrPost({
            url: '/venue/add',
            content: {name: name, area: area},
            handleAs: 'json',
            load: function(response){
                areaOnce = false;
                if(response.status == 'success'){
                    dijit.byId('venue_name').attr('value', '');
                    dijit.byId('venue_area').attr('value', '');
                    dijit.byId('venue_name').reset();

                    dojo.byId('working').innerHTML = 'Submitted!';
                    window.setTimeout(function(){
                        dojo.byId('working').innerHTML = '';
                    }, 3000);
                }
            },
            error: function(e){
                alert(e);
                areaOnce = false;
            }
        });
    }
}
