All pastes #833511 Raw Edit

Mine

public text v1 · immutable
#833511 ·published 2007-12-27 09:28 UTC
rendered paste body
<cfcomponent output="no" extends="streets.geo">

	<cffunction name="getMarkerByID" access="remote" returntype="query">
		<cfargument name="markerID" type="numeric" default="0" hint="Marker ID" displayname="The Marker ID to lookup">
		<cfset var getMarkerByIDReturnQuery = "" />

			<CFQUERY NAME="getMarkerByIDReturnQuery" DATASOURCE="streets">
				SELECT 
					markers.id,
					markers.uuid,
					markers.view,
					markers.markerdetails,
					markers.latitude,
					markers.longitude,
					markers.iconid,
					markers.streetsid,
					markers.creationdate,
					markers.markername,
					markers.address1,
					markers.address2,
					markers.city,
					markers.state,
					markers.zip,
					markers.country,
					markers.LonLatMatch,
					DATE_FORMAT(markers.eventdate,'%m/%d/%y') AS eventdate,
					markers.event,
					markers.fullAddress,
					markers.forCrew,
					markers.forUser,
					icontypes.iconimgpath,
					icontypes.iconimgname,
					users.name as UsersName,
					(SELECT users.name FROM users WHERE streetsid = markers.forUser) AS forUsersName,
					(SELECT crews.name FROM crews WHERE id = markers.forCrew) AS forCrewName,
					(SELECT count(id) FROM markeralbums WHERE markerid = markers.id AND streetsid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">) AS MyLinkedAlbumsCount,
					(SELECT count(id) FROM comments WHERE associated_id = markers.id AND postedby = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">) AS MyCommentsCount
				FROM
					markers
				LEFT JOIN
					icontypes ON markers.iconid = icontypes.id
				LEFT JOIN
					users ON markers.streetsid = users.streetsid
				WHERE
					markers.id = <cfqueryparam value="#arguments.markerID#"  cfsqltype="cf_sql_bigint">
			</CFQUERY>

		<cfreturn getMarkerByIDReturnQuery />
	</cffunction>

	<cffunction name="getMapMarkers" access="remote" returntype="query">
    	<cfargument name="LatMin" type="numeric" required="yes" hint="Minimum Latitude">
    	<cfargument name="LatMax" type="numeric" required="yes" hint="Maximum Latitude">
    	<cfargument name="LonMin" type="numeric" required="yes" hint="Minimum Longitude">
    	<cfargument name="LonMax" type="numeric" required="yes" hint="Maximum Longitude">
		<cfargument name="showTaggedTags" type="boolean" default="false" hint="If this is passed show Tagged tags">		
		<cfargument name="showFriendTags" type="boolean" default="false" hint="If this is passed show friends tags">
		<cfargument name="showCrewTags" type="boolean" default="false" hint="If this is passed show crews tags">
		<cfargument name="showMyTags" type="boolean" default="false" hint="If this is passed show My tags">
		<cfargument name="showPublicTags" type="boolean" default="false" hint="If this is passed show Public">
		<cfargument name="showThisCrewsTags" type="numeric" default="0" hint="If this is passed show Only tags from this crew">
		<cfset var getMyMarkersQuery = '' />
			
			<CFQUERY NAME="getMyMarkersQuery" DATASOURCE="streets">
				SELECT
					markers.id,
					markers.latitude,
					markers.longitude,
					markers.markerdetails,
					icontypes.id AS iconid,
					icontypes.iconimgpath,
					icontypes.iconimgname,
					users.StreetsID,
					users.name as UsersName
				FROM
					markers
				LEFT JOIN
					icontypes ON markers.iconid = icontypes.id
				LEFT JOIN
					users ON markers.streetsid = users.streetsid
                JOIN crews
                LEFT JOIN
					crewuserlist ON crewuserlist.crewid = crews.ID
				WHERE
					latitude
						BETWEEN <cfqueryparam value="#arguments.LatMin#" cfsqltype="cf_sql_float">
						AND <cfqueryparam value="#arguments.LatMax#" cfsqltype="cf_sql_float">
				AND
					longitude
						BETWEEN <cfqueryparam value="#arguments.LonMin#" cfsqltype="cf_sql_float">
						AND <cfqueryparam value="#arguments.LonMax#" cfsqltype="cf_sql_float">
				AND
					(
					0=1
				<cfif arguments.showThisCrewsTags neq 0>
	                OR
						markers.forCrew = <cfqueryparam value="#arguments.showThisCrewsTags#" cfsqltype="cf_sql_bigint">
					OR
						(
							crewuserlist.userid IN(SELECT userid FROM crewuserlist WHERE crewid = <cfqueryparam value="#arguments.showThisCrewsTags#" cfsqltype="cf_sql_bigint">)
						AND
							markers.view = <cfqueryparam value="3" cfsqltype="cf_sql_bigint">
						OR
							markers.view = <cfqueryparam value="4" cfsqltype="cf_sql_bigint">
						)
				</cfif>

				<cfif arguments.showTaggedTags EQ true>
	                OR
						markers.forUser = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">
				</cfif>

				<cfif arguments.showPublicTags EQ true>
	                OR
						markers.view = <cfqueryparam value="5" cfsqltype="cf_sql_bigint">
				</cfif>

				<cfif arguments.showFriendTags EQ true>    
					OR
						(
							markers.StreetsID IN(SELECT FriendID FROM buddylist WHERE userid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">)
						AND
							markers.view = <cfqueryparam value="2" cfsqltype="cf_sql_bigint">
						)
				</cfif>

				<cfif arguments.showCrewTags EQ true>
					OR
						(
							crewuserlist.userid IN(SELECT userid FROM crewuserlist WHERE userid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">)
						AND
							markers.view = <cfqueryparam value="3" cfsqltype="cf_sql_bigint">
						)
				</cfif>

				<cfif arguments.showFriendTags EQ true AND arguments.showCrewTags EQ true>
					OR
						(
        	            	markers.StreetsID IN(SELECT FriendID FROM buddylist WHERE userid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">)
						AND
							markers.view = <cfqueryparam value="3" cfsqltype="cf_sql_bigint">
	                    OR
    	                	crewuserlist.userid IN(SELECT userid FROM crewuserlist WHERE userid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">)
						AND
							markers.view = <cfqueryparam value="3" cfsqltype="cf_sql_bigint">
						)
				</cfif>

				<cfif arguments.showMyTags EQ true>
					OR
        	   	    	(
					<cfif StructKeyExists(Request,'StreetsUser.StreetsID')>
							markers.StreetsID = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">
						AND
					</cfif>
							markers.view != <cfqueryparam value="0" cfsqltype="cf_sql_bigint">
						)
				</cfif>
				)
				GROUP BY markers.ID
                ORDER BY markers.ID Desc
			</CFQUERY>
		<cfreturn markerSpread(getMyMarkersQuery) />
	</cffunction>

    
    <cffunction name="LiveUpdateTagIcon" access="remote" returntype="string">
        <cfargument name="tagid" hint="TagID" displayname="ID of Tag Icon" type="numeric" required="yes">
        <cfset var LiveUpdateTagiconReturn = "" />
		<cfset var LiveUpdateTagiconResult = "" />

        	<CFQUERY NAME="LiveUpdateTagiconResult" DATASOURCE="streets">
            SELECT id,iconImgPath,IconImgName FROM icontypes
            WHERE
            	ID = <cfqueryparam value="#arguments.tagid#" cfsqltype="cf_sql_bigint">
            </CFQUERY>
            <cfset LiveUpdateTagiconReturn = "#LiveUpdateTagiconResult.IconImgPath#/#LiveUpdateTagiconResult.IconImgName#">
    	<cfreturn LiveUpdateTagiconResult />
    </cffunction>


	<cffunction name="getMarkersBrowse" access="remote" returntype="struct">
		<cfargument name="searchstr" default="" hint="searchstr" displayname="Keyword to search for">
		<cfargument name="car_make" default="" hint="car_make" displayname="The Car Make if defined">
		<cfargument name="searchzip" required="no" hint="searchzip" displayname="Zip code if user is not dragging the map">
		<cfargument name="radiusmiles" default="100" hint="radiusmiles" displayname="Search within this mile radius.">
		<cfargument name="searchview" required="no" hint="searchview" displayname="1=Members,2=Cars,3=Crews,4=Events,5=Places">
		<cfargument name="membersOnlineNow" required="no" hint="If Members are Online Now" type="boolean" default="false">
		<cfargument name="lat" default="#Request.StreetsUser.Latitude#" hint="Latitude" displayname="Current Map Centered Latitude">
		<cfargument name="lng" default="#Request.StreetsUser.Longitude#" hint="Longitude" displayname="Current Map Centered Longitude">
		<cfargument name="zoomlvl" required="no" hint="Zoom" displayname="Current Map Zoom Level">
		<cfargument name="pan" default="0" hint="Pan" displayname="If this is 1 run ZipToCord">
		<cfargument name="crewsortby" required="no" hint="CrewSortBy" displayname="Sort either New, Oldest, Largest Members if view is crew (3)">
		<cfargument name="limit" default="5" hint="end" displayname="How many records per page">
		<cfargument name="page" type="numeric" default="1" hint="Page" displayname="what records to return based on page, 1 page = (arguments.limit) records">
		<cfargument name="eventDateStart" default="#dateformat(now()-14, 'mm/dd/yyyy')#" hint="Start Date" displayname="Selectable Start Date, default -2 weeks from now">
		<cfargument name="eventDateEnd" default="#dateformat(now()+14, 'mm/dd/yyyy')#" hint="End Date" displayname="Selectable End Date, default +2 weeks from now">

		<cfscript>
			var getBrowseResultsStruct = StructNew();
			var GeoBoxed = "";
			var getZipToCord = "";
			var getCordToZip = StructNew();

			if(arguments.pan EQ 1) {
				getZipToCord = ZipToCord(arguments.searchzip);
				arguments.lat = getZipToCord.lat;
				arguments.lng = getZipToCord.lng;
			}
			getCordToZip.obj = CordToZip(arguments.lat,arguments.lng);
			arguments.searchzip = getCordToZip.obj;
			GeoBoxed = GeoBox(arguments.lat,arguments.lng,arguments.radiusmiles);

			switch(arguments.searchview) {
				case 1:
					getBrowseResultsStruct = getMarkersBrowse_members
												(
													geoboxed:GeoBoxed,
													lat:arguments.lat,
													lng:arguments.lng,
													searchstr:arguments.searchstr,
													onlineNow:arguments.membersOnlineNow,
													car_make:arguments.car_make,
													page:arguments.page,
													limit:arguments.limit
												);
				break;
				case 2:
					getBrowseResultsStruct = getMarkersBrowse_cars
												(
													geoboxed:GeoBoxed,
													lat:arguments.lat,
													lng:arguments.lng,
													searchstr:arguments.searchstr,
													car_make:arguments.car_make,
													page:arguments.page,
													limit:arguments.limit
												);
				break;
				case 3:
					getBrowseResultsStruct = getMarkersBrowse_crews
												(
													geoboxed:GeoBoxed,
													lat:arguments.lat,
													lng:arguments.lng,
													searchstr:arguments.searchstr,
													car_make:arguments.car_make,
													page:arguments.page,
													limit:arguments.limit,
													crewsortby:arguments.crewsortby
												);
				break;
				case 4:
					getBrowseResultsStruct = getMarkersBrowse_events
												(
													geoboxed:GeoBoxed,
													lat:arguments.lat,
													lng:arguments.lng,
													searchstr:arguments.searchstr,
													car_make:arguments.car_make,
													page:arguments.page,
													limit:arguments.limit,
													eventDateStart:arguments.eventDateStart,
													eventDateEnd:arguments.eventDateEnd
												);
				break;
				case 5:
					getBrowseResultsStruct = getMarkersBrowse_places
												(
													geoboxed:GeoBoxed,
													lat:arguments.lat,
													lng:arguments.lng,
													searchstr:arguments.searchstr,
													page:arguments.page,
													limit:arguments.limit
												);
				break;
			}

			return getBrowseResultsStruct;
		</cfscript>

<!---
		<CFQUERY NAME="getBrowseQueryResults" DATASOURCE="streets">
		SELECT
			markers.id,
			markers.streetsid,
			markers.latitude,
			markers.longitude,
			markers.markerdetails,
			markers.view,
			users.id AS UsersID,
			users.name,
			<cfif arguments.searchview EQ 1 or arguments.searchview EQ 2>
				users.avatar AS IconImgName,
				users.avatar_path AS IconImgPath,
			</cfif>
			<cfif arguments.searchview EQ 3>
				crews.id AS CrewID,
				crews.name AS CrewName,
				crews.zip AS CrewZip,
				crews.bannerpath,
				crews.bannerfilename,
				crews.ownerid,
				crews.created,
				crews.bannerwidth,
				crews.bannerheight,
				users.avatar AS IconImgName,
				users.avatar_path AS IconImgPath,
				(SELECT count(id) FROM crewuserlist WHERE crewuserlist.crewid = crews.id) AS CrewsSortBySize,
			</cfif>
			garage.car_name,
			garage.id AS GarageID,
			garage.userid AS GarageUID,

			gallery.garageid AS GalleryGarageID,
			gallery.userid AS GalleryUID,
			gallery.filename,

			#arguments.lat# AS querySetLat,
			#arguments.lng# AS querySetLng
		FROM markers
			LEFT JOIN users ON markers.streetsid = users.id
			LEFT JOIN garage ON markers.streetsid = garage.userid

			LEFT JOIN gallery_albums ON garage.id = gallery_albums.garageid

			LEFT JOIN gallery ON gallery_albums.id = gallery.albumid

			<cfif arguments.searchview EQ 3>
				LEFT JOIN crews ON markers.streetsid = crews.ownerid
			</cfif>
				WHERE
			markers.latitude
				BETWEEN
			<cfqueryparam value="#geoboxed.latmin#" cfsqltype="cf_sql_float">
				AND
			<cfqueryparam value="#geoboxed.latmax#" cfsqltype="cf_sql_float">
				AND
			markers.longitude
				BETWEEN
			<cfqueryparam value="#geoboxed.lonmin#" cfsqltype="cf_sql_float">
				AND
			<cfqueryparam value="#geoboxed.lonmax#" cfsqltype="cf_sql_float">
				AND
			markers.view = <cfqueryparam value="6" cfsqltype="cf_sql_bigint">
				AND
			<cfif arguments.searchview EQ 2>
			gallery.filename != ''
				AND
			</cfif>
			<cfif arguments.searchview EQ 3>
			crews.ownerid != ''
				AND
			</cfif>
			<cfif Len(arguments.car_make) NEQ 0>
				markers.streetsid IN(select userid FROM garage WHERE garage.car_make = <cfqueryparam value="#arguments.car_make#" cfsqltype="cf_sql_varchar">)
					AND
			</cfif>
				0=0
			<cfif len(arguments.searchstr) NEQ 0>
				AND
				(	users.name LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
				OR
					garage.car_name LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
				OR
					markers.streetsid IN(select streetsid FROM garagedescriptions WHERE garagedescriptions.details LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">)
				)
			</cfif>

			<cfif arguments.searchview EQ 3>
				GROUP BY crews.ownerid
				<cfif arguments.crewsortby EQ 1>
					ORDER BY crews.created desc
				</cfif>
				<cfif arguments.crewsortby EQ 2>
					ORDER BY crews.created asc
				</cfif>
				<cfif arguments.crewsortby EQ 3>
					ORDER BY CrewsSortBySize desc
				</cfif>
			<cfelse>
				GROUP BY markers.streetsid
				ORDER BY users.id desc, ID Desc
			</cfif>
				LIMIT <cfqueryparam value="#arguments.start#" cfsqltype="cf_sql_bigint">,<cfqueryparam value="#arguments.end#" cfsqltype="cf_sql_bigint">
		</CFQUERY>
--->

	</cffunction>

	<cffunction name="getMarkersBrowse_members" access="public" returntype="Struct">
		<cfargument name="geoboxed" type="struct" required="yes" hint="Geo Restrictions">
		<cfargument name="lat" required="no" hint="Latitude" displayname="Current Map Centered Latitude">
		<cfargument name="lng" required="no" hint="Longitude" displayname="Current Map Centered Longitude">
		<cfargument name="searchstr" required="no" hint="searchstr" displayname="Keyword to search for">
		<cfargument name="onlineNow" required="no" hint="If Members are Online Now" type="boolean" default="false">
		<cfargument name="car_make" required="no" hint="car_make" displayname="The Car Make if defined">
		<cfargument name="page" type="numeric" default="1" hint="Page" displayname="what records to return based on page, 1 page = (arguments.limit) records">
		<cfargument name="limit" default="15" hint="end" displayname="How many records per page">
		<cfscript>
			var GetTotalCount = '';
			var TotalResults = '';
			var getBrowse_MembersQuery = '';
			var getBrowse_MembersReturn = StructNew();
			var pagedStruct = StructNew();
				pagedStruct.RowEnd = arguments.page*arguments.limit;
				pagedStruct.RowStart = pagedStruct.RowEnd-arguments.limit;
		</cfscript>
		<cftransaction>
			<CFQUERY NAME="getBrowse_MembersQuery" DATASOURCE="streets">
				SELECT
				SQL_CALC_FOUND_ROWS
					markers.markerdetails,
					markers.latitude,
    		        markers.longitude,
					users.id,
					users.id AS IconID,
					users.name,
					users.StreetsID,
					users.name as UsersName,
					users.avatar AS IconImgName,
					users.avatar_path AS IconImgPath,
					users.avatar AS DisplayImgName,
					users.avatar_path AS DisplayImgPath,
					#arguments.lat# AS querySetLat,
					#arguments.lng# AS querySetLng
				FROM
					markers
				LEFT JOIN
					users ON markers.id = users.MarkerID
				LEFT JOIN
					garage ON users.id = garage.userid
				LEFT JOIN
					garagedescriptions ON garage.id = garagedescriptions.garageid
				WHERE
					markers.latitude
				BETWEEN
					<cfqueryparam value="#arguments.geoboxed.latmin#" cfsqltype="cf_sql_float">
				AND
					<cfqueryparam value="#arguments.geoboxed.latmax#" cfsqltype="cf_sql_float">
				AND
					markers.longitude
				BETWEEN
					<cfqueryparam value="#arguments.geoboxed.lonmin#" cfsqltype="cf_sql_float">
				AND
					<cfqueryparam value="#arguments.geoboxed.lonmax#" cfsqltype="cf_sql_float">
				AND
					markers.view = <cfqueryparam value="5" cfsqltype="cf_sql_bigint">
				<cfif arguments.onlineNow eq true>
				AND
					users.onlineNow = 1
				</cfif>
				<cfif Len(arguments.car_make) NEQ 0>
				AND
					garage.car_make = <cfqueryparam value="#arguments.car_make#" cfsqltype="cf_sql_varchar">
				</cfif>

				<cfif len(arguments.searchstr) NEQ 0>
					AND
						users.name LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
					OR
						garage.car_name LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
					OR
						garagedescriptions.details LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
					
				</cfif>
				GROUP BY users.id
				ORDER BY users.id desc, ID Desc
				LIMIT <cfqueryparam value="#pagedStruct.RowStart#" cfsqltype="cf_sql_bigint">,<cfqueryparam value="#arguments.limit#" cfsqltype="cf_sql_bigint">;
			</CFQUERY>
    		<CFQUERY NAME="GetTotalCount" DATASOURCE="streets">
				SELECT FOUND_ROWS() AS TotalResults
			</CFQUERY>
		</cftransaction>

		<cfscript>
			StructInsert(getBrowse_MembersReturn, "getBrowse_Query", markerSpread(getBrowse_MembersQuery));
			StructInsert(getBrowse_MembersReturn, "totalResultCount", GetTotalCount.TotalResults);
		</cfscript>

		<cfreturn getBrowse_MembersReturn />
	</cffunction>


	<cffunction name="getMarkersBrowse_cars" access="public" returntype="Struct">
		<cfargument name="geoboxed" type="struct" required="yes" hint="Geo Restrictions">
		<cfargument name="lat" required="no" hint="Latitude" displayname="Current Map Centered Latitude">
		<cfargument name="lng" required="no" hint="Longitude" displayname="Current Map Centered Longitude">
		<cfargument name="searchstr" required="no" hint="searchstr" displayname="Keyword to search for">
		<cfargument name="car_make" required="no" hint="car_make" displayname="The Car Make if defined">
		<cfargument name="page" type="numeric" default="1" hint="Page" displayname="what records to return based on page, 1 page = (arguments.limit) records">
		<cfargument name="limit" default="15" hint="end" displayname="How many records per page">
		<cfscript>
			var GetTotalCount = '';
			var TotalResults = '';
			var getBrowse_CarsQuery = '';
			var getBrowse_CarsReturn = StructNew();
			var pagedStruct = StructNew();
				pagedStruct.RowEnd = arguments.page*arguments.limit;
				pagedStruct.RowStart = pagedStruct.RowEnd-arguments.limit;
		</cfscript>
		<cftransaction>
			<CFQUERY NAME="getBrowse_CarsQuery" DATASOURCE="streets">
				SELECT
				SQL_CALC_FOUND_ROWS
					markers.markerdetails,
					markers.latitude,
    		        markers.longitude,
					users.id,
					users.name,
					users.StreetsID,
					users.name as UsersName,
					users.avatar AS IconImgName,
					users.avatar_path AS IconImgPath,
					gallery.thumb_small AS DisplayImgName,
					gallery.path AS DisplayImgPath,
					#arguments.lat# AS querySetLat,
					#arguments.lng# AS querySetLng
				FROM
					markers
				LEFT JOIN
					users ON markers.streetsid = users.id
				LEFT JOIN
					garage ON markers.streetsid = garage.userid
				LEFT JOIN
					gallery_albums ON garage.id = gallery_albums.garageid
				LEFT JOIN
					gallery ON gallery_albums.id = gallery.albumid
				WHERE
					markers.latitude
				BETWEEN
					<cfqueryparam value="#arguments.geoboxed.latmin#" cfsqltype="cf_sql_float">
				AND
					<cfqueryparam value="#arguments.geoboxed.latmax#" cfsqltype="cf_sql_float">
				AND
					markers.longitude
				BETWEEN
					<cfqueryparam value="#arguments.geoboxed.lonmin#" cfsqltype="cf_sql_float">
				AND
					<cfqueryparam value="#arguments.geoboxed.lonmax#" cfsqltype="cf_sql_float">
				AND
					markers.view = <cfqueryparam value="5" cfsqltype="cf_sql_bigint">
				AND
					markers.id = users.MarkerID
				AND
					gallery.filename != ''
				AND
				<cfif Len(arguments.car_make) NEQ 0>
					markers.streetsid IN(select userid FROM garage WHERE garage.car_make = <cfqueryparam value="#arguments.car_make#" cfsqltype="cf_sql_varchar">)
				AND
				</cfif>
					0=0
				<cfif len(arguments.searchstr) NEQ 0>
					AND
					(	users.name LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
					OR
						garage.car_name LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
					OR
						markers.streetsid IN(select streetsid FROM garagedescriptions WHERE garagedescriptions.details LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">)
					)
				</cfif>
				GROUP BY users.id
				ORDER BY users.id desc, ID Desc
				LIMIT <cfqueryparam value="#pagedStruct.RowStart#" cfsqltype="cf_sql_bigint">,<cfqueryparam value="#arguments.limit#" cfsqltype="cf_sql_bigint">;
			</CFQUERY>
    		<CFQUERY NAME="GetTotalCount" DATASOURCE="streets">
				SELECT FOUND_ROWS() AS TotalResults
			</CFQUERY>
		</cftransaction>

		<cfscript>
			StructInsert(getBrowse_CarsReturn, "getBrowse_Query", markerSpread(getBrowse_CarsQuery));
			StructInsert(getBrowse_CarsReturn, "totalResultCount", GetTotalCount.TotalResults);
		</cfscript>

		<cfreturn getBrowse_CarsReturn />
	</cffunction>


	<cffunction name="getMarkersBrowse_crews" access="public" returntype="Struct">
		<cfargument name="geoboxed" type="struct" required="yes" hint="Geo Restrictions">
		<cfargument name="lat" required="no" hint="Latitude" displayname="Current Map Centered Latitude">
		<cfargument name="lng" required="no" hint="Longitude" displayname="Current Map Centered Longitude">
		<cfargument name="searchstr" required="no" hint="searchstr" displayname="Keyword to search for">
		<cfargument name="car_make" required="no" hint="car_make" displayname="The Car Make if defined">
		<cfargument name="page" type="numeric" default="1" hint="Page" displayname="what records to return based on page, 1 page = (arguments.limit) records">
		<cfargument name="limit" default="15" hint="end" displayname="How many records per page">
		<cfscript>
			var GetTotalCount = '';
			var TotalResults = '';
			var getBrowse_CrewsQuery = '';
			var getBrowse_CrewsReturn = StructNew();
			var pagedStruct = StructNew();
				pagedStruct.RowEnd = arguments.page*arguments.limit;
				pagedStruct.RowStart = pagedStruct.RowEnd-arguments.limit;
			switch(arguments.crewsortby) {
				case 1:
					pagedStruct.SortBy = "crews.created asc";
				break;
				case 2:
					pagedStruct.SortBy = "crews.created desc";
				break;
				case 3:
					pagedStruct.SortBy = "CrewsSortBySize desc";
				break;
			}
		</cfscript>
		<cftransaction>
			<CFQUERY NAME="getBrowse_CrewsQuery" DATASOURCE="streets">
				SELECT
				SQL_CALC_FOUND_ROWS
					markers.latitude,
    		        markers.longitude,
					users.avatar AS IconImgName,
					users.avatar_path AS IconImgPath,
					crews.id,
					crews.name,
					crews.zip,
					crews.description AS markerdetails,
					crews.bannerpath AS DisplayImgPath,
					crews.bannerfilename AS DisplayImgName,
					crews.ownerid,
					DATE_FORMAT(crews.created,'%b %e, %Y') AS created,
					crews.bannerwidth,
					crews.bannerheight,
					users.avatar AS IconImgName,
					users.avatar_path AS IconImgPath,
					users.StreetsID,
					users.name as UsersName,
					(SELECT count(id) FROM crewuserlist WHERE crewuserlist.crewid = crews.id) AS CrewsSortBySize,
					#arguments.lat# AS querySetLat,
					#arguments.lng# AS querySetLng
				FROM
					markers
				LEFT JOIN
					users ON markers.streetsid = users.id
				LEFT JOIN
					crews ON markers.streetsid = crews.ownerid
				WHERE
					markers.latitude
				BETWEEN
					<cfqueryparam value="#arguments.geoboxed.latmin#" cfsqltype="cf_sql_float">
				AND
					<cfqueryparam value="#arguments.geoboxed.latmax#" cfsqltype="cf_sql_float">
				AND
					markers.longitude
				BETWEEN
					<cfqueryparam value="#arguments.geoboxed.lonmin#" cfsqltype="cf_sql_float">
				AND
					<cfqueryparam value="#arguments.geoboxed.lonmax#" cfsqltype="cf_sql_float">
				AND
					markers.view = <cfqueryparam value="5" cfsqltype="cf_sql_bigint">
				AND
					crews.bannerfilename != ''
				AND
				<cfif Len(arguments.car_make) NEQ 0>
					markers.streetsid IN(select userid FROM garage WHERE garage.car_make = <cfqueryparam value="#arguments.car_make#" cfsqltype="cf_sql_varchar">)
				AND
				</cfif>
					0=0
				<cfif len(arguments.searchstr) NEQ 0>
					AND
					(	users.name LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
					OR
						garage.car_name LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
					OR
						markers.streetsid IN(select streetsid FROM garagedescriptions WHERE garagedescriptions.details LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">)
					OR
						crews.name LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
					OR
						crews.description LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
					)
				</cfif>

				GROUP BY crews.id

				ORDER BY #pagedStruct.SortBy#

				LIMIT <cfqueryparam value="#pagedStruct.RowStart#" cfsqltype="cf_sql_bigint">,<cfqueryparam value="#arguments.limit#" cfsqltype="cf_sql_bigint">;
			</CFQUERY>
    		<CFQUERY NAME="GetTotalCount" DATASOURCE="streets">
				SELECT FOUND_ROWS() AS TotalResults
			</CFQUERY>
		</cftransaction>

		<cfscript>
			StructInsert(getBrowse_CrewsReturn, "getBrowse_Query", markerSpread(getBrowse_CrewsQuery));
			StructInsert(getBrowse_CrewsReturn, "totalResultCount", GetTotalCount.TotalResults);
		</cfscript>

		<cfreturn getBrowse_CrewsReturn />
	</cffunction>


	<cffunction name="getMarkersBrowse_events" access="public" returntype="Struct">
		<cfargument name="geoboxed" type="struct" required="yes" hint="Geo Restrictions">
		<cfargument name="lat" required="no" hint="Latitude" displayname="Current Map Centered Latitude">
		<cfargument name="lng" required="no" hint="Longitude" displayname="Current Map Centered Longitude">
		<cfargument name="searchstr" required="no" hint="searchstr" displayname="Keyword to search for">
		<cfargument name="car_make" required="no" hint="car_make" displayname="The Car Make if defined">
		<cfargument name="page" type="numeric" default="1" hint="Page" displayname="what records to return based on page, 1 page = (arguments.limit) records">
		<cfargument name="limit" default="15" hint="end" displayname="How many records per page">
		<cfargument name="eventDateStart" default="#dateformat(now()-14, 'mm/dd/yyyy')#" hint="Start Date" displayname="Selectable Start Date, default -2 weeks from now">
		<cfargument name="eventDateEnd" default="#dateformat(now()+14, 'mm/dd/yyyy')#" hint="End Date" displayname="Selectable End Date, default +2 weeks from now">
		<cfscript>
			var GetTotalCount = '';
			var TotalResults = '';
			var getBrowse_EventsQuery = '';
			var getBrowse_EventsReturn = StructNew();
			var pagedStruct = StructNew();
				pagedStruct.RowEnd = arguments.page*arguments.limit;
				pagedStruct.RowStart = pagedStruct.RowEnd-arguments.limit;
		</cfscript>
		<cftransaction>
			<CFQUERY NAME="getBrowse_EventsQuery" DATASOURCE="streets">
				SELECT
				SQL_CALC_FOUND_ROWS
					markers.id,
					markers.latitude,
    		        markers.longitude,
    		        markers.markerName as Name,
					markers.markerdetails,
					DATE_FORMAT(markers.eventdate,'%b %e, %Y') AS eventdate,
					icontypes.IconImgName,
					icontypes.IconImgPath,
					icontypes.IconImgName AS DisplayImgName,
					icontypes.IconImgPath AS DisplayImgPath,
					users.name as UsersName,
					users.streetsid as StreetsID,
					#arguments.lat# AS querySetLat,
					#arguments.lng# AS querySetLng
				FROM
					markers
				LEFT JOIN
					icontypes ON markers.iconid = icontypes.id
				LEFT JOIN
					users ON markers.streetsid = users.streetsid
				WHERE
					markers.latitude
				BETWEEN
					<cfqueryparam value="#arguments.geoboxed.latmin#" cfsqltype="cf_sql_float">
				AND
					<cfqueryparam value="#arguments.geoboxed.latmax#" cfsqltype="cf_sql_float">
				AND
					markers.longitude
				BETWEEN
					<cfqueryparam value="#arguments.geoboxed.lonmin#" cfsqltype="cf_sql_float">
				AND
					<cfqueryparam value="#arguments.geoboxed.lonmax#" cfsqltype="cf_sql_float">
				AND
					markers.view = <cfqueryparam value="5" cfsqltype="cf_sql_bigint">
				AND
					markers.eventdate
				BETWEEN
					<cfqueryparam value="#arguments.eventDateStart#" cfsqltype="cf_sql_date">
				AND
					<cfqueryparam value="#arguments.eventDateEnd#" cfsqltype="cf_sql_date">
				AND
					markers.event = 1
				<cfif len(arguments.searchstr) NEQ 0>
				AND
					markers.markerdetails LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
				</cfif>

				GROUP BY markers.id

				ORDER BY markers.eventdate asc

				LIMIT <cfqueryparam value="#pagedStruct.RowStart#" cfsqltype="cf_sql_bigint">,<cfqueryparam value="#arguments.limit#" cfsqltype="cf_sql_bigint">;
			</CFQUERY>
    		<CFQUERY NAME="GetTotalCount" DATASOURCE="streets">
				SELECT FOUND_ROWS() AS TotalResults
			</CFQUERY>
		</cftransaction>

		<cfscript>
			StructInsert(getBrowse_EventsReturn, "getBrowse_Query", markerSpread(getBrowse_EventsQuery));
			StructInsert(getBrowse_EventsReturn, "totalResultCount", GetTotalCount.TotalResults);
		</cfscript>

		<cfreturn getBrowse_EventsReturn />
	</cffunction>


	<cffunction name="getMarkersBrowse_places" access="public" returntype="Struct">
		<cfargument name="geoboxed" type="struct" required="yes" hint="Geo Restrictions">
		<cfargument name="lat" required="no" hint="Latitude" displayname="Current Map Centered Latitude">
		<cfargument name="lng" required="no" hint="Longitude" displayname="Current Map Centered Longitude">
		<cfargument name="searchstr" required="no" hint="searchstr" displayname="Keyword to search for">
		<cfargument name="page" type="numeric" default="1" hint="Page" displayname="what records to return based on page, 1 page = (arguments.limit) records">
		<cfargument name="limit" default="15" hint="end" displayname="How many records per page">
		<cfscript>
			var streetsObj = CreateObject('component','streets.streets');
			var GetTotalCount = '';
			var TotalResults = '';
			var getBrowse_PlacesQuery = '';
			var getBrowse_PlacesReturn = StructNew();
			var pagedStruct = StructNew();
				pagedStruct.RowEnd = arguments.page*arguments.limit;
				pagedStruct.RowStart = pagedStruct.RowEnd-arguments.limit;
		</cfscript>
		<cftransaction>
			<CFQUERY NAME="getBrowse_PlacesQuery" DATASOURCE="streets">
				SELECT
				SQL_CALC_FOUND_ROWS
					markers.id,
					markers.latitude,
    		        markers.longitude,
    		        markers.markerName as Name,
					markers.markerdetails,
					DATE_FORMAT(DATE_ADD(markers.creationdate, INTERVAL #streetsObj.getMyTimeZoneOffset()# HOUR),'%b %e, %Y %r') AS ddate,
					icontypes.IconImgName,
					icontypes.IconImgPath,
					icontypes.IconImgName AS DisplayImgName,
					icontypes.IconImgPath AS DisplayImgPath,
					users.name as UsersName,
					users.streetsid as StreetsID,
					#arguments.lat# AS querySetLat,
					#arguments.lng# AS querySetLng
				FROM
					markers
				LEFT JOIN
					icontypes ON markers.iconid = icontypes.id
				LEFT JOIN
					users ON markers.streetsid = users.streetsid
				WHERE
					markers.latitude
				BETWEEN
					<cfqueryparam value="#arguments.geoboxed.latmin#" cfsqltype="cf_sql_float">
				AND
					<cfqueryparam value="#arguments.geoboxed.latmax#" cfsqltype="cf_sql_float">
				AND
					markers.longitude
				BETWEEN
					<cfqueryparam value="#arguments.geoboxed.lonmin#" cfsqltype="cf_sql_float">
				AND
					<cfqueryparam value="#arguments.geoboxed.lonmax#" cfsqltype="cf_sql_float">
				AND
					markers.view = <cfqueryparam value="5" cfsqltype="cf_sql_bigint">
				AND
					markers.event = 0
				AND
					markers.id NOT IN(SELECT MarkerID from users)
				AND
					0=0
				<cfif len(arguments.searchstr) NEQ 0>
				AND
					(
						markers.markerdetails LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
					OR 
						markers.markerName LIKE <cfqueryparam value="%#arguments.searchstr#%" cfsqltype="cf_sql_varchar">
					)
				</cfif>

				GROUP BY markers.id

				ORDER BY markers.id desc

				LIMIT <cfqueryparam value="#pagedStruct.RowStart#" cfsqltype="cf_sql_bigint">,<cfqueryparam value="#arguments.limit#" cfsqltype="cf_sql_bigint">;
			</CFQUERY>
    		<CFQUERY NAME="GetTotalCount" DATASOURCE="streets">
				SELECT FOUND_ROWS() AS TotalResults
			</CFQUERY>
		</cftransaction>

		<cfscript>
			StructInsert(getBrowse_PlacesReturn, "getBrowse_Query", markerSpread(getBrowse_PlacesQuery));
			StructInsert(getBrowse_PlacesReturn, "totalResultCount", GetTotalCount.TotalResults);
		</cfscript>

		<cfreturn getBrowse_PlacesReturn />
	</cffunction>

	<cffunction name="getManageMarkers" access="remote" returntype="struct">
		<cfargument name="searchKeyword" type="string" default="" hint="Keyword to search for">
		<cfargument name="limit" type="numeric" default="8" hint="Limit of records per page">
		<cfargument name="searchView" type="numeric" default="1" hint="1=All,2=Crew,3=Events,4=Places,5=Comments,6=Albums,7=Tagged My Map,8=Tagged Others Map">
		<cfargument name="sort" type="numeric" default="1" hint="Sort By">
		<cfargument name="page" type="numeric" default="1" hint="Page">
		<cfscript>
			var streetsObj = CreateObject('component','streets.streets');
			var getManageMarkersReturn = StructNew();
			var GetTotalCount = '';
			var TotalResults = '';
			var getManageMarkersQuery = '';
			var pagedStruct = StructNew();
				pagedStruct.RowEnd = arguments.page*arguments.limit;
				pagedStruct.RowStart = pagedStruct.RowEnd-arguments.limit;
		</cfscript>

		<cftransaction>
			<CFQUERY NAME="getManageMarkersQuery" DATASOURCE="streets">
				SELECT
				SQL_CALC_FOUND_ROWS
					markers.id,
					markers.latitude,
					markers.longitude,
					markers.markerdetails,
					markers.iconid,
					markers.streetsid,
					markers.forCrew,
					markers.forUser,
					markers.markername,
					markers.event,
					markers.eventdate,
					icontypes.iconimgname,
					icontypes.iconimgpath,
					users.name
				FROM
					markers
				LEFT JOIN
					icontypes ON markers.iconid = icontypes.id
				LEFT JOIN
					users ON markers.streetsid = users.streetsid
				LEFT JOIN
					crews ON markers.forCrew = crews.id
				WHERE
					0=0
					<cfif len(arguments.searchKeyword) gt 1>
					AND
						(
							markers.markername LIKE <cfqueryparam value="%#arguments.searchKeyword#%" cfsqltype="cf_sql_varchar">
						OR
							markers.markerdetails LIKE <cfqueryparam value="%#arguments.searchKeyword#%" cfsqltype="cf_sql_varchar">
						)
					</cfif>
				<cfswitch expression="#arguments.searchView#">
					<cfcase value="1">
						AND
							markers.streetsid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">
					</cfcase>
					<cfcase value="2">
						AND
							markers.forCrew != 0
						AND
							markers.view = 6
						AND
							markers.streetsid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">
					</cfcase>
					<cfcase value="3">
						AND
							markers.event = 1
						AND
							markers.streetsid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">
					</cfcase>
					<cfcase value="4">
						AND
							markers.event = 0
						AND
							markers.streetsid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">
					</cfcase>
					<cfcase value="5">
						AND
							markers.id IN
								(
								SELECT
									comments.associated_id
								FROM
									comments
								WHERE
									comments.postedby = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">
								AND
									comments.type = 2
								)
					</cfcase>
					<cfcase value="6">
						AND
							markers.id IN
								(
								SELECT
									markeralbums.markerid
								FROM
									markeralbums
								WHERE
									markeralbums.streetsid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">
								)
					</cfcase>
					<cfcase value="7">
						AND
							markers.forUser = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">
					</cfcase>
					<cfcase value="8">
						AND
							markers.forUser IN
								(
									SELECT
										buddylist.userid
									FROM
										buddylist
									WHERE
										buddylist.friendid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">
								)
						AND
							markers.streetsid = <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint">
					</cfcase>
				</cfswitch>

				LIMIT <cfqueryparam value="#pagedStruct.RowStart#" cfsqltype="cf_sql_bigint">,<cfqueryparam value="#arguments.limit#" cfsqltype="cf_sql_bigint">;

			</CFQUERY>
    		<CFQUERY NAME="GetTotalCount" DATASOURCE="streets">
				SELECT FOUND_ROWS() AS TotalResults
			</CFQUERY>
		</cftransaction>

		<cfscript>
			StructInsert(getManageMarkersReturn, "getManageMarkersQuery", markerSpread(getManageMarkersQuery));
			StructInsert(getManageMarkersReturn, "totalResultCount", GetTotalCount.TotalResults);
		</cfscript>


		<cfreturn getManageMarkersReturn />
	</cffunction>

<cffunction name="markerSpread" access="public" returntype="query">
	<cfargument name="getBrowseQueryResults" type="query" required="yes" hint="Query object of browse results">

		<cfscript>
			var variables = StructNew();
				variables.browseQueryObject = arguments.getBrowseQueryResults;
				variables.getBrowseQueryResultsTMP = '';
				variables.Step = 0;
				variables.Reach = 0;
				variables.Push = 0;
				variables.Pre = 0;
				variables.StepC = 0;
				variables.ReachC = 1;
				variables.PreC = 0;
				variables.intRow = 1;
		</cfscript>

		<cfloop query="variables.browseQueryObject">

		<CFQUERY NAME="getBrowseQueryResultsTMP" dbtype="query">
			SELECT ID,LATITUDE AS TmpLat,LONGITUDE AS TmpLng FROM variables.browseQueryObject
			WHERE Latitude = <cfqueryparam value="#Latitude#" cfsqltype="cf_sql_float">
			AND Longitude = <cfqueryparam value="#LONGITUDE#" cfsqltype="cf_sql_float">
			ORDER BY ID DESC
		</CFQUERY>

		<cfscript>
			for(variables.intRow = 1; variables.intRow LTE getBrowseQueryResultsTMP.RecordCount; variables.intRow++) {
				if(getBrowseQueryResultsTMP.recordCount) {
					if(getBrowseQueryResultsTMP.id neq getBrowseQueryResults.id) {

						variables.byLat = getBrowseQueryResultsTMP.TmpLat;
						variables.ByLon = getBrowseQueryResultsTMP.TmpLng;

						if(variables.Step EQ 5) {
							variables.Step = 1;
							variables.StepC = variables.StepC+1;
						}
						if(variables.Reach EQ 5) {
							variables.Reach = 1;
							variables.ReachC = variables.ReachC+1;
						}
						if(variables.Push EQ 5) {
							variables.Push = 1;
						}
						if(variables.Pre EQ 0) {
							variables.Pre = 1;
							variables.PreC = variables.PreC+1;
						}

						switch(variables.Pre) {
							case 1:
								variables.byLat = variables.byLat+Sin(0)/(180 * PI());
								variables.ByLon = variables.ByLon-Cos(0)/(180 * PI() / variables.PreC);
							break;
							case 2:
								variables.byLat = variables.byLat+Cos(0)/(180 * PI() / variables.PreC);
								variables.ByLon = variables.ByLon-Sin(0)/(180 * PI());
							break;
							case 3:
								variables.byLat = variables.byLat-Sin(0)/(180 * PI());
								variables.ByLon = variables.ByLon+Cos(0)/(180 * PI() / variables.PreC);
							break;
							case 4:
								variables.byLat = variables.byLat-Cos(0)/(180 * PI() / variables.PreC);
								variables.ByLon = variables.ByLon+Sin(0)/(180 * PI());
							break;
						}

						switch(variables.Step) {
							case 1:
								variables.byLat = variables.byLat-Cos(0)/(180 * PI() / variables.StepC);
								variables.ByLon = variables.ByLon+Cos(0)/(180 * PI() / variables.StepC);
							break;
							case 2:
								variables.byLat = variables.byLat-Cos(0)/(180 * PI() / variables.StepC);
								variables.ByLon = variables.ByLon-Cos(0)/(180 * PI() / variables.StepC);
							break;
							case 3:
								variables.byLat = variables.byLat+Cos(0)/(180 * PI() / variables.StepC);
								variables.ByLon = variables.ByLon+Cos(0)/(180 * PI() / variables.StepC);
							break;
							case 4:
								variables.byLat = variables.byLat+Cos(0)/(180 * PI() / variables.StepC);
								variables.ByLon = variables.ByLon-Cos(0)/(180 * PI() / variables.StepC);
							break;
						}
			
						if(variables.Reach EQ 1) {
							if(variables.Push EQ 1) {
								variables.byLat = variables.byLat-Cos(0)/(180 * PI() / variables.ReachC);
								variables.ByLon = variables.ByLon+Sin(1)/(180 * PI());
							}
							if(variables.Push EQ 2) {
								variables.byLat = variables.byLat-Sin(1)/(180 * PI());
								variables.ByLon = variables.ByLon+Cos(0)/(180 * PI() / variables.ReachC);
							}
						}

						if(variables.Reach EQ 2) {
							if(variables.Push EQ 1) {
								variables.byLat = variables.byLat-Cos(0)/(180 * PI() / variables.ReachC);
								variables.ByLon = variables.ByLon+Sin(-1)/(180 * PI());
							}
							if(variables.Push EQ 2) {
								variables.byLat = variables.byLat+Sin(-1)/(180 * PI());
								variables.ByLon = variables.ByLon-Cos(0)/(180 * PI() / variables.ReachC);
							}
						}

						if(variables.Reach EQ 3) {
							if(variables.Push EQ 1) {
								variables.byLat = variables.byLat+Cos(0)/(180 * PI() / variables.ReachC);
								variables.ByLon = variables.ByLon-Sin(1)/(180 * PI());
							}
							if(variables.Push EQ 2) {
								variables.byLat = variables.byLat+Sin(1)/(180 * PI());
								variables.ByLon = variables.ByLon-Cos(0)/(180 * PI() / variables.ReachC);
							}
						}

						if(variables.Reach EQ 4) {
							if(variables.Push EQ 1) {
								variables.byLat = variables.byLat+Cos(0)/(180 * PI() / variables.ReachC);
								variables.ByLon = variables.ByLon-Sin(-1)/(180 * PI());
							}
							if(variables.Push EQ 2) {
								variables.byLat = variables.byLat-Sin(-1)/(180 * PI());
								variables.ByLon = variables.ByLon+Cos(0)/(180 * PI() / variables.ReachC);
							}
						}
				
						QuerySetCell(getBrowseQueryResults, "LATITUDE", variables.byLat, getBrowseQueryResults.currentRow);
						QuerySetCell(getBrowseQueryResults, "LONGITUDE", variables.ByLon, getBrowseQueryResults.currentRow);
					}
				}
			}

			switch(variables.Pre) {
				case 4:
					variables.Pre = 6;
					variables.Step = 5;
				break;
				case 3:
					variables.Pre = 4;
				break;
				case 2:
					variables.Pre = 3;
				break;
				case 1:
					variables.Pre = 2;
				break;
			}
			switch(variables.Step) {
				case 4:
					variables.Step = 6;
					variables.Reach = 5;
					variables.Push = 5;
				break;
				case 3:
					variables.Step = 4;
				break;
				case 2:
					variables.Step = 3;
				break;
				case 1:
					variables.Step = 2;
				break;
			}
			if(variables.Reach EQ 4 and variables.Push EQ 2) {
				variables.Reach = 6;
				variables.Push = 6;
				variables.Pre = 0;
			}
			if(variables.Reach EQ 3 and variables.Push EQ 2) {
				variables.Reach = 4;
				variables.Push = 5;
			}
			if(variables.Reach EQ 2 and variables.Push EQ 2) {
				variables.Reach = 3;
				variables.Push = 5;
			}
			if(variables.Reach EQ 1 and variables.Push EQ 2) {
				variables.Reach = 2;
				variables.Push = 5;
			}
			if(variables.Push EQ 1) {
				variables.Push = 2;
			}
		</cfscript>

		</cfloop>

	<cfreturn getBrowseQueryResults />

</cffunction>

<!---                                                                                                                                                      --->

	<cffunction name="doGetTagDetails" access="remote" returntype="struct">
		<cfargument name="tagid" type="numeric" hint="Tag ID" displayname="The Tag ID">
			<cfset var doGetTagDetailsReturn = StructNew()>
			<cfset var ForCrewArray = "" />
			<cfset var setqueryrowlat = "" />
			<cfset var doGetTagDetailsQuery = "" />
			<cfset var doGetCrewQuery = "" />

			<cfif doCheckTagViewAuth(tagid:arguments.tagid,StreetsID:Request.StreetsUser.StreetsID) eq true>

				<CFQUERY NAME="doGetTagDetailsQuery" DATASOURCE="streets">
				SELECT
					markers.id,
					markers.latitude,
					markers.longitude,
					markers.iconid,
					markers.markerdetails,
					markers.streetsid,
					markers.view,
					icontypes.id as IconTypeID,
					icontypes.IconImgPath,
					icontypes.IconImgName,
					group_concat(distinct CAST(`crewuserlist`.`crewid` as CHAR)) AS `FORCREW` 
				FROM markers
				LEFT JOIN icontypes ON markers.iconid = icontypes.id
				JOIN crewuserlist
					WHERE markers.id = <cfqueryparam value="#arguments.tagid#" cfsqltype="cf_sql_bigint">
					AND <cfqueryparam value="#Request.StreetsUser.StreetsID#" cfsqltype="cf_sql_bigint"> IN(crewuserlist.userid)
				GROUP BY markers.id
				</CFQUERY>

				<cfset ForCrewArray = ListToArray(doGetTagDetailsQuery.FORCREW)>
					<cfif ArrayLen(ForCrewArray) GT 0>
						<CFQUERY NAME="doGetCrewQuery" DATASOURCE="streets">
						SELECT
							crews.id AS crewid,
							crews.name
						FROM crews
							WHERE crews.id IN (<cfqueryparam value="#ArrayToList(ForCrewArray)#" cfsqltype="cf_sql_bigint" list="yes">)
						</CFQUERY>

						<cfset doGetTagDetailsReturn.doGetCrewQuery = doGetCrewQuery>
					</cfif>

				<cfset setqueryrowlat = QuerySetCell(doGetTagDetailsQuery, "FORCREW", '')>

				<cfset doGetTagDetailsReturn.TagDetailsQuery = doGetTagDetailsQuery>
			</cfif>
		<cfreturn doGetTagDetailsReturn />
	</cffunction>

<!---                     0=Hidden,1=MySelf(No One),2=Friends,3=Crews,4=Friends & Crews Only,5=Everyone(Public)                               --->
   
	<cffunction name="doCheckTagViewAuth" access="public" returntype="boolean">
		<cfargument name="tagid" required="yes" type="numeric" hint="Tag ID" displayname="The Marker ID to Check">
		<cfargument name="StreetsID" required="yes" type="numeric" hint="StreetsID" displayname="The User ID">
			<cfset var doCheckTagViewAuthReturn = StructNew()>
			<cfset var doCheckTagViewAuthReturnQuery = "" />
			<cfset var CheckUserForIsInSameCrew = "" />
			<cfset var CheckUserInBuddyList = "" />

			<cfset doCheckTagViewAuthReturn.auth = false>

			<CFQUERY NAME="doCheckTagViewAuthReturnQuery" DATASOURCE="streets">
				SELECT id,view,streetsid FROM markers where ID = <cfqueryparam value="#arguments.tagid#" cfsqltype="cf_sql_bigint">
			</CFQUERY>

			<cfif doCheckTagViewAuthReturnQuery.RecordCount>

				<CFQUERY NAME="CheckUserForIsInSameCrew" DATASOURCE="streets">
				SELECT crewid,userid FROM crewuserlist
				WHERE userid = <cfqueryparam value="#arguments.StreetsID#" cfsqltype="cf_sql_bigint">
				AND crewid IN (SELECT crewid FROM crewuserlist WHERE userid = <cfqueryparam value="#doCheckTagViewAuthReturnQuery.StreetsID#" cfsqltype="cf_sql_bigint">);
				</CFQUERY>

				<CFQUERY NAME="CheckUserInBuddyList" DATASOURCE="streets">
				SELECT userid,friendid FROM buddylist
				WHERE userid = <cfqueryparam value="#arguments.StreetsID#" cfsqltype="cf_sql_bigint">
				AND friendid = <cfqueryparam value="#doCheckTagViewAuthReturnQuery.StreetsID#" cfsqltype="cf_sql_bigint">
				</CFQUERY>

			<cfswitch expression="#doCheckTagViewAuthReturnQuery.View#">
				<cfcase value="0">
					<cfset doCheckTagViewAuthReturn.auth = false>
				</cfcase>
				<cfcase value="1">
					<cfif doCheckTagViewAuthReturnQuery.StreetsID eq doCheckTagViewAuthReturn.StreetsID>
						<cfset doCheckTagViewAuthReturn.auth = true>
					</cfif>
				</cfcase>
				<cfcase value="2">
					<cfif CheckUserInBuddyList.RecordCount>
						<cfset doCheckTagViewAuthReturn.auth = true>
					</cfif>
				</cfcase>
				<cfcase value="3">
					<cfif CheckUserForIsInSameCrew.RecordCount>
						<cfset doCheckTagViewAuthReturn.auth = true>
					</cfif>
				</cfcase>
				<cfcase value="4">
					<cfif CheckUserForIsInSameCrew.RecordCount or CheckUserInBuddyList.RecordCount>
						<cfset doCheckTagViewAuthReturn.auth = true>
					</cfif>
				</cfcase>
				<cfcase value="5">
						<cfset doCheckTagViewAuthReturn.auth = true>
				</cfcase>
				<cfcase value="6">
					<cfset doCheckTagViewAuthReturn.auth = false>
				</cfcase>
				<cfdefaultcase>
					<cfset doCheckTagViewAuthReturn.auth = false>
				</cfdefaultcase>
			</cfswitch>

			</cfif>

		<cfreturn doCheckTagViewAuthReturn.auth />
	</cffunction>

	<cffunction name="getBubbleNav" access="remote" returntype="string">
		<cfset var getBubbleNavReturn = '' />
			<cfsavecontent variable="getBubbleNavReturn"><div align="left" class="bubblenav" id="bubbleNavDiv"><img src="/images/bubble_shareit.gif" alt="Share it" border="0" OnClick="shareTag('JSTAGID','JSTAGADDRESS');" /><a href="/streets/locationcomments.cfm?tag=JSTAGID"><img src="/images/bubble_comments.gif" alt="Comments" border="0" /></a><a href="postbulletin.cfm?Tag=JSTAGID"><img src="/images/bubble_bulliten.gif" alt="Post Bulliten" border="0" /></a><a href="/streets/locationalbums.cfm?tag=JSTAGID"><img src="/images/bubble_pictures.gif" alt="Pictures" border="0" /></a></div><div class="bubblecontents" id="bubbleContentsDiv" style="position:relative;">JSTAGDETAILS</div><div id="bubblePostedBy" class="tah11" style="position:absolute; right:-5px; bottom:-10px;"><a href="/streets/viewprofile.cfm?user=JSPOSTEDBYSTREETSID">JSPOSTEDBYNAME</a></div></cfsavecontent>
		
		<cfreturn getBubbleNavReturn />
	</cffunction>
	
</cfcomponent>