$(document).ready(function() {
    
    var haserrors = false;
    
    /***
     * Basic qtip settings for constant contact popup forms.
     **/
    
    var cc_qtip_settings = {
        content: {
            title: {                
                button: 'Close'
            },
            text: '<div style="text-align:center; padding-top:30px;"><img src="/seoimages/bigrotation2.gif" width="32" height="32" /></div><div style="text-align:center; padding-top:30px;">Loading...</div>'
        },
      
        position: {
            target: $(document.body), // Position it via the document body...
            corner: 'center' // ...at the center of the viewport
        },
        show: {
            when: 'click', // Show it on click
            solo: true // And hide all other tooltips
        },
        hide: {
            when: {
                target: $('#cancel_btn')
            }
        },
        style: {
            width: 650,
            height: 500,
            padding: '14px',
            border: {
                width: 9,
                radius: 9,
                color: '#666666'
            },
            name: 'light'
        },
        api: {
            onRender: function() {
                this.elements.wrapper.css('overflow', 'visible');
                this.elements.contentWrapper.css('overflow', 'visible');
                this.elements.content.css('overflow', 'visible');
            },
            beforeShow: function()
            {
                // Fade in the modal "blanket" using the defined show speed
                $('#qtip-blanket').fadeIn(this.options.show.effect.length);
            }
        }
    };
    
    /***
     * -----------------Settings for standard qtip popup for mailing list.-----------------
     **/
    
    cc_qtip_settings.content.url = 'constant-contact-ajax2.php';
    cc_qtip_settings.content.title.text = 'Alaska Sportfishing Newsletter';    
    cc_qtip_settings.api.onContentUpdate = function()
    {
        //alert('Loaded');
        setup_errors();
        $('#contant_contact_form').submit(function(){
				
            form_loaded_handler();
            return false;
        });
        $('#cancel_btn').click(function(){
            $('a[rel="cc_modal"]').qtip("hide");
        });
    }
    cc_qtip_settings.api.beforeHide = function()
    {
        // Fade out the modal "blanket" using the defined hide speed
        $('#qtip-blanket').fadeOut(this.options.hide.effect.length);
        
        //hide and clear error message
        $('#contant_contact_form .cc_response_container').slideUp('slow').empty();
        $("#contant_contact_form .error_container").removeClass("error_container").addClass("error_container_hide");
        haserrors = false;
        
        // remove all form values
        $('#contant_contact_form :input')
        .not(':button, :submit, :reset, :hidden, #checkbox_1')
        .val('')
        .removeAttr('checked')
        .removeAttr('selected');
    }
    
    $('.cc_modal').qtip(cc_qtip_settings);
    
    /***
     * -----------------Settings for vacation qtip popup.-----------------
     **/
    
    cc_qtip_settings.content.url = 'constant-contact-ajax-contest.php';
    cc_qtip_settings.content.title.text = 'Alaska Dream Vacation';
    cc_qtip_settings.style.height = 400;
    
//    cc_qtip_settings.api.beforeContentUpdate = function()
//    {
//        log('working...');
//    }
    
    cc_qtip_settings.api.onContentUpdate = function()
    {
        //alert('Loaded');
        //log('loaded.');
        
        // load recaptcha
        Recaptcha.create("6Lc4gwMAAAAAAJV-RTrLnFhHchS_tqXlVAUjSogd", 'recaptcha_div', {
            theme: "clean"
        });
        
        setup_errors();
        $('#contant_contact_form_contest').submit(function(){
				
            form_loaded_handler_contest();
            return false;
        });
        $('#cancel_btn').click(function(){
            $('a[rel="cc_modal"]').qtip("hide");
        });
    }
    cc_qtip_settings.api.beforeHide = function()
    {
        // Fade out the modal "blanket" using the defined hide speed
        $('#qtip-blanket').fadeOut(this.options.hide.effect.length);
        
        //hide and clear error message
        $('#contant_contact_form_contest .cc_response_container').slideUp('slow').empty();
        $("#contant_contact_form_contest .error_container").removeClass("error_container").addClass("error_container_hide");
        haserrors = false;
        
        // remove all form values
        $('#contant_contact_form_contest :input')
        .not(':button, :submit, :reset, :hidden')
        .val('')
        .removeAttr('checked')
        .removeAttr('selected');
        
        //reset content
        this.loadContent('constant-contact-ajax-contest.php');
    }
    
    $('.cc_modal_contest').qtip(cc_qtip_settings);
    
    // --------------------------------------------------------------------

    // Create the modal backdrop on document load so all modal tooltips can use it
    $('<div id="qtip-blanket">')
    .css({
        position: 'absolute',
        top: $(document).scrollTop(), // Use document scrollTop so it's on-screen even if the window is scrolled
        left: 0,
        height: $(document).height(), // Span the full document height...
        width: '100%', // ...and full width

        opacity: 0.7, // Make it slightly transparent
        backgroundColor: 'black',
        zIndex: 5000  // Make sure the zIndex is below 6000 to keep it below tooltips!
    })
    .appendTo(document.body) // Append to the document body
    .hide(); // Hide it initially

	$('a#goback_form').live("click", function(event){
		event.preventDefault();
		var cc_popup = $('.cc_modal_contest').qtip('api');
		cc_popup.loadContent("constant-contact-ajax-contest.php");
	});

});

function form_loaded_handler(){
    //var api = 'http://www.silverkingalaska.com/ccapi.php?action=addcontact&response-type=json';
    var api = 'http://www.silverkingalaska.com/ccapi.php?action=addcontact';
    //alert('hello');
    //Hide error message if needed. 
    $('.cc_response_container').slideUp('slow');
  
    haserrors = false;
    //Check Email Value
    if(!validate_email($('#email_address').val())){
        haserrors = true;
        $('#email_address_error').removeClass('error_container_hide').addClass('error_container');
    } else {
        haserrors = false;
        $('#email_address_error').removeClass('error_container').addClass('error_container_hide');
    }
  
    //Check List
    var lists = $('.lists_con input').serializeArray();    
    if(lists.length == 0){
        //alert("No Lists");
        haserrors = true;
        $('#list_error_1').removeClass('error_container_hide').addClass('error_container');
	
    }else{
        $('#list_error_1').removeClass('error_container').addClass('error_container_hide');
    }
    //  $.each(lists, function(index, value) { 
    //		  alert(index + ': ' + value.value); 
    //		});
	
	
    //Submit Ajax
    if(!haserrors){
        //alert($('#contant_contact_form').serialize());
        log('time to submit the ajax!');
        $.post(api, $("#contant_contact_form").serialize(),process_submission);

    } else {
        $('.cc_response_container').slideDown('slow');
        $('.cc_response_container').html('Please fix errors in the form. <span style="font-size:10px;">(Mouse-over * for more info)</span>'); 
    }	
   
}

function form_loaded_handler_contest(){
    var api = 'http://www.silverkingalaska.com/ccapi.php?action={0}&response-type={1}&update-user-lists={2}';
    //alert('hello');
    //Hide error message if needed. 
    $('.cc_response_container').slideUp('slow');
  
    haserrors = false;
    //Check Email Value
    if(!validate_email($('#email_address').val())){
        $('#email_address_error').removeClass('error_container_hide').addClass('error_container');
        haserrors = true;
    } else {
        $('#email_address_error').removeClass('error_container').addClass('error_container_hide');
    }
    
    if( !$('#first_name').val() ) {
        $('#first_name_error').removeClass('error_container_hide').addClass('error_container');
        haserrors = true;
    } else {
        $('#first_name_error').removeClass('error_container').addClass('error_container_hide');
    }
    
    if( !$('#last_name').val() ) {
        $('#last_name_error').removeClass('error_container_hide').addClass('error_container');
        haserrors = true;
    } else {
        $('#last_name_error').removeClass('error_container').addClass('error_container_hide');
    }
	
    //Submit Ajax
    if(!haserrors){
        
        //alert($('#contant_contact_form').serialize());
        $.post(api.format('addcontact','json', '1'), $("#contant_contact_form_contest").serialize(),function(data) {
            log(data);            
            $('.cc_response_container').slideDown('slow');            
            
            var step_two = function(data) {
                var cc_popup = $('.cc_modal_contest').qtip('api');
                if (data.success) {
                    // invoke qtip for share this links                               
                    cc_popup.loadContent("share-this-ajax.php");                
                } else {
                    cc_popup.updateContent("<h2>An Error Occurred</h2><p>Error: "+data.error+"</p>");
                }
            };
            
            if(data.response.success){
                log('we had success');
                $('.cc_response_container').html(data.response.message);
                store_contest_email(step_two);                
            } else if(data.response.error=='Contact already subscribed to list(s)') {
                log('already subscribed to list but ok');
                $('.cc_response_container').html('Thank You');
                store_contest_email(step_two);                         
            } else {
                log('an error was found');
                $('.cc_response_container').html(data.response.error);
            }
        });

    } else {
        $('.cc_response_container').slideDown('slow');
        $('.cc_response_container').html('Please fix errors in the form. <span style="font-size:10px;">(Mouse-over * for more info)</span>'); 
    }	
   
}

function store_contest_email(callback)
{
    var api = 'http://www.silverkingalaska.com/contest-enter-email-ajax.php';
    $.post(api, $("#contant_contact_form_contest").serialize(),function(data) {        
        callback(data);
    }, 'json');
}

function setup_errors(){
    $('#email_address_error, #first_name_error, #last_name_error').qtip({
        content: {
            text: false // Use each elements title attribute
        },
        style: 'cream' // Give it some style
    });
   
    $('#list_error_1').qtip({
        content: {
            text: false // Use each elements title attribute
        },
        position: {
            corner: {
                tooltip: 'topRight', // Use the corner...
                target: 'bottomLeft'// ...and opposite corner
            }
        },
        style: 'cream' // Give it some style
    });	
}

function process_submission(data){
    $('.cc_response_container').slideDown('slow');
    $('.cc_response_container').html(data.childNodes[0].childNodes[0].childNodes[0].nodeValue);
/*if(data.response.success){
        $('.cc_response_container').html(data.response.message);
    } else {
        $('.cc_response_container').html(data.response.error);
    }*/
    
				 
//alert("Data Loaded: " + data.childNodes[0].childNodes[0].nodeName);
}

function validate_email(email) {
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    var address = email;
    if(reg.test(address) == false) {
        return false;
    } else {
        return true;
    }
}

// log function
(function(){
    var b,d,c=this,a=c.console;
    c.log=b=function(){
        d.push(arguments);
        a&&a.log[a.firebug?"apply":"call"](a,Array.prototype.slice.call(arguments))
        };
        
    c.logargs=function(e){
        b(e,arguments.callee.caller.arguments)
        };
        
    b.history=d=[]
    })();
    
// printf type function
String.prototype.format=function(){
    var a=arguments;
    return this.replace(/{(\d+)}/g,function(b,c){
        return typeof a[c]!="undefined"?a[c]:b
        })
    }
