MarkerFields = {
    'Location' : {
        'customInsert' : function( oRecord, iIndex ) {
            var sStoreName = oRecord.store_name;
            var html = [];
            html.push( '<div class="MMinfoboxRoot">' );
            html.push( '<h4 class="MMinfoboxstore_name">' + sStoreName + '</h4>' );
            if ( oRecord.street_name )
                html.push( '<span class="MMinfoboxstreet_name">' + oRecord.street_name.toCamelCase() + '</span>' );
            if ( oRecord.address_2 )
                html.push( '<span class="MMinfoboxaddress_2">' + oRecord.address_2.toCamelCase() + '</span>' );
            if ( oRecord.address_3 )
                html.push( '<span class="MMinfoboxaddress_3">' + oRecord.address_3.toCamelCase() + '</span>' );
            if ( oRecord.town )
                html.push( '<span class="MMinfoboxtown">' + oRecord.town.toCamelCase() + '</span>' );
            if ( oRecord.county )
                html.push( '<span class="MMinfoboxcounty">' + oRecord.county.toCamelCase() + '</span>' );
            if ( oRecord.pc )
                html.push( '<span class="MMinfoboxpc">' + oRecord.pc + '</span>' );
            html.push( '<a href="#" onclick="moreDetails( ' + iIndex + ' ); return false;">More details</a>' );
            html.push( '</div>' );
            return html.join( '' );
        }
    }
}

HtmlFields = {
    'customInsert' : function( record, id ) {
        var sStoreName =  record.store_name;
        var label=id;
        if (id > 9) {
        	label=id-10;
        }
        var cClass = ( id.isOdd() ) ? ' odd' : ' even';
        var html = '';
        html += '<tr class="MMTableRoot' + cClass + '">';
        html += '<td class="MMResultFragment MMName">';
        html += '<a class="MMResultName" href="javascript: GoToStore( ' + id + ' );">' + ( label + 1 ) + '.&nbsp;' + sStoreName + '</a>';
        html += '</td>';
        html += '<td class="MMResultFragment MMDistance">';
        html += '<span class="MMResultDistance">' + record.distance.miles + ' miles</span>';
        html += '</td>';
        html += '<td class="MMResultFragment MMAddress">';
 
        html +='<span class="MMResultAddress" style="clear:right;">';
        if ( record.street_name )
            html +=  record.street_name.toCamelCase() + ',&nbsp;';
        if ( record.address_2 )
            html +=  record.address_2.toCamelCase() + ',&nbsp;';
        if ( record.address_3 )
            html +=  record.address_3.toCamelCase() + ',&nbsp;';
        if ( record.town ) {
            html += '<span class="MMResultAddress">' + record.town.toCamelCase() + ',&nbsp;';
        } else {
                html += '<span class="MMResultAddress">';    	
        }
				if ( record.pc )
						html +=  record.pc +'.&nbsp;&nbsp;';

        if ( record.telephone )
            html +=  record.telephone ;
        if ( record.membership_points.toLowerCase() == "yes") {
            html +=  '<br /><img src="i/membership.jpg" />' ;
        }
        html +='</span></td>';
          
        html += '<td class="MMResultFragment MMAddress"><div class="more">';
        html += '<a class="MMMoreDetails" href="javascript: moreDetails( ' + id + ' );"></a>';
   		if ( record.website )    
     		html += '<a target="blank" href="' + record.website + '" title="Branch Website" class="website"> </a>' ;   
  
        html +='</div>';        			
            			
        html += '</td>';
        html += '</tr>';
        return html;
    }
}

function GoToStore( id ) {
	 var new_point=new GLatLng(Callbacks.records[id].point.lat, Callbacks.records[id].point.lon);
    Page.oMap.setCenter(new_point, 13);
    Callbacks.markers[id].openInfoWindowHtml( Callbacks.htmls[id]);
}
function createRoute( o, id, bFrom ,funeraltype) {
    var input = o.parentNode.getElementsByTagName( 'input' );
    input = ( bFrom ) ? input[2] : input[0];
    new MMHelperText( input, 'Address, Town or Postcode' );
    input.form.style.display = ( input.form.style.display == 'block' ) ? 'none' : 'block';
    input.form.onsubmit = function() {
        var sQuery, oStart, oEnd;
        if ( input.MMHelperText )
            sQuery = input.MMHelperText.validateElement();
        else
            sQuery = input.value;
        oStart = ( bFrom ) ? Callbacks.records[id].point :  sQuery ;
        oEnd = ( !bFrom ) ? Callbacks.records[id].point : sQuery;
        MMRouteSearch.prototype.requestRoute( oStart, oEnd );
        return false;
    }
}
function moreDetails( id ) {

	var funeral_type;
	if (id > 9) {	
		document.getElementById('funeral_type').value="private";
		funeral_type="privatefunerals";
		id=id-10;
    var record = OtherCallbacks.records[id], aHtml = [];
   } else {
     var record = Callbacks.records[id], aHtml = [];  	
  }
    var sStoreName =  record.store_name;
     aHtml.push( '<table cellspacing="0" cellpadding="0" class="MMresultRoot MMStoreDetails '+funeral_type+'"><tr class="MMTableRoot"><td class="MMResultFragment MMName">' ); 	
    aHtml.push( '<h4 class="MMStoreName"><span>' + sStoreName + '</span></h4>' );
    aHtml.push( '<span class="MMResultAddress">' + record.street_name + ',&nbsp;</span>' );
    aHtml.push( '<span class="MMResultAddress">' + record.town + '</span>' );
	if ( record.pc )
		aHtml.push( '<span class="MMResultAddress">' + record.pc + '</span><br />' );
    aHtml.push( '<span class="MMResultAddress">' + record.telephone + '</span><br />' );
       aHtml.push('<div id="satnav"><span class="tomtom"><a href="http://addto.tomtom.com/api/home/v2/georeference?action=add&amp;apikey=e1ddb372-2008-48ea-804a-bf50e1d4812a&amp;name=' + sStoreName + '&amp;latitude=' + record.point.lat + '&amp;longitude=' + record.point.lon + '&amp;source=http%3A//www.co-operative.coop/findus" target="_blank"><img src="/client/coop/i/addtotomtom-small.gif" alt="Add-To-TomTom" border="0"></a></span>');
  aHtml.push('<span class="garmin"><a href="http://my.garmin.com/locate/savePOI.htm?action=redirect&amp;a_key=3ff391258cf40f11a7c956091afee94c&amp;name=' + sStoreName + '&amp;street=' + record.street_name + '&amp;city=' + record.town + '&amp;postCode='+record.pc+'&amp;country=UK&amp;notes=From+The+Co-operative&amp;attribution=NAVTEQ&amp;lat=' + record.point.lat + '&amp;long=' + record.point.lon + '&amp;source=http%3A%2F%2Fwww.co-operative.coop/findus" target="_blank"><img src="/client/coop/i/garmin.gif" alt="Add-To-Garmin" border="0"></a></span></div>');
        aHtml.push( '<span class="MMResultAddress">Add to your Sat Nav:</span><br /></td>' );
		
    aHtml.push( '<td class="MMResultFragment MMOpeningHours"><h4><span>Opening Hours</span></h4>' );
    var oField;
    if (Days) {
	    for ( var i = 0; i < Days.Fields.length; i++ ) {
	        oField = Days.Fields[i];
	        aHtml.push( '<span class="MMTimesWrapper" style="margin: 0; padding: 0;;height:20px;">' );
	        aHtml.push( '<span class="MMDay">' + Days.Names[i] + '</span><span class="MMHours">' );
	        aHtml.push( record[oField + '_open'] ? record[oField + '_open'] : '' );
	        aHtml.push( record[oField + '_closed'] ? ' - ' + record[oField + '_closed'] : '' );
	        aHtml.push( '</span></span>' );
	    }
	}
    aHtml.push( '</td><td class="MMResultFragment MMStoreFeatures"><div class="furtherInfo" style="min-height:229px;"><h4><span>Further Information</span></h4>' );
 if ( record.society )
    aHtml.push('<span class="MMSociety">' + record.society + '</span>' );
    for ( var i = 0; i < Features.Fields.length; i++ ) {
			if ( record[Features.Fields[i]] ) {
    			record[Features.Fields[i]]=trim(record[Features.Fields[i]]);
    		}
            if ( record[Features.Fields[i]] && record[Features.Fields[i]] != '') {
            	if  (record[Features.Fields[i]].toLowerCase() !='no' )  {
            		if ( record[Features.Fields[i]].toLowerCase() !='n/a') {

            		aHtml.push( '<span class="MMFeatureName">' + Features.Names[i] + '</span>' );
            		}
            	}
            	
           }
    }
     if ( record.home_delivery.toLowerCase() == "yes") {
           aHtml.push( '<span class="MMFeatureName"><a href="http://www.co-operative.coop/food/local-stores/home-delivery/?id=67224" title="Home Delivery" target="_parent">Home Delivery - find out more</a></span>' );  
    }
    aHtml.push( '</td></tr><tr ><td class="MMResultFragment MMActions" style="padding-left:15px;">');

 	if ( record.website )    
     aHtml.push( '<a target="blank" href="' + record.website + '" title="Branch Website"  class="MoreWebsite" style="margin-right:5px;"> </a>' );
    aHtml.push( '<a href="javascript: void( 0 );" onclick="createRoute( this, ' + id + ', false ,true); " class="route" > </a>' );
    aHtml.push( '<form style="display: none;" action="" method="post" style="margin:0;padding:0;"><input type="text" class="MMTextField" value="" onblur="MMHelperText.onElementBlur();" onfocus="MMHelperText.onElementFocus();"><input type="submit" value="" class="getDirections" style="width:110px;float:right;" /></form></td>' );
    
    aHtml.push( '<td class="MMActions"></td><td class="MMResultFragment" style="padding-left:15px;">');
    aHtml.push( '<a href="javascript: window.print();" class="print" style="margin-right:5px;" > </a>' );
    aHtml.push( '<a href="javascript: RecallSearchResults();" class="back"  > </a>' );
    aHtml.push( '</td></tr></table>' );
    MMElement.prototype.addCssClass( 'MoreDetails', document.body );
    var new_point=new GLatLng(record.point.lat, record.point.lon);
    Page.oMap.setCenter(new_point, 15);
    Callbacks.htmlResults.innerHTML = aHtml.join( '' );
//    DisplayBottom();
}
function DisplayBottom() {
    var oElement = Callbacks.htmlResults.firstChild.getElementsByTagName( 'div' );
    for ( var i = 0; i < oElement.length; i++ ) {
        if ( MMElement.prototype.hasCssClass( 'MMStoreLinksWrapper', oElement[i] ) ) {
            oElement = oElement[i];
            break;
        }
    }
    oElement.style.bottom = '-' + ( oElement.offsetHeight ) + 'px';
    oElement.style.position = 'relative';
}
function RecallSearchResults() {
    MMElement.prototype.removeCssClass( 'MoreDetails', document.body );
    Page.LocationSearch.onFormSubmit();
}
function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
