
var current_wind = null;
var max_shortlist = 10;

function addslashes( str ) {
    str = str.replace( /\\/g, '\\\\' );
    str = str.replace( /\'/g, '\\\'' );
    str = str.replace( /\"/g, '\\"' );
    str = str.replace( /\0/g, '\\0' );
    return str;
}

function get_quote() {
    var link = $( 'get_quote_lightbox' );
    myLightWindow.activate( null, link );
}

function viewlistingmap( url, wind_param ) {

    if ( ( current_wind == null ) || ( current_wind.closed ) ) {
        current_wind = window.open( 'http://www.lawyerlocator.co.uk/' + url, 'mywindow', wind_param );
    }
    else {
        current_wind.focus();
        current_wind.location.href = 'http://www.lawyerlocator.co.uk/' + url;
    }
}

function clear_shortlist( firms ) {

    var firm_basket = $( 'firm_basket' );
    var add_shortlist = '<div class=\"button_s162_29 button_h29\"><ul><li><a class=\"no_underline\" title=\"Add [[firm_name_unescaped]] to Shortlist\" href=\"javascript: void(0);\" onclick=\"_gaq.push([\'_trackEvent\', \'Buttons\', \'shortlist\', \'[[firm_name_friendly]]\']); return add_solicitor( \'[[firm_id]]\', \'[[firm_name]]\', \'[[firm_name_friendly]]\' );\"><span>Add to Shortlist</span></a></li></ul></div>';

    // We should be able to do this using JavaScript alone, but for some reason, I can't pick up all the child nodes
    // Therefore, I'm having to pass back an array of firm ids from stage3n to clear the shortlisted items

    for ( var i=0; i<firms.length; i++ ) {

        var firm_id = firms[i];

        for ( var j=0; j<all_listing_ids.length; j++ ) {
            if ( all_listing_ids[j] == firm_id ) {
                var firm_name = all_listing_names[j];
                var firm_name_friendly = all_listing_names_friendly[j];
                break;
            }
        }

        remove_solicitor( firm_id, firm_name, firm_name_friendly );
    }
}

function replace_firm( string, firm_id, firm_name, firm_name_friendly ) {

    var firm_name_unescaped = firm_name.replace( '\\', '' );

    var new_string = string.replace( /\[\[firm_id\]\]/g, firm_id );
    new_string = new_string.replace( /\[\[firm_name\]\]/g, addslashes( firm_name ) );
    new_string = new_string.replace( /\[\[firm_name_unescaped\]\]/g, firm_name_unescaped );
    new_string = new_string.replace( /\[\[firm_name_friendly\]\]/g, firm_name_friendly );

    return new_string;
}

function add_solicitor( firm_id, firm_name, firm_name_friendly ) {

    var shortlist = $( 'shortlist_box_'+firm_id );

    if ( shortlist ) {
        var remove_shortlist = '<div class=\"button_s162_29 button_h29\"><ul><li><a class=\"no_underline\" title=\"Remove [[firm_name_unescaped]] from Shortlist\" href=\"javascript: void(0);\" onclick=\"return remove_solicitor( \'[[firm_id]]\', \'[[firm_name]]\', \'[[firm_name_friendly]]\' );\"><span>Remove from Shortlist</span></a></li></ul></div>';
        shortlist.innerHTML = replace_firm( remove_shortlist, firm_id, firm_name, firm_name_friendly );
    }

    if ( !in_basket( firm_id ) ) {

        var url = 'http://www.lawyerlocator.co.uk/lawyer/basket/short_list_ajax/'+firm_id;

        new Ajax.Request(url, { method: 'get',
                                asynchronous: 1,
                                onSuccess: process_add( firm_id, firm_name, firm_name_friendly ),
                                onFailure: function(transport) { alert(transport.responseText); }
                              }
                        );
    }

    return true;
}

function request_consultation( firm_id, firm_name, firm_name_friendly ) {
    add_solicitor( firm_id, firm_name, firm_name_friendly );
    get_quote();
}

function remove_solicitor( firm_id, firm_name, firm_name_friendly ) {

    var shortlist = $( 'shortlist_box_'+firm_id );

    if ( shortlist ) {
        var add_shortlist = '<div class=\"button_s162_29 button_h29\"><ul><li><a class=\"no_underline\" title=\"Add [[firm_name_unescaped]] to Shortlist\" href=\"javascript: void(0);\" onclick=\"_gaq.push([\'_trackEvent\', \'Buttons\', \'shortlist\', \'[[firm_name_friendly]]\']); return add_solicitor( \'[[firm_id]]\', \'[[firm_name]]\', \'[[firm_name_friendly]]\' );\"><span>Add to Shortlist</span></a></li></ul></div>';
        shortlist.innerHTML = replace_firm( add_shortlist, firm_id, firm_name, firm_name_friendly );
    }

    var url = 'http://www.lawyerlocator.co.uk/lawyer/basket/unshort_list_ajax/'+firm_id;

    new Ajax.Request(url, { method: 'get',
                            asynchronous: 1,
                            onSuccess: process_remove( firm_id ),
                            onFailure: function(transport) { alert(transport.responseText); }
                          }
                    );

    return true;
}

function in_basket( firm_id ) {

    var firm_basket = $( 'firm_basket' );

    if ( firm_basket ) {

        var firm_basket_id = 'firm_basket_'+firm_id;
        var firm_basket_firm = $( firm_basket_id );

        if ( firm_basket_firm ) {
            return true;
        }
    }

    return false;
}

function error_set() {
    alert( "There seems to be a problem with the basket, please try again later." );
}

function process_add( firm_id, firm_name, firm_name_friendly ) {

    var firm_basket = $( 'firm_basket' );

    if ( firm_basket ) {

        var firm_div = document.createElement('div');

        firm_div.setAttribute('id','firm_basket_'+firm_id);

        var shortlist_del = '<div id=\"firm_basket_[[firm_id]]\" style=\"width: 155px; float: left; margin-bottom: 3px; padding: 2px; border: 1px solid #eeeeee;\">[[firm_name_unescaped]]<a href=\"javascript: void(0);\" style=\"border-bottom: none;\" onclick=\"return remove_solicitor( \'[[firm_id]]\', \'[[firm_name]]\', \'[[firm_name_friendly]]\' );\"><img style=\"margin-left: 3px;\" alt=\"Remove [[firm_name_unescaped]] from Shortlist\" title=\"Remove [[firm_name_unescaped]] from Shortlist\" src=\"/img/del.gif\"></a></div>';
        firm_div.innerHTML = replace_firm( shortlist_del, firm_id, firm_name, firm_name_friendly );

        firm_basket.appendChild( firm_div );

        var no_shortlisted_firms_box = $( 'no_shortlisted_firms_box' );

        if ( no_shortlisted_firms_box ) {
            no_shortlisted_firms_box.innerHTML = '';
            no_shortlisted_firms_box.id = 'no_shortlisted_firms_box_DUMMY';
        }

        var child_nodes = firm_basket.childNodes;

        // If this is the first firm being added, then add the button

        if ( child_nodes.length == 1 ) {
            no_shortlisted_firms_box.innerHTML += '<div class=\"button_s160_34_orange button_h34\" title=\"Get Quotes\" style=\"clear: both; height: 40px; padding-left: 0px; padding-top: 12px;\"><ul><li><a class=\"no_underline\" href=\"javascript: void(0);\" onclick=\"_gaq.push([\'_trackEvent\', \'Buttons\', \'shortlist-consultation\']); return get_quote();\"><span>Get Quotes</span></a></li></ul><a class=\"no_underline no_display lightwindow\" id=\"get_quote_lightbox\" href=\"/lawyer/submit_my_case/stage1n\" params=\"lightwindow_width=600, lightwindow_height=400, lightwindow_loading_animation=false\" title=\"Get Quotes\"></a></div>';
        }
    }

    process_full( true, false );
}

function process_remove( firm_id ) {

    var firm_basket = $( 'firm_basket' );

    if ( firm_basket ) {

        var firm_basket_firm = $( 'firm_basket_'+firm_id );

        if ( firm_basket_firm ) {
            firm_basket.removeChild( firm_basket_firm );
        }

        var child_nodes = firm_basket.childNodes;

        if ( child_nodes.length == 0 ) {
            var no_shortlisted_firms_box = $( 'no_shortlisted_firms_box_DUMMY' );
            if ( no_shortlisted_firms_box ) {
                no_shortlisted_firms_box.innerHTML = '<p><strong><span id=\"no_shortlisted_firms\">Empty</span></strong></p><p class=\"font_4\">To add, click <span style=\"font-weight: bold;\">Add to Shortlist</span> on your chosen firms.</p>';
                no_shortlisted_firms_box.id = 'no_shortlisted_firms_box';
            }
        }
    }

    process_full( false, true );
}

function process_full( do_add, do_remove ) {

    var firm_basket = $( 'firm_basket' );

    if ( firm_basket ) {

        var child_nodes = firm_basket.childNodes;

        if ( do_add ) {

            if ( child_nodes.length >= max_shortlist ) {

                for ( var i=0; i<all_listing_ids.length; i++ ) {

                    var firm_basket_id = 'firm_basket_'+all_listing_ids[i];

                    if ( !document.getElementById( firm_basket_id ) ) {

                        var shortlist = $( 'shortlist_box_'+all_listing_ids[i] );
                        var request = $( 'request_box_'+all_listing_ids[i] );

                        if ( shortlist ) {
                            shortlist.innerHTML = '<div class=\"button_s162_29_purple button_h29 disabled_noalpha_nowait\"><ul><li><a title=\"Shortlist Full\" alt=\"Shortlist Full\"><span>Shortlist Full</span></a></li></ul></div>';
                        }

                        if ( request ) {
                            request.innerHTML = '';
                        }
                    }
                }
            }
        }

        if ( do_remove ) {

            if ( child_nodes.length == ( max_shortlist - 1 ) ) {

                for ( var i=0; i<all_listing_ids.length; i++ ) {

                    var firm_basket_id = 'firm_basket_'+all_listing_ids[i];

                    if ( !document.getElementById( firm_basket_id ) ) {

                        var shortlist = $( 'shortlist_box_'+all_listing_ids[i] );
                        var request = $( 'request_box_'+all_listing_ids[i] );

                        var firm_id = all_listing_ids[i];
                        var firm_name = all_listing_names[i];
                        var firm_name_friendly = all_listing_names_friendly[i];

                        if ( shortlist ) {
                            var add_shortlist = '<div class=\"button_s162_29 button_h29\"><ul><li><a class=\"no_underline\" title=\"Add [[firm_name_unescaped]] to Shortlist\" href=\"javascript: void(0);\" onclick=\"_gaq.push([\'_trackEvent\', \'Buttons\', \'shortlist\', \'[[firm_name_friendly]]\']); return add_solicitor( \'[[firm_id]]\', \'[[firm_name]]\', \'[[firm_name_friendly]]\' );\"><span>Add to Shortlist</span></a></li></ul></div>';
                            shortlist.innerHTML = replace_firm( add_shortlist, firm_id, firm_name, firm_name_friendly );
                        }

                        if ( request ) {

                            var add_request = '<div class=\"button_s162_29_orange button_h29\"><ul><li><a class=\"no_underline\" title=\"Get a Quote from [[firm_name_unescaped]]\" href=\"javascript: void(0);\" onclick=\"_gaq.push([\'_trackEvent\', \'Buttons\', \'listing-consultation\', \'[[firm_name_friendly]]\']); return request_consultation( \'[[firm_id]]\', \'[[firm_name]]\', \'[[firm_name_friendly]]\' );\"><span>Get a Quote</span></a></li></ul></div>';
                            request.innerHTML = replace_firm( add_request, firm_id, firm_name, firm_name_friendly );

                            // Let's see if there's some sub-request id's

                            var request_individual = $( 'request_box_'+all_listing_ids[i]+'_0' );

                            if ( request_individual ) {
                                // Check for up to 1000 individuals, just in case it's a big firm!
                                for ( var j=0; j<1000; j++ ) {
                                    var request_individual = $( 'request_box_'+all_listing_ids[i]+'_'+j );
                                    if ( request_individual ) {
                                        request_individual.innerHTML = request.innerHTML;
                                    }
                                    else {
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

