MarkerFields = {
    'Location' : {
        'customInsert' : function( record, id ) {
            var html;
            html = '<div class="MMinfoboxaddress">';
            html += '<img style="margin-bottom: 10px;" src="i/o2logo.png" />';
            html += '<div><span class="MMrecordName">' + record['torex_branch_name'].toLowerCase() + '</span><br />';
            html += record['consolidated_address'] + '<br /><br /><span class="tel"><strong>Phone:</strong> ' + record.voicephone + '</span>';
            html += '<br /><span class="tel"><strong>Store Code:</strong> ' + record['torex_branch_no'] + '</span></div>';
            html += '<div class="links">';
            html += '<a href="#" onclick="GetDirectionsFromInfoBox( this, ' + ( id - 1 ) + ' ); return false;">Get directions</a>';
            html += '<form class="directions" action="" method="post" style="display: none">';
            html += '<label for="infoboxDir' + id + '">';
            html += 'From';
            html += '<input class="text" type="text" value="" id="infoboxDir' + id + '" />';
            html += '</label>';
            html += '<input type="image" src="i/go_button.png" class="submit" />';
            html += '</form>';
            html += '<a href="#" onclick="CreateMobileIframe( ' + record.id + ' ); return false;">Send to mobile</a>';
            html += '<a href="#" onclick="ZoomToLocation( ' + ( id - 1 ) + ' ); return false;">Go to this location</a>';
            html += '</div>';
            html += '</div>';
            return html;
        }
    },
    'Photo' : {
        'customInsert' : function() {
            var record = arguments[0];
            if ( record.photo && record.photo != 'no' ) {
                return '<img class="MMinfoboxphoto" src="' + record.photo + '" />';
            }
        }
    },
    'Extra info' : {
        'customInsert' : function() {
            var record = arguments[0], recorddays, mydays, html = '';
            recorddays = ['mon', 'tue', 'wed', 'thur', 'fri', 'sat', 'sun'];
            mydays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
            html = '<span class="MMdaySpan">Opening Times</span><br /><br />';
            for ( var i = 0, j = mydays.length; i < j; i++ ) {
                html += '<span class="MMdaysRoot MMdays' + recorddays[i] + '">';
                html += '<span class="MMdaySpan">' + mydays[i] + ':&nbsp;</span>';
                html += '<span class="MMdayHoursSpan">' + record[recorddays[i] + 'open'] + '&nbsp;-&nbsp;' + record[recorddays[i] + 'close'] + '</span>';
                html += '</span><br />';
            }
            return html;
        }
    }
}

HtmlFields = {
    'name' : { 'element' : 'div', 'fieldname' : 'torex_branch_name' },
    'street' : { 'element' : 'span', 'fieldname' : 'street' },
    'town' : { 'element' : 'span', 'fieldname' : 'street3' },
    'postcode' : { 'element' : 'span', 'fieldname' : 'pc' },
    'phone' : { 'element' : 'span', 'fieldname' : 'voicephone' },
    'customInsert' : function() {
        return '<div class="MMresultid"><span class="MMresultidspan">' + arguments[1] + '</span></div>';
    },
    'customOnclick' : function( id ) {
        var record, marker;
        record = Callbacks.records[id];
        marker = Callbacks.markers[id];
        marker.openInfoBox();
        UpdateRouting( id );
    },
    'addOnClick' : true
}

RoutingFields = {
    'customInsert' : function( step, id ) {
        var road, instruction, element, marker;
        if ( step.road_name && step.road_number ) {
            road = ' ' + step.road_name + ' ( ' + step.road_number + ' ) ';
        } else if ( step.road_name ) {
            road = ' ' + step.road_name + ' ';
        } else if ( step.road_number ) {
            road = ' ' + step.road_number + ' ';
        }
        element = '<span><strong>' + id + '.&nbsp;</strong>' + step.instruction;
        if ( road ) {
            element += road + 'for <strong>' + step.distance.miles + '</strong> miles</span>';
        } else {
            element += '</span>';
        }
        var icon = MM_DEFAULT_ICON.copy();
        icon.cssClass = 'MMMarker MMRouteMarker';
        marker = Page.map.createMarker( step.start_point, { text: id, icon: icon } );
        marker.setInfoBoxContent( element );
        routeMarkers.push( marker );
        return element;
    },
    'addOnClick' : true,
    'customOnclick' : function( id ) {
        window.routeMarkers[id].openInfoBox();
    }
}

UpdateRouting = function( id ) {
    var name, todirections = document.getElementById( 'directions_to' ), point;
    point = Callbacks.records[id].point;
    name = Callbacks.records[id].torex_branch_name.toLowerCase();
    todirections.value = name;
    todirections.point = point;
}

GetDirectionsFromInfoBox = function( o, id ) {
    var form = o.parentNode.getElementsByTagName( 'form' )[0];
    if ( form.style.display == 'none' ) {
        form.style.display = 'block';
        var directions_from = document.getElementById( 'directions_from' );
        form.onsubmit = function() {
            directions_from.value = this.getElementsByTagName( 'input' )[0].value;
            directions_from.form.onsubmit();
            return false;
        }
    } else {
        form.style.display = 'none';
        form.onsubmit = function() {
            return false;
        }
    }
}

ZoomToLocation = function( id ) {
    Page.map.goToPosition( new MMLocation( Callbacks.records[id].point, 17 ) );
}

CreateMobileIframe = function( id ) {
    var iframe, link, div = document.createElement( 'div' );
    link = 'http://clients.multimap.com/clients/content.cgi?client=o2_sf4m&page=mm2m_submit&url=';
    link += escape( 'http://clients.multimap.com/clients/browse.cgi?client=o2_sf4m&f_id=' + id );
    iframe = '<iframe src="' + link + '" class="MMmobileIframe" frameborder="0" width="100%" height="100%"></iframe>';
    div.innerHTML = iframe;
    return DisamHandler.populateDisam( div );
}
