// IE6 no image flicker
// document.execCommand("BackgroundImageCache",false,true);

function customPageView(customHref) {
    var _gaq = _gaq || [];
    _gaq.push(['_trackPageview', customHref ]);
}

function fbLink( ) {

    FB_RequireFeatures(['XFBML'], function() {
        var message = "";
        var tracking = '?campaign=social&utm_medium=social_sharing&utm_source=facebook';

        var whoknew = 'http://filenesbasement.com/running-of-the-brides/';

        var link = whoknew + tracking;

        var attachment = {
            'name':'Running of the Brides®',
            'href':link,
            'description':"At the Running of the Brides® women come to find the ultimate deal on beautiful gowns created by the world’s foremost designers. When the doors open hundreds of brides and their helpers dash for the racks making memories that will last a lifetime.",
            'media': [{ 'type': 'image', 'src': 'http://filenesbasement.com/running-of-the-brides/images/facebook_share.jpg', 'href':link}]
        };
        var action_links = [{'text':"Running of the Brides®", 'href':link}];
        FB.Connect.requireSession( function() { FB.Connect.streamPublish(message, attachment, action_links) } );
    });
}

function tweet() {

    var link = 'http://bit.ly/dbldfp';

    var message = escape("Save hundreds, even thousands on designer wedding gowns at the Running of the Brides at Filene's Basement. " + link);
    
    window.open('http://twitter.com/home?source=filenesbasement.com&status=' + message, 'twitter');
}

$(document).ready(function() {

    var displayTeamSize = $('#teamSize').val();
    var maxTeamSize = 10; // also defined as a php constant
        
    $('#addPerson').bind('click', function() {
        $('#members table tbody > *').each(
            function(n) {
                $(this).show();
            });
        $('#add-member').hide();
        $('#teamSize').val(maxTeamSize);
        return false;
    });

   $('#weddingDate').datepicker({});
    
    // reuse Zend Framework error and msg containers
    var ZFErrorLabelContainer = $('<ul></ul>');
    var ZFErrorSummary =  $('<div class="error-summary"></div>');

    var ZFMsgLabelContainer = $('<h3></h3>');
    var ZFMsgSummary =  $('<div class="status-summary"></div>');

    var ZFStatusContainer = $('.form-status');
    
    $("#build-team").validate({
        debug : false,
        focusInvalid: true,
        wrapper: 'li',
        errorClass: 'invalid',
        errorContainer: ZFErrorSummary,
        errorLabelContainer: ZFErrorLabelContainer,
        
        invalidHandler: errorHandler,
            
        rules: {
            teamName: {
              maxlength: 30,
              required: true
            },
            
            eventId: {
              required: true
            },
            
            fname0: {
              required: true
            },
            email0: {
              required: true,
              email: true
            },
              
            email1: {
              required: function() { return personRequired($('#member1'))},
              email: true
            },
            
            fname1: {
              required: function() {return personRequired($('#member1'))}
            },
            
            email2: {
              required: function() {return personRequired($('#member2'))},
              email: true
            },
            
            fname2: {
              required: function() {return personRequired($('#member2'))}
            },
            
            email3: {
              required: function() {return personRequired($('#member3'))},
              email: true
            },
            
            fname3: {
              required: function() {return personRequired($('#member3'))}
            },
            
            email4: {
              required: function() {return personRequired($('#member4'))},
              email: true
            },
            
            fname4: {
              required: function() {return personRequired($('#member4'))}
            },
            
            email5: {
              required: function() {return personRequired($('#member5'))},
              email: true
            },
            
            fname5: {
              required: function() {return personRequired($('#member5'))}
            },
            
            email6: {
              required: function() {return personRequired($('#member6'))},
              email: true
            },
            
            fname6: {
              required: function() {return personRequired($('#member6'))}
            },
            
            email7: {
              required: function() {return personRequired($('#member7'))},
              email: true
            },
            
            fname7: {
              required: function() {return personRequired($('#member7'))}
            },
            
            email8: {
              required: function() {return personRequired($('#member8'))},
              email: true
            },
            
            fname8: {
              required: function() {return personRequired($('#member8'))}
            },
            
            email9: {
              required: function() {return personRequired($('#member9'))},
              email: true
            },
            
            fname9: {
              required: function() {return personRequired($('#member9'))}
            }
        }

    });  // end team validate
    
    $("#optin").validate({
        debug : false,
        focusInvalid: true,
        wrapper: 'li',
        errorClass: 'invalid',
        errorContainer: ZFErrorSummary,
        errorLabelContainer: ZFErrorLabelContainer,
        
        invalidHandler: errorHandler,
        
        submitHandler: optinSubmitAjax,
        
        rules: {
            fname: {
              required: true
            },
            email: {
              required: true,
              email: true
            }
        }
    });
    
    function errorHandler(e, validator) {
        var errors = validator.numberOfInvalids();

        if (errors) {
            
            ZFErrorSummary.append(ZFErrorLabelContainer);
            ZFStatusContainer.append(ZFErrorSummary);
            
            var message = '<h2 class="error-action">Please fill out all required information.</h2>';
            
            ZFErrorSummary.html(message);
            ZFStatusContainer.show();
        } else {
            ZFStatusContainer.hide();
        }
    }
    
    function personRequired (member) {
        if (member.find('.primary input:checked').length ) {
            return true;
        } else if(member.find('.first-name input').val() != '') {
            return true;
        } else if(member.find('.email input').val() != '') {
            return true;
        } else if(member.find('.role select').val() != '') {
            return true;
        } else if(member.find('.file-upload input[type ="file"]').val() != '') {
            return true;
        } else {
            return false;
        }
    }
    
    function optinSubmitAjax(form) {

        $(form).find('div').hide(); // remove form components - except title

        $(form).append('<div class="ajax-spinner"></div>');

        jQuery.post('/running-of-the-brides/optin', { fname : $('#fname').val(), email: $('#email').val()}, function (data) {
            // success
            $('.ajax-spinner').remove();
        
            $('#fname').val('');
            $('#email').val('');
        
            ZFMsgLabelContainer.text(data);
            ZFMsgSummary.append(ZFMsgLabelContainer);
            ZFStatusContainer.append(ZFMsgSummary);
            ZFStatusContainer.show();
        });
        
        return false;
    }

 });
