(function($){
	
    $(document).ready(function() { 
		var BASE_URL = 'http://'+location.hostname+'/';
        var SS_URL = BASE_URL +  '';
        var ARROWS = '&nbsp;<span class="orange-text">&raquo;</span>&nbsp;';
        var grid_box = $('#advertise_grid').eq(0);
        var my_boat_list_title = $('#my_boat_list_title');
        var UT = {'location':window.location};

		UT.is_location_home_page = function(){
		    url = $.trim(this.location);
			var pattern1 = /marinebay\.com\/$/;
			var pattern2 = /marinebay\.com\/bayarea/;
            var on_home_page = false;

            if(pattern1.test(url) || pattern2.test(url)){
				on_home_page = true;
			}

			return on_home_page;
		};

        var itemExists = function(item){
		    var item = $(item);
            if($(item).length > 0){
				return true;
			}else{
				return false;
			}
		}

        // Add hover styles to text with class addHover
		$.fn.addHover = function(options){
			options = $.extend({
				element: '.addHover',
				mouseenter_css: {'color':'rgb(5,102,235)','cursor':'pointer'},
				mouseleave_css: {'color':'rgb(255,102,0)','cursor':'none'}
			});	

			element = $(options.element);
			mouseenter_css = options.mouseenter_css;
			mouseleave_css = options.mouseleave_css;

			$(element).hover(function(){$(this).css(mouseenter_css)}, function(){$(this).css(mouseleave_css)});
		   
		};
		
		$.fn.addHover();

        // Add hover styles to text with class addHover
		$.fn.buttonHover = function(options){
			options = $.extend({
				element: '.buttonStyleGreen',
				mouseenter_css: {'cursor':'pointer','background-color':'rgb(154,181,176)'},
				mouseleave_css: {'cursor':'none','background-color':'rgb(8,114,166)'}
			});	

			element = $(options.element);
			mouseenter_css = options.mouseenter_css;
			mouseleave_css = options.mouseleave_css;

			$(element).hover(function(){$(this).css(mouseenter_css)}, function(){$(this).css(mouseleave_css)});
		};

		$.fn.buttonHover();

		// Preload images
		$.fn.preload = function() {
			this.each(function(){
			$('<img/>')[0].src = this;
			});
		};

		// Usage:

		$([BASE_URL + 'images/facebook_loading_image.gif']).preload();
		
        // Method validateEmailAddress
        // Validates an email string
        // Boolean, returns true if the email-address is valid or false if it is false
        $.fn.validateEmailAddress = function(emailAddress){

            var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

            if(reg.test(emailAddress) === false) {

                return false;
            }

            return true;
        };

        // Set color for required form filed astericks
        $.fn.requrired_field_asterick = function(){

            var fields = $('.red');
            fields.css('color', 'rgb(255, 17, 17)');
        }
        $.fn.requrired_field_asterick();

        /**
         *    Function: set_container_heights()
         */
        $.fn.set_container_rules = function(options){
            options = $.extend({
                header_contianer: '.body-header',
                header_height: '201px',
                body_container: '.body-copy',
                body_height: '401px',
                footer_container: '.body-footer',
                footer_horizontal_nav: '.footer-horizontal-nav',
                footer_height: '201px',
                logo_container: '.logo-container',
                logo_height: '201px',
                logo_width: '350px',
                nav_bar: '.nav-link:first',
                add_nav_to_footer: 'true'
            },options);

            var header_contianer = $(options.header_contianer);
            var header_height = options.header_height;
            var body_contianer = $(options.body_contianer);
            var body_height = options.body_height;
            var footer_container = $(options.footer_container);
            var footer_horizontal_nav = $(options.footer_horizontal_nav);
            var footer_height = options.footer_height;
            var logo_container = $(options.logo_container);
            var logo_height = options.logo_height;
            var logo_width = options.logo_width;

            header_contianer.height(header_height);
            footer_container.height(footer_height)
            logo_container.height(logo_height);
            logo_container.width(logo_width);
            logo_container.addClass('cursor-pointer');

            // Logo redirect
            logo_container.click(function(){
                window.location.replace(BASE_URL + 'bayarea/');
            });

            // Manage nav bar
            var nav_bar = $(options.nav_bar);
            var nav_bar_user_email = $('.horizontal-nav:eq(0)').find('a:eq(7)');
            var add_nav_to_footer = options.add_nav_to_footer;
				var nav_clone = nav_bar.clone().prependTo(footer_horizontal_nav);
				nav_clone.addClass('footer-horizontal-nav');
            
            if(nav_bar_user_email.length){
				nav_bar_user_email.clone().appendTo(footer_horizontal_nav);
            }

            var copyright = '<div class="clear"></div><!-- clear -->' +
            '<div class="footer-copy">Copyright @ ' + new Date().getFullYear() + 
            ' - MarineBay.com. All rights reserved.</div>';

            var copy = '<div class="footer-copy"><span class="copy-content">' +
            'Your on line source for boat sales. ' +
            'Free boat ads. Search power boats, sail boats, ' +
            'ameracat, everglades, contender, wellcraft, used boats and ' +
            'new boats on MarineBay.com</span></div>';


            footer_container.append(copyright);
            footer_container.append(copy);
            var copy_content = $('.copy-content');
            if(copy_content){
                copy_content.addClass('footer-copy-styles');
            }
        };

        $.fn.set_container_rules();

        /**
         * Function: authenticate_user
         */
        $.fn.authenticate_user = function(options){
            options = $.extend({
                username: '#username',
                password: '#auth_password',
                button: '#login_button'
            },options);

            var button = $(options.button);
            var username_value = $(options.username).val();
            var password_value = $(options.password).val();
		    var	login_url = BASE_URL + 'member/profile/userlogin';

            $.ajax({
                type: 'POST',
                url: login_url,
                data: {
                    'username': username_value, 
                    'password': password_value
                },
                success: function(data){
                    if(data == 'failedfailed'){
                        window.location = BASE_URL +  'member/profile/userloginerror/';
                    }else{
                        window.location = BASE_URL +  'member/controlpanel/';
                    }
                }
            });    

        };

        /*
         |
         |------------------------------------------
         | Function: boat_count
         |------------------------------------------
         |
         */
        $.fn.boat_count = function(options){
            options = $.extend({
                boat_count: '.boat-count'
            },options);

            var boat_count_node = $(options.boat_count);

            if(boat_count_node){
                /*
                $.post('http://marinebay.com/helper/boats/', function(data) {
                    var text = '<div><span style="color:#000;">Easy and free.</span>';
                    var append_text = '<span style="color:#000;">Search for boats, yachts, and watercraft!</span></div>';
                    $(boat_count).html('<h5 class="total_number_of_boats cursorPointer">Browse <span style="color:#ff6600">' + data + 
                        '</span> boats for sale <span class="orange-text">&raquo;</span></h5> ' + text + ' ' + append_text).click(function(){
                        window.location = BASE_URL +  'browse/boats/';
                    });
                });
                */
                boat_count_node.click(function(){
                    window.location = BASE_URL +  'browse/boats/';
                });
            }
        };

        $.fn.boat_count();

        // Method jQuery fn.add_profile_validation
        // Validate add profile user input
        $.fn.add_profile_validation = function(options){
            options = $.extend({
                name: '#name',
                email: '#email',
                re_email: '#re_email',
                password: '#password',
                adduserprofile: '#adduserprofile',
                error_message_contianer: '#add_profile_error_message'
            },options);
            
			var message = '';
            var check_email_pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
            var check_name_pattern = /^[a-zA-Z+\s?]{2,100}$/;
            var check_password_pattern = /[a-zA-Z0-9_\-]{6,16}/i;
            var name = $(options.name);
            var email = $(options.email);
            var re_email = $(options.re_email);
            var password = $(options.password);
            var adduserprofile = $(options.adduserprofile);

            set_boarder = function(fields){
				if(fields.length){
                    if(fields.length == 1){
			            $(fields).css('border','1px solid #ff0000');
					}
                    $.each(fields, function(index, item){
						if($(item)){
							$(item).css('border','1px solid #ff0000');
                        }
					});
				}
            }

            var create_error_message = function(error_message){
				var error_message_string = '<div id="add_profile_error_message" class="center error pad_error widthNinety">' +
                                     error_message +
                                    '</div><span class="clear spacer"></span>';

				return error_message_string;
			}

            if(adduserprofile){
                $(adduserprofile).submit(function () {
            		var error_message_container = $(options.error_message_contianer);
                    if(email.val() == '' || name.val() == '' || password.val() == ''){
                        message = create_error_message('You must fill in all of the fields.');
                        if(error_message_container){
                            error_message_container.remove();
                        }
                        $(message).fadeIn('slow').appendTo('#advertise_grid');

                        return false; 
					}

                    if(email.val() != re_email.val()){
                        message = create_error_message('Your emails do not match. Please try again.');

                        if(error_message_container){
                            $(error_message_container).remove();
                        }
                        $(message).fadeIn('slow').appendTo('#advertise_grid');

                        return false; 
                    }

					if(!check_email_pattern.test(email.attr('value'))){
                        message = create_error_message('Please enter a valid email.');
					    if(error_message_container){
						    error_message_container.remove();
						}
						$(message).fadeIn('slow').appendTo('#advertise_grid');

                        return false;
					}

					if(!check_name_pattern.test(name.attr('value'))){
                        message = create_error_message('The name contains invalid characters.');
					    if(error_message_container){
						    error_message_container.remove();
						}
						$(message).fadeIn('slow').appendTo('#advertise_grid');

                        return false;
					}

					if(!check_password_pattern.test(password.attr('value'))){
                        message = create_error_message('The password contains invalid characters.');
					    if(error_message_container){
						    error_message_container.remove();
						}
						$(message).fadeIn('slow').appendTo('#advertise_grid');

                        return false;
					}

                    if(parseInt($.fn.checkIfUserExists({'email':email})) == 1){
                        message = create_error_message('There is an existing account associated with this email.');
					    if(error_message_container){
						    error_message_container.remove();
						}
						$(message).fadeIn('slow').appendTo('#advertise_grid');

						return false;
					}
                });
            }
        };

        $.fn.add_profile_validation();

        $.fn.checkIfUserExists = function(options){
            options = $.extend({
				email: ''
			}, options);

			var email = options.email;

            if(email.length){
				var results = $.ajax({
                    type: 'POST',
                    data: email,
					url: BASE_URL + 'member/profile/checkifuserexists/',
					global: false,
					async:false,
					success: function(results){
					}
				}).responseText;

				return results;
			}
		};

        // Method fn.user_authorization
        $.fn.user_authorization = function(options){
            options = $.extend({
                username: '#username',
                password_text: '#password_text',
                forgot_password: '#forgot_password_text'
            },options);

            var username = $(options.username);
            var password_text = $(options.password_text);
            var forgot_password = $(options.forgot_password);

            username.val('user-name');
            
            username.focus(function(){
                this.value=''
            }).css('font-size','98%');

            password_text.val('password');

            password_text.val('password')
            .focus(function(){
                $.fn.password_element_manager();
            }).css('font-size','98%');

            forgot_password
            .mouseover(function(){
                $(this).css({
                    'color':'#ff6600',
                    'cursor':'pointer'
                })
                })
            .mouseout(function(){
                $(this).css({
                    'color':'#fff',
                    'cursor':'none'
                })
                });

        };

        /**
         * Function: password_element_manager
         */
        $.fn.password_element_manager = function(options){
            options = $.extend({
                password_text: '#password_text',
                prepend_element: '#login_button'
            },options);
            
            var password_text = $(options.password_text);
            var prepend_element = $(options.prepend_element);

            if(password_text){
                password_text.remove();
            }

            var password = $(document.createElement('input')).attr({
                name: 'auth_password',
                id: 'auth_password',
                type: 'password',
                'class': 'margin-l-7 inputInlinePostion inputInlinePadding',
                value: ''
            }).css('font-size','98%').click(function(){}).insertBefore(prepend_element).focus();

            if($('#auth_password')){
                var auth_password = $('#auth_password');
                auth_password.focus();
                auth_password.keyup(function(e){
                    if(e.keyCode == 13){
                        $.fn.authenticate_user();
                    }
                })
                .ajaxStart(function(){
                    $.blockUI();
                }).ajaxStop(function() {
                    setTimeout(function() {
                        $.unblockUI;
                    }, 1500);
                });
            }
        };

        /**
         *------------------------------------------
         * Function: show_user_authorization_form
         *------------------------------------------
         */
        $.fn.show_user_authorization_form = function(options){
            options = $.extend({
                horizontal_nav: '.horizontal-nav',
                user_name: '#username',
                password_text: '#password_text',
                login_button: '#login_button'
            },options);
            var horizontal_nav = $(options.horizontal_nav);
            var user_name = $(options.user_name);
            var password_text = $(options.password_text);
            var login_button = $(options.login_button);

            /*
			var secure_status = $('#secure_status');
			if(secure_status.length){
				user_secure_status = secure_status.attr('value');
                if(user_secure_status === 'OFF'){
                        user_name.focus(function(){
                            this.value=''
                        }).val('user-name');

                        password_text.focus(function(){
                            $.fn.password_element_manager();
                        }).val('password');

                        login_button.mouseup(function(){
                            $.fn.authenticate_user();
                        });

                    return;
				}
			}
            */


            $.ajax({
                type: 'post', 
                url: BASE_URL + 'member/profilesecurity/memberprofilestatus',
                success: function(userStatus){
                    if(userStatus !== 'FALSE'){
                        
                    //console.log(userStatus);

                    }else{
                    
                        if(!user_name || 
                            !password_text ||
                            !login_button){
                            
                            return;

                        }

                        user_name.focus(function(){
                            this.value=''
                        }).val('user-name');

                        password_text.focus(function(){
                            $.fn.password_element_manager();
                        }).val('password');
                        /*
                        login_button.mouseup(function(){
                            $.fn.authenticate_user();
                        });
                        */
                    
                    }  //End login form;
                    

                } // End Ajax success

            }); // End ajax call

        };

        // show user login elements
        $.fn.show_user_authorization_form();

        /**
         *    Function: boat_listing()
         */
        $.fn.boat_listing = function(options){
            options = $.extend({
                details_boat_for_sale: '.details_boat_for_sale',
                boat_details: '.boat_details',
                list_description: '.list_description'
            },options);

            var details_boat_for_sale = $(options.details_boat_for_sale);
            var boat_details = $(options.boat_details);
            var list_description = $(options.list_description);

            details_boat_for_sale.addClass('cursor-pointer');
            boat_details.addClass('cursor-pointer');

        };

        $.fn.boat_listing();

        /**
         *------------------------------------------
         * Function: boat_search_form
         *------------------------------------------
         */
        $.fn.boat_search_form = function(options){
            options = $.extend({
                horizontal_nav: '.horizontal-nav'
            },options);

            var horizontal_nav = $(options.horizontal_nav);

            // Create a container to hold login form
            var login_auth_container = $(document.createElement('div')).attr({
                id: 'login_auth_container',
                'class': 'login-auth-container'
            }).appendTo(horizontal_nav.eq(0));
            
            var username = $(document.createElement('input')).attr({
                name: 'username',
                id: 'username',
                type: 'text',
                'class': 'margin-l-7 inputInlinePostion inputInlinePadding',
                value: 'user-name'
            }).focus(function(){
                this.value=''
            }).appendTo(login_auth_container).css('font-size','98%');

            var password_text = $(document.createElement('input')).attr({
                name: 'password_text',
                id: 'password_text',
                type: 'text',
                'class': 'margin-l-7',
                value: 'password'
            }).appendTo(login_auth_container).css('font-size','98%');

            // Login button
            var login_button = $(document.createElement('input')).attr({
                name: 'login_button',
                id: 'login_button',
                type: 'button',
                'class': 'cursor-pointer buttonStyle',
                value: 'Login'
            }).appendTo(login_auth_container);                

            // Create forgot password container
            var forgot_password = $(document.createElement('div')).attr({
                id: 'forgot_password_container',
                'class': 'forgot-password-container'
            }).appendTo(horizontal_nav.eq(0));

            // Create forgot password text (link)
            var forgot_password_text = $(document.createElement('span')).attr({
                id: 'forgot_password_text'
            }).appendTo(forgot_password)
            .text('Forgot your password?')
            .mouseover(function(){
                $(this).css({
                    'color':'#ff6600',
                    'cursor':'pointer'
                })
                })
            .mouseout(function(){
                $(this).css({
                    'color':'#fff',
                    'cursor':'none'
                })
                });
        };

        /*
         |-----------------------------------------------------
         | Utility functions
         |-----------------------------------------------------
         */

        /**
         *    Function: boat_controller_dragable()
         */
        $.fn.boat_controller_dragable = function(options){
            options = $.extend({
                browse_boat_search_controller: '#advertise_grid'
            },options);

            var browse_boat_search_controller = $(options.browse_boat_search_controller);

            if(browse_boat_search_controller){
        //browse_boat_search_controller.draggable();
        }

        };    
            
        //$.fn.boat_controller_dragable();

        /**
         *    Function: boat_controller_dragable()
         */
        $.fn.boat_controller_location = function(options){
            options = $.extend({
                browse_boat_search_title: 'h5:eq(0)'
            },options);

            var browse_boat_search_title = $(options.browse_boat_search_title);

            if(browse_boat_search_title){
                browse_boat_search_title.addClass('cursor-pointer');
                browse_boat_search_title.click(function(){
                    window.location = BASE_URL +  'browse/boats/';
                });
            }
        };

        $.fn.boat_controller_location();

        /**
         * Function: boat search
         */
        $.fn.boat_search = function(options){
            options = $.extend({
                current_status: '#status_both',
                manufacturer: '#manufacturer',
                boat_keywords: '#boat_keywords',
                min_length: '#min_length',
                max_length: '#max_length',
                boat_zip_code_distance: '#boat_zip_code_distance',
                button: '#boat_search_button',
                boat_grid: '#boat_grid'
            },options);

            var    current_status = $(options.current_status);
            var    manufacturer = $(options.manufacturer);
            var    boat_keywords = $(options.boat_keywords);
            var    min_length = $(options.min_length);
            var    max_length = $(options.max_length);
            var    boat_zip_code_distance = $(options.boat_zip_code_distance);
            var    button = $(options.button);
            var    boat_grid = $(options.boat_grid);

            // Set default boat type


            var driver = function(){

                var status_val;

                if($('#status_new').prop('checked') === true){
                    status_val = 0;
                }
                
                if($('#status_pre_owned').prop('checked') === true){
                    status_val = 1;
                }

                if($('#status_both').prop('checked') === true){
                    status_val = 2;
                }
            

                var    data_values = {
                    'status': status_val, 
                    'manufacturer': manufacturer.val(),
                    'boat_keywords': boat_keywords.val(), 
                    'min_length': min_length.val(), 
                    'max_length': max_length.val(), 
                    'browse_boat_search': true, 
                    'boat_zip_code_distance': boat_zip_code_distance.val()
                    };

                $.ajax({
                    type: 'POST',
                    url: BASE_URL +  'browse/boats/preference/',
                    data: data_values,
                    success: function(copy){
                        window.location = BASE_URL +  'browse/boats/preference/';
                        $.fn.boat_search();

                    }
                });    
            }

			button.click(function(){driver();});

            var form_input = $('#boat_search input');
            if(form_input.length){
				form_input.keypress(function(e){
					if(e.which == 13){
						driver();
					}
				});
			}
            
			$('input[id="status_both"]').prop('checked', true);
        };

        $.fn.boat_search();

        // Function: browse_my_boat_list

        $.fn.browse_get_my_boat_list = function(options){
            options = $.extend({
                boat_ids: ''
            },options);

            var boat_ids = options.boat_ids.toString();

            $.ajax({
                type: 'POST',
                url: BASE_URL +  'browse/boats/mypreference/',
                data: {
                    'browse_my_boat_list': true, 
                    'array_of_ids': boat_ids
                },
                success: function(copy){		

                    window.location = BASE_URL +  'browse/boats/mypreference/';

                    $.fn.boat_search();

                }

            });

        };

        /**
         * Function: cookie_controller
         */
        $.fn.cookie_controller = function(options){

            options = $.extend({
                cookie_delete: false,
                cookie_name: '',
                cookie_value: '',
                cookie_expires: 30
            },options);

            if(options.cookie_delete === false){

                $.cookie(options.cookie_name, options.cookie_value, {
                    'path':'/'
                });

            }else if(options.cookie_delete === true){

                $.cookie(options.cookie_name, null, {
                    'expires':-1, 
                    'path':'/'
                });

            }

        };

        /**
         * Function: cookie_controller
         */
        $.fn.cookie_controller_jq = function(options){

            var date = new Date();    

            options = $.extend({
                cookie_delete: false,
                cookie_name: '',
                cookie_value: '',
                expiresAt: date.setTime(date.getTime() + (3 * 24 * 60 * 60 * 1000))

            },options);

            var newOptions = {
                expiresAt: options.cookie_date
            }

            $.cookies.setOptions(newOptions);

            if(options.cookie_delete === false){

                $.cookies.set(options.cookie_name, options.cookie_value);

            }else if(options.cookie_delete === true){

                $.cookies.del(options.cookie_name);

            }

        };

        /**
		 * Function: get_cookies_array
		 * loads cookies into an associative array with the cookie name as the index and the cookie value as the value
		 */
        $.fn.get_cookies_array = function get_cookies_array() {

            var cookies = { };

            if (document.cookie && document.cookie != '') {
                var split = document.cookie.split(';');
                for (var i = 0; i < split.length; i++) {
                    var name_value = split[i].split("=");
                    name_value[0] = name_value[0].replace(/^ /, '');
                    cookies[decodeURIComponent(name_value[0])] = decodeURIComponent(name_value[1]);
                }
            }

            return cookies;
		   
        };

        $.fn.filter_cookies = function(cookieNameRegExp){

            var cookieName, returnValue={}, cookies=$.fn.get_cookies_array();

            if(typeof cookieNameRegExp==='string'){
                cookieNameRegExp=new RegExp(cookieNameRegExp);
            }
			
            for(cookieName in cookies){
                if(cookieName.match(cookieNameRegExp)){
                    returnValue[cookieName]=cookies[cookieName];
                }
            }
			
            return returnValue;

        };


        /**
         * Function: get_cookies
         */
        $.fn.get_cookies = function(options){

            options = $.extend({
                filter: /^my_boat_list_/
            },options);    

            //var boat_ids = $.cookies.filter(options.filter);
            var boat_ids = $.fn.filter_cookies(options.filter);

            var ids = [];

            $.each(boat_ids, function(index, value){

                ids.push(value);
                
            });

            return ids;
        };

        /**
         *------------------------------------------
         * Function: get_my_boat_list
         *------------------------------------------
         */
        $.fn.get_my_boat_list = function(options){

            options = $.extend({
                container: '#advertise_grid',
                filter: /^my_boat_list_/
            },options);

            var container = $(options.container);

            //var boat_ids = $.cookies.filter(/^my_boat_list_/);

            var boat_ids = $.fn.filter_cookies(options.filter);

            var ids = [];

            $.each(boat_ids, function(index, value){

                ids.push(value);
                
            });

            $.ajax({
                type: 'POST',
                url: BASE_URL +  'browse/boats/get_my_boat_list/',
                data: {
                    get_my_boat_list:'get_my_boat_list', 
                    array_of_ids:ids.toString()
                },
                beforeSend: function(){$('<span id="tempLoading">Loading...</span>').appendTo($('#advertise_grid'))},
                complete: function(){$('#tempLoading').remove()},
                success: function(copy){

                    //console.log($.cookies.filter(/^my_boat_list_/));

                    container.append(copy);

                    $.fn.get_boat_list_ids();
                    $.fn.boat_details_add_anchors();

                }
            });
        };

        var featured = $('.premierContainer');
        if(featured.length < 1 && !UT.is_location_home_page()){
            $.fn.get_my_boat_list();
        }

        /**
         *------------------------------------------
         * Function: get_user_status
         *------------------------------------------
         */
        $.fn.get_user_status = function(options){

            $.ajax({
                type: 'POST',
                url: BASE_URL +  'member/profilesecurity/',
                success: function(copy){
                
                }
            });
            
        };

        $.fn.get_page_type = function(){

            /*
                Set url based on User Status
            */
            
            var get_url = location.pathname;
            var controlPanelBoatDetailsQString = /controlpanel/;
            var urlString = '';

            if(controlPanelBoatDetailsQString.test(get_url)){
                urlString = SS_URL + 'member/controlpanel';
            }else{
                urlString = SS_URL + 'browse/boats';
            }

            return urlString;
        }

        /**
         * Function: create_my_boat_list
         * Create my boat list
         */
        $.fn.create_my_boat_list = function(options){
            options = $.extend({
                id:'NA',
                year:'NA',
                manufacturer:'NA',
                price:'NA',
                test:'TEST', 
                length:'NA', 
                boatStatus:'NA',
                zip: 'NA',
                state: 'NA',
                element_container: '#advertise_grid'
            }, options);

            //console.log($(options.record_details));

            var record_details = {
                id:options.id,
                boatStatus:options.boatStatus,
                year:options.year,
                manufacturer:options.manufacturer,
                price:options.price,
                test:options.test,
                length:options.length,
                zip:options.zip,
                state:options.state
                };
            var element_container = $(options.element_container);
            if($('#horizontal_rule_my_boat_list').length < 1){
                // Create horizontal rule
                var horizontal_rule = $(document.createElement('hr')).attr({
                    id: 'horizontal_rule_my_boat_list',
                    'class': 'verticalTopPadding noPadBottom',
                    width: '85%'
                }).appendTo(element_container);
            }

            if($('#my_boat_list').length<1){

                // Create container
                var my_boat_list = $(document.createElement('div')).attr({
                    id: 'my_boat_list'
                }).appendTo(element_container);

                // Add title
                var my_boat_list = $(document.createElement('h5')).attr({
                    id: 'my_boat_list_title',
                    'class': 'brightBlueText noPadTop'
                }).appendTo(my_boat_list)
				  .html('<span class="padLeft reducedFont">My Boat List</span>')
            }

            var my_boat_list = $('#my_boat_list');

            var add_row = $(document.createElement('ul')).attr({
                'class': 'list_style_none margin_pad_zero cursorPointer',
                id: 'my_boat_list_row_' + record_details.id
            }).mouseup(function(){
                var route = $.fn.get_page_type() + '/viewboatdetails/' + record_details.id + '/';
                window.location = route;                
            }).appendTo(my_boat_list);

            var boatStatus = (record_details.Status!=='NA') ? record_details.boatStatus : '';

            var add_year = $(document.createElement('li')).attr({
                id: 'my_boat_list_row_year_' + record_details.year                
            }).html('<a class="linkBlueOrange" href="">'  + boatStatus + ARROWS + record_details.year + '</a>').appendTo(add_row);

            var add_length = $(document.createElement('li')).attr({
                id: 'my_boat_list_row_manufacturer_' + record_details.manufacturer
            }).html('<a class="linkBlueOrange" href="">' + record_details.length + ARROWS + record_details.manufacturer + '</a>').appendTo(add_row);

            var add_price = $(document.createElement('li')).attr({
                id: 'my_boat_list_row_price_' + record_details.price
            }).html('<a class="block floatLeft widthFourtyPercent ' +
                    'linkBlueOrange" href="">' + record_details.price + '</a>').appendTo(add_row);

            if(record_details.zip){
				var add_zip = $(document.createElement('li')).attr({
					id: 'my_boat_list_row_zip_' + record_details.zip,
                    'class': 'alignRight'
				}).html('<a class="widthThirtyPercent block floatRight linkBlueOrange" ' +
                        'href=""><span class="boatZip">' + record_details.zip + '</span>' + 
                        ARROWS + '<span class="boatState">' + record_details.state + '</span></a>').appendTo(add_row);
            }

			var add_spacer = $(document.createElement('li')).attr({
                'class':'boatListBottomSpacer'}).
			html('<a class="clear"></a>').appendTo(add_row);

			$('.boatListBottomSpacer eq:0').load(function(){ alert('added'); $('#body_copy').unblock();});

		    $('#body_copy').unblock();

            var restrict_anchors = $(add_row).find('a');
            
			$.each(restrict_anchors,function(index, item){
                $(item).click(function(e){
                    //console.log(this);
                    e.preventDefault();
                });
			});
        };

        /**
         *    Function: boat_details_anchor()
         */
        $.fn.boat_details_anchor = function(options){

            options = $.extend({
                id: 0
            },options);

            var route = $.fn.get_page_type() + '/viewboatdetails/' + options.id + '/';
            window.location = route;

        };

        /**
         *    Function: boat_details_anchors()
         */
        $.fn.boat_details_add_anchors = function(options){

            options = $.extend({
                parent: '#my_boat_list',
                element_filter: /^my_boat_list_/
            },options);

            var element_filter = $(options.parent).find('ul');

            //console.log(element_filter);

            if(element_filter.length < 1){
                
                return;

            }

            var id = 0;
            var element;
            var anchor_tags;

            $.each(element_filter, function(index, item){
                
                var element = $(item);

                anchor_tags = element.find('a');

                $.each(anchor_tags, function(index, i_anchor){

                    $(i_anchor).click(function(){
                        return false;
                    });
                
                });

                element.mouseup(function(){

                    element = element.attr('id').split('_');

                    id = element[element.length-1];

                    $.fn.boat_details_anchor({
                        'id':id
                    });

                });
                            
            });

        };
        
        /**
         *    Function: boat_row()
         */
        $.fn.boat_row = function(options){
            options = $.extend({
                boat_row: '.details_boat_for_sale'//'div[class^=boat_row_footer]'
            },options);

            var boat_row = $(options.boat_row);
            
            //console.log(boat_row);

            var checkbox_pin = $(boat_row).find("input[class^='store_boat_pin_']");

            var parse_value = function(row){
			}

            boat_row.each(function(index){
                var row = $(this);
                var record_details = {};

                //parse_value(row);

                record_details.boatStatus = row.find('a[class=boatStatus]').eq(0).text();
                record_details.year = row.find('a[class=boatYear]').eq(0).text();
                record_details.length = row.find('a[class=boatLength]').eq(0).text();
                record_details.manufacturer = row.find('a[class=boatManufacturer]').eq(0).text();
                record_details.price = row.find('a[class=boatPrice]').eq(0).text();
                record_details.zip = row.find('a[class=boatZip]').eq(0).text();
                record_details.state = row.find('a[class=boatZip]').eq(1).text();

                var pin_checkbox = row.find("input[class^='store_boat_pin_']").eq(0);

                var get_id = $.trim(pin_checkbox.attr('class'));
                get_id = get_id.split('_');

                record_details.id = get_id[3]

                //if($.cookie.get('my_boat_list_' + record_details.id)){
                if($.cookie('my_boat_list_' + record_details.id)){

                    pin_checkbox.prop('checked', true);

                }else{

                    pin_checkbox.prop('checked', false);

                }

                // handle PIN functionality
                pin_checkbox.mouseup(function(){

                    var set_cookie = {
                        'cookie_name': 'my_boat_list_' + record_details.id,
                        'cookie_value': record_details.id
                        };

                    var checked = pin_checkbox.prop('checked');

                    if(checked === true){
                        //console.log(checked);

                        set_cookie.cookie_delete = true;

                        $.fn.cookie_controller(set_cookie);

                        $('#my_boat_list_row_' + record_details.id).remove();

                    }else{

                        //console.log(record_details.year + ' ' + record_details.manufacturer + ' ' + record_details.price);

                        set_cookie.cookie_delete = false;

                        $.fn.cookie_controller(set_cookie);
                        $.fn.create_my_boat_list(record_details);

                    }

                });

            });

        };
        

      	$.fn.boat_row();

        /**
         *    Function: $.fn.add_links_to_my_boat_list_rows
         */
        $.fn.add_links_to_my_boat_list_rows = function(options){
            options = $.extend({
                my_boat_list: '#my_boat_list'
            },options);

            var my_boat_list = $(options.my_boat_list);
            var list = my_boat_list.find('ul');
            var id;

            if(list.length>0){

                $.each(list, function(index, item){

                    var anchor_tags = item.find('a');

                    if(anchor_tags.length > 0){

                        $.each(anchor_tags, function(){
                            $(this).click(function(){
                                return false;
                            });
                        });
                    }

                    id = $(item).attr('id');

                    id = id.split('_');

                    //console.log(id);

                    id = id[4];

                    item.click(function(){
                        //alert(id);return false;
                        //var route = $.fn.get_page_type() + '/viewboatdetails/' + id + '/';
                        //var route = BASE_URL +  'browse/boats/viewboatdetails/' + id + '/';
                        window.location = route;

                    })
                
                });
            }

        };


        /**
         *    Function: get_boat_list_ids()
         */
        $.fn.get_boat_list_ids = function(options){
            options = $.extend({
                element: '#my_boat_list_title'
            },options);

            var element = $(options.element);

            if(element){

                element.click(function(){

                    var boat_list_ids = $.fn.get_cookies();

                    $.fn.browse_get_my_boat_list({
                        boat_ids:boat_list_ids
                    });
                
                });

            }

        };

        /**
         *    Function: view_boat_anchors()
         */
        $.fn.view_boat_anchors = function(options){
            options = $.extend({
                boat_row: '.details_boat_for_sale'//'div[class^=boat_row_footer]'
            },options);

            var boat_row = $(options.boat_row);
            
            var checkbox_pin = $(boat_row).find('input[type=checkbox]');

            // Add links to browse boat list rows details
            boat_row.each(function(index){

                var row = $(this);

                var pin_checkbox = row.find('input[type=checkbox]').eq(0);

                var get_id = $.trim(pin_checkbox.attr('class'));

                get_id = get_id.split('_');

                var boatID = get_id[3];

                var route = $.fn.get_page_type() + '/viewboatdetails/' + boatID + '/';
                //var route = BASE_URL +  'browse/boats/viewboatdetails/' + boatID + '/';

                $.each(row.find('a', '.boat_control'), function(index){
                    $(this).click(function(){
                        //console.log(this);
                        window.location = route;
                        return false;
                    });
                });

                $.each(row.find('.thumb_container').eq(0), function(index){
                    //console.log(this);
                    $(this).click(function(){
                        window.location = route;
                    });
                });

            });

        };

        /**
         *    Function: prompt_error_message()
         */
        $.fn.set_error_message = function(options){

            options = $.extend({
                error_containder: '#user_login_error_message',
                error_message: 'Your entered an invalid entry.'
            },options);

            var container = $(options.error_containder).find('p').eq(0);
            var error_message = options.error_message;

            if(container){
                container.addClass('error pad_error');
                container.text(error_message);

            }

        }

        /**
         *    Function: remove_error_message()
         */
        $.fn.remove_error_message = function(options){

            options = $.extend({
                error_containder: '#user_login_error_message',
                error_message: ''
            },options);

            var container = $(options.error_containder).find('p').eq(0);
            var error_message = options.error_message;

            if(container){
                
                container.text('');
                container.removeClass('error pad_error');
            }

        }


        /**
         *    Function: validate_member_form_fields()
         */
        $.fn.validate_member_form_fields = function(options){
            options = $.extend({
                button: '.createMyProfileButton',
                name: '#name',
                email: '#email',
                re_email: '#re_email',
                password: '#password',
                error_message: 'All fields are required.'
            },options);

            var fields = {};
            var error = [];
            fields.button = $(options.button);
            fields.name = $(options.name);
            fields.email = $(options.email);
            fields.re_email = $(options.re_email);
            fields.password = $(options.password);
            var error_message = $(options.error_message);


            $.each(fields, function(index, field){
                if(field.attr('value') == ''){
                    error.push(index);
                }
            });

            var result = {};

            if(error.length){
                
                result.error = 'true';
                result.message = error_message;
                return result;

            //console.log(result);

            }else{

                result.error = 'false';

                return result;

            }

        };

        $.fn.view_boat_anchors();

        /**
         *    Function: recaptcha_verify()
         */
        $.fn.recaptcha_verify = function(data_ip){  


            var captcha_challenge_field = $('#recaptcha_challenge_field');
            var captcha_responce = $('#recaptcha_response_field');

            if(!captcha_challenge_field){
                return;
            }        

            var challenge_field = captcha_challenge_field.attr('value');
            var challenge_response = captcha_responce.attr('value');
            var captcha_data = {
                'remoteip':data_ip, 
                'recaptcha_challenge_field':challenge_field, 
                'recaptcha_response_field':challenge_response
            }
            var button = $('.createMyProfileButton');

            $.ajax({
                type: 'POST',
                url: BASE_URL +  'member/securedatamanager',
                cache: false,
                data: captcha_data,
                success: function(copy){
                    if(parseInt(copy)===1){
                        
                        $.fn.remove_error_message();
                        button.removeClass('dim');
                        button.removeAttr('disabled');

                        button.click(function(){

                            var missing_form_values = $.fn.validate_member_form_fields();

                            if(missing_form_values.error === 'true'){

                                $.fn.set_error_message({
                                    'error_message':'All fields are required.'
                                });

                                return false;

                            }else{

                                $.fn.remove_error_message();

                            }

                        });

                    }else{

                        $.fn.set_error_message();
                        Recaptcha.reload();

                    }
                }
            });
        };

        /**
         *    Function: get_client_ip()
         */
        $.fn.get_client_ip = function(){
            $.getJSON("http://jsonip.appspot.com?callback=?",
                function(data){

                    $.fn.recaptcha_verify(data.ip);

                });
        };

        var captcha_challenge_field = $('#testRecaptchaText');

        if(captcha_challenge_field){
            captcha_challenge_field.click(function(){
                $.fn.get_client_ip();
                return false;
            });
        };

        /**
         *    Function: boatPhotosView()
         */
        $.fn.boatPhotosView = function(options){
            options = $.extend({
                mainImage: '.boatDetailsMainPhoto:eq(0)'
            },options);

            var boatPhotos = {};

            if($(options.mainImage)){

                $(options.mainImage).click(function(){

                    var boatID = $(this).attr('class').split('_');
                    boatID = boatID[boatID.length-1];
             
                    //boatPhotos = window.open(BASE_URL +  'browse/boats/viewboatphotos/' + boatID + '/','boatPhotos', 'width=650,height=650');

                    var boatPhotos = window.open(BASE_URL +  'browse/boats/viewboatphotos/' + boatID + '/',"BrowseBoatsPhotoGallery","toolbar=no, location=no, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=yes, copyhistory=yes, width=700, height=600");

                    if(boatPhotos){
                        boatPhotos.focus();
                    }
                
                });
            }

        };


	//if(UT.is_location_home_page()){$('#my_boat_list').live($(this).remove());}

        /**
         *    Function: easySlide()
         */
        $.fn.easySlide = function(){
            //Get our elements for faster access and set overlay width
            var div = $('div.sc_menu'),
            ul = $('ul.sc_menu'),
            ulPadding = 0;

            if(!div)return;
            
            //Get menu width
            var divWidth = div.width();

            //Remove scrollbars    
            div.css({
                overflow: 'hidden'
            });
            
            //Find last image container
            var lastLi = ul.find('li:last-child');
            
            //When user move mouse over menu
            div.mousemove(function(e){
                //As images are loaded ul width increases,
                //so we recalculate it each time
                var ulWidth = lastLi[0].offsetLeft + lastLi.outerWidth() + ulPadding;    
                var left = (e.pageX - div.offset().left) * (ulWidth-divWidth) / divWidth;
                div.scrollLeft(left);
            });
        };

        $.fn.easySlide();    

        /**
         *    Function: easySlidePhotos()
         */
        $.fn.easySlidePhotos = function(options){
            options = $.extend({
                mainImage: '.boatDetailsMainPhoto:eq(0)',
                elements: 'ul.sc_menu > li'
            },options);

            var mainImage = $(options.mainImage);
            
            var elements = $(options.elements);
            
            if(!elements.length){
                return;
            }

            $.each(elements, function(){
            
                $(this).mouseup(function(){
                
                    var thumbSrc = $(this).find('img').eq(0).attr('src');

                    var imageName = thumbSrc.split('=');

                    var newImageName = imageName[imageName.length-1];

                    var newImageName = BASE_URL +  'images/thumbnail.php?w=350&h=350&img=' + newImageName;

                    //var newImageName = BASE_URL +  'CodeIgniter/system/images/thumbnail.php?w=350&h=350&img=./upload/' + newImageName;

                    mainImage.attr('src', newImageName)
        
                });
            
            });

            if(mainImage){

                $.fn.boatPhotosView('17');

            }

        };

        $.fn.easySlidePhotos();

        /*
         |------------------------------
         | Control panel methods
         |------------------------------
         */

        var boatcontrol_index = /controlpanel/;
        var member_photo_gallery_path = BASE_URL + 'member/gallery/photos/';

        if(boatcontrol_index.test(location.pathname)){

            $.fn.managePhotoButton = function(){

                if($('#managePhotos')){

                    var managePhotos = $('#managePhotos');

                    managePhotos.click(function(){

                        var boatId = location.href;


                        boatId = boatId.split('/');


                        boatId = boatId[boatId.length-2];


                        if(parseInt(boatId, 10)){

                            var boatPhotoGallery = window.open(member_photo_gallery_path + boatId + '/',"boatPhotoGallery","toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=no, copyhistory=yes, width=800, height=700");
                            boatPhotoGallery.focus();

                        }

                        return false;

                    });
                }

            };

            $.fn.managePhotoButton(); // initialize button

            $.fn.updateMyBoatDetails = function(){
                if($('#createMyBoatAd').length > 0){
                    var buttonType = '#createMyBoatAd';
                    var updatePath = 'creatememberboatad';
                    
                }else if($('#updateMyBoatDetails').length > 0){
                    var buttonType = '#updateMyBoatDetails';
                    var updatePath = 'updateboatdetails';
                }

                var updateBoatButton = $(buttonType);

                if(updateBoatButton){

                    updateBoatButton.click(function(){

                        var input = $('#manageBoatDeatails :input').serializeArray();
                        var boat_data = {};

                        $.each(input, function(index, item){
                           
                            boat_data[item.name] = item.value;
                        
                        });

                        if(boat_data){
                            $.ajax({
                                type: 'POST',
                                url: BASE_URL +  'member/controlpanel/' + updatePath + '/',
                                cache: false,
                                data: boat_data,
                                success: function(results, text){
                                    if(updatePath === 'updateboatdetails'){
                                        if($.trim(results) == 'successful'){
                                            window.location.href=BASE_URL +  'member/controlpanel/viewboatdetails/' + boat_data.ID + '/';
                                        }
                                    }
                                    if(updatePath === 'creatememberboatad'){
                                        if (parseInt($.trim(results)) > 0){
                                            window.location.href=BASE_URL +  'member/controlpanel/viewboatdetails/' + results + '/';
                                        }
                                    }

                                }                    

                            });

                            return false;
                        }
                    }).ajaxStart(function(){
                        $.blockUI();
                    }).ajaxStop(function() {
                        setTimeout(function() {
                            $.unblockUI;
                        }, 1500);
                    });

                }
            };

            $.fn.updateMyBoatDetails();

            $.fn.deletMyBoat = function(){
                    
                var deleteBoatAdButton = $('#deleteMyBoatAd');

                if(deleteBoatAdButton){

                    deleteBoatAdButton.click(function(){
                        if(confirm('Confirm Deletion?')){

                            
                        }else{ 

                            return false; 

                        }

                        $.blockUI();

                        var input = $('#manageBoatDeatails :input').serializeArray();

                        var boat_data = {};

                        $.each(input, function(index, item){
                            if(item.name === 'ID'){
                                boat_data[item.name] = item.value;
                            }
                        });

                        boat_data = {
                            'ID': boat_data['ID']
                            };
                        if(boat_data){
                            var delete_ad = $.ajax({
                                type: 'POST',
                                url: BASE_URL +  'member/controlpanel/deleteboatad/',
                                cache: false,
                                data: boat_data,
                                dataType: 'text',
                                success: function(text, results){
                                    if (text.trim() == 'successful'){
                                        $.unblockUI;
                                        location.href=BASE_URL +  'member/controlpanel/';
                                    }
                                }                    
                            });
			    
                            return false;
                        }
                    });

                }

            };

            $.fn.deletMyBoat();

        };


        $.fn.timedCount = function(){

            t=setTimeout("$.fn.timedCount()",1000);

            //console.log($('#my_boat_list_title').length);

            if($(grid_box).length>0){
					
                clearTimeout(t);
                $(grid_box).eq(0).unblock();

            }
			
        }

        //$.fn.timedCount();

        // Method fn.hideCaptcha
        // Hide Captcha form

        $.fn.hideCaptcha = function(){

            var pathName = window.location.pathname;

            var hide_container = function(){

                if($('#name').attr('value') == '' || 
                    $('#email').attr('value') == '' ||
                    $('#re_email').attr('value') == ''){

                    $('div[class|="recaptiaDivChromeSafari"]').slideUp('fast');
                    $('div[class|="recaptiaDivChromeSafari"]').hide('fast');

                }

            }

            if(pathName === '/' ||
                pathName === '/bayarea/'){
                if($('div[class|="recaptiaDivChromeSafari"]')){
                    switch(pathName){
                        case '/':
                            hide_container();
                            break;
                        case '/bayarea/':
                            hide_container();
                            break;
                    }
                }
            }

        };

        $.fn.hideCaptcha();

        $.fn.showCaptcha = function(){
            var counAttempts = 0;
            var pathName = window.location.pathname;
            var emailElement = $('#email');
            var reEmailElement = $('#re_email');
            var emailMessageParent = $('#adduserprofile, p').filter(':eq(3)');
            var emailMatchMessageContainer = $('<span></span>')
                                             .attr({'id':'re_email_match',
                                             'class':'showEailMatchDefault'})
                                             .insertAfter(emailMessageParent)
                                             .hide();
            if(pathName === '/' ||
                pathName === '/bayarea/'){

                var change_status = function(){

                    if(reEmailElement.attr('value') !== '' &&
                       	reEmailElement.attr('value') === emailElement.attr('value') &&
						$(emailElement).attr('value').match(/^[^.].*@(?:[-a-z0-9]+\.)+[-a-z0-9]+$/)){
                        if(itemExists(emailMatchMessageContainer)){
                           var display_message = 'Email match is successful';
                           $(emailMatchMessageContainer).removeClass('showEailMatchProgress');
                       	   $(emailMatchMessageContainer).text(display_message)
                           .addClass('showEailMatchSuccess')
                           .show('fast');
                        }
                    }else{
					    counAttempts ++;
                        var display_message = 'This will show successful when you have a match.';
                       	$(emailMatchMessageContainer).removeClass('showEailMatchSuccess');

                        if(counAttempts === 1){
                        	$(emailMatchMessageContainer).addClass('showEailMatchProgess');
                       	    $(emailMatchMessageContainer).text(display_message)
                            .addClass('showEailMatchProgress')
                            .animate({'height':'show'},{'duration':'slow'});
						}else{
                        	$(emailMatchMessageContainer).addClass('showEailMatchProgress')
                            .text(display_message)
                            .show('fast');
						}
                    }
                }

                reEmailElement.bind({
						
                    keyup: function(){
                        change_status();
                    },
                    focus: function(){
                        change_status();
                    },
                    blur: function(){
                        change_status();
                    }
					
                });

            }

        };

        $.fn.showCaptcha();

        // Boat Details Corousel slide show

        var pathName = window.location.pathname;

        var boatDetails = /viewboatdetails/;

        if(pathName.match(boatDetails)){

            $('#mycarousel').jcarousel({
                scroll: 4, 
                visible:4 
            });

        }

        // Method fn.contact_owner
        // Contact owner show Captcha mechanism

        $.fn.contact_owner = function(options){
            options = $.extend({
                contact_owner_container: '.contactOwner'
            },options);

            var pathName = window.location.pathname;
            var boatDetails = /viewboatdetails/;
            var captchaContainer = $('div[class|="recaptiaDivChromeSafari"]');

            if(pathName.match(boatDetails)){

                captchaContainer.slideUp('fast');

                var showCaptcha = function(){
				
                    var status = $.fn.validateEmailAddress($('#email_to').attr('value'));

                    if(status === true){
                        if (captchaContainer.is(":hidden")){
                            captchaContainer.slideDown('slow');
                        }
                    }else if(status === false){
                        if (captchaContainer.is(":hidden") === false){
                            captchaContainer.slideUp('slow');
                        }
                    }

                }

                $('#email_to').bind({
					
                    keyup: function(){

                        showCaptcha();

                    },
                    focus: function(){

                        showCaptcha();
                    },
                    blur: function(){

                        showCaptcha();

                    }
				
                });

            }

            var contact_owner_container = $(options.contact_owner_container);

            var contact_form = contact_owner_container.find('form').eq(0);

            // If contact owner form doesn't exist, exit.

            if(contact_owner_container.length < 1){
                return false;
            }
            contact_form.submit(function(){

                var obj = {
                    'email_to':contact_form.find("input[name='email_to']").val(),
                    'email_message':contact_form.find("textarea[name='email_message']").val(),
                    'email_boat':contact_form.find("input[name='emailBoat']").val(),
                    'email_owner':contact_form.find("input[name='custId']").val()
                    };

                contact_form.validate({
                    rules: {
                        email_to: {
                            required: true,
                            email: true
                        }
                    }
                });

                //console.log(obj);

                $.ajax({
                    type: 'POST',
                    data: obj,
                    url: BASE_URL +  'member/contactmember',
                    success: function(contact_data){

                        if(contact_data == 'email:sent'){
						
                            contact_form.find("input[name='email_to']").val('');
                            contact_form.find("textarea[name='email_message']").val('');
                            contact_form.find("input[name='recaptcha_response_field']").val('');

                            captchaContainer.slideUp('slow');

                            $.growlUI('<span class="notificationTitle">Owner Notification</span>', '<span class="notificationText">Your contact was successful.</span>');
					
                        }
                    }
                });

                return false;
            });

        };

        $.fn.contact_owner();

        $.fn.loading_image = function(css_status){
			var element = $('#facebook_loading_image');
            if(element.length){
                if(css_status == 'show'){
					element.removeClass('hide');
				}else{
				    element.addClass('hide');
                }
            }
		};

	    $.fn.create_error_message = function(error_message, container_id){
		    var error_message_string = '<div id="'+container_id+'" class="center black error pad_error">' +
							 error_message +
							'</div>';

		    return error_message_string;
        };

        $.fn.change_image = function(){
            var captcha_image = $('#captcha');
            $.fn.loading_image('show');
            if(captcha_image.length){
                var captcha_image_src_url = BASE_URL + 'images/captcha/simplecaptcha.php?' + Math.random();
                captcha_image.attr('src', captcha_image_src_url);

                captcha_image.load(function(){
                    $.fn.loading_image('hide');
                });
            }
        };

        $.fn.cool_php_captcha_driver = function(){
			var cool_php_captcha_container = $('#cool_php_captcha_container');
            var cool_php_captcha_url = BASE_URL + 'images/captcha/validatecaptcha.php';
            var test_cool_php_captcha_form = $('#cool_php_captcha_add_user');
            var cool_php_captcha_user_message = $('#cool_php_captcha_user_message');

			// Set user message container width
			cool_php_captcha_user_message.addClass('dispalyBlock fullWidth');

            // Populate default captcha image
            var captcha_image = $('#captcha');

            var change_image = function(){
                if(captcha_image.length){
                    var captcha_image_src_url = BASE_URL + 'images/captcha/simplecaptcha.php?' + Math.random();
                    captcha_image.attr('src', captcha_image_src_url);

				    captcha_image.load(function(){
						$.fn.loading_image('hide');
					});
                }
            }

            $.fn.change_image();

            // Add event to change Captcha text
            var change_captcha_image = $('#change-image');

            if(change_captcha_image.length){
                change_captcha_image.click(function(e){
                    $.fn.change_image();
                    return false;
                });
            }

            if(test_cool_php_captcha_form){
                test_cool_php_captcha_form.submit(function(e){
                    var captcha_field = $('#cool_php_captcha');
                    var captcha_string = captcha_field.attr('value');

                    if(captcha_string == ''){
                        var message = $.fn.create_error_message('This test field cannot be empty', 'add_profile_message');
                        var error_message_container = $('#add_profile_message'); 
                        if(error_message_container){
                            error_message_container.remove();
                        }
                        $(message).fadeIn('slow').appendTo(cool_php_captcha_user_message);
						
						return false;
                    }
                    $.fn.loading_image('show');
                    var response = $.ajax({
                        type: 'POST',
                        url: cool_php_captcha_url,
                        data: {captcha: captcha_string},
						global: false,
						async:false
                    }).responseText;

                    $.fn.loading_image('hide');
					pattern =/invalid/i;
					if(pattern.test(response)){
                        $.fn.change_image();
						var message = $.fn.create_error_message('The text you entered didn\'t match the ' +
                                                                'security check. Please try again.', 'add_profile_message');
						var error_message_container = $('#add_profile_message'); 
						if(error_message_container){
							error_message_container.remove();
						}
						$(message).fadeIn('slow').appendTo(cool_php_captcha_user_message);

                        return false;
					}
                });
            }
        };

        $.fn.cool_php_captcha_driver();

    }); // End $(document).ready function
})(jQuery);

