// Globals
var g_logged_in = false;

// Featured spots that get displayed on  home page
var g_featured_spots = [162006, 145003, 178002]; // spot id's

// enum used for spot features
// NOTE: should match the class specified in spot_features.py
// IMPORTANT: If you add a new feature make sure and add in both places!!!!

// HTML NOTE:  The keys to this map need to match the HTML input checkbox values exactly!!!
var spot_features_enum =
{
	"none":			        0x00000000, 
	"mini_ramp":            0x00000001, 
	"spine_ramp":		    0x00000002, 
	"vert_ramp":		    0x00000004, 
	"full_pipe":            0x00000008, 
	"bowl":			        0x00000010, 
	"pool":     			0x00000020, 
	"cradle":			    0x00000040, 
	"clamshell":		    0x00000080, 
	"hip":                  0x00000100,
	"curb":     			0x00000200,
	"stairs":			    0x00000400,
	"rail":     			0x00000800,
	"bank":			        0x00001000,
	"bench":    			0x00002000,
	"ledge":			    0x00004000,
	"gap":      			0x00008000,
	"manual_pad":   		0x00010000,
	"pyramid":			    0x00020000,
	"indoor":			    0x00040000,
	"outdoor":			    0x00080000,
	"lights":			    0x00100000,
	"concrete":			    0x00200000,
	"wood":                 0x00400000,
	"entrance_fee":     	0x00800000,
	"pads_required":	    0x01000000,
	"bust":					0x02000000,
	"skate_shop":		    0x04000000,
	"downhill":             0x08000000,
	"freeride":             0x10000000,
	"slalom":               0x20000000
};

var spot_features_list =
[
	{"mask": 0x00000000, "name": "none", "value": "None", "type": "none"},
	{"mask": 0x00000001, "name": "mini_ramp", "value": "Mini Ramp", "type": "tranny"},
	{"mask": 0x00000002, "name": "spine_ramp", "value": "Spine Ramp", "type": "tranny"},
	{"mask": 0x00000004, "name": "vert_ramp", "value": "Vert Ramp", "type": "tranny"},
	{"mask": 0x00000008, "name": "full_pipe", "value": "Full Pipe", "type": "tranny"},
	{"mask": 0x00000010, "name": "bowl", "value": "Bowl", "type": "tranny"},
	{"mask": 0x00000020, "name": "pool", "value": "Pool", "type": "tranny"},
	{"mask": 0x00000040, "name": "cradle", "value": "Cradle", "type": "tranny"},
	{"mask": 0x00000080, "name": "clamshell", "value": "Clamshell", "type": "tranny"},
	{"mask": 0x00000100, "name": "hip", "value": "Hip", "type": "tranny"},
	{"mask": 0x00000200, "name": "curb", "value": "Curb", "type": "street"},
	{"mask": 0x00000400, "name": "stairs", "value": "Stairs", "type": "street"},
	{"mask": 0x00000800, "name": "rail", "value": "Rail", "type": "street"},
	{"mask": 0x00001000, "name": "bank", "value": "Bank", "type": "street"},
	{"mask": 0x00002000, "name": "bench", "value": "Bench", "type": "street"},
	{"mask": 0x00004000, "name": "ledge", "value": "Ledge", "type": "street"},
	{"mask": 0x00008000, "name": "gap", "value": "Gap", "type": "street"},
	{"mask": 0x00010000, "name": "manual_pad", "value": "Manual Pad", "type": "street"},
	{"mask": 0x00020000, "name": "pyramid", "value": "Pyramid", "type": "street"},
	{"mask": 0x00040000, "name": "indoor", "value": "Indoor", "type": "misc"},
	{"mask": 0x00080000, "name": "outdoor", "value": "Outdoor", "type": "misc"},
	{"mask": 0x00100000, "name": "lights", "value": "Lights", "type": "misc"},
	{"mask": 0x00200000, "name": "concrete", "value": "Concrete", "type": "misc"},
	{"mask": 0x00400000, "name": "wood", "value": "Wood", "type": "misc"},
	{"mask": 0x00800000, "name": "entrance_fee", "value": "Entrance Fee", "type": "misc"},
	{"mask": 0x01000000, "name": "pads_required", "value": "Pads Required", "type": "misc"},
	{"mask": 0x02000000, "name": "bust", "value": "Bust", "type": "misc"},
	{"mask": 0x04000000, "name": "skate_shop", "value": "Skate Shop", "type": "misc"},
	{"mask": 0x08000000, "name": "downhill", "value": "Downhill", "type": "longboard"},
	{"mask": 0x10000000, "name": "freeride", "value": "Freeride", "type": "longboard"},
	{"mask": 0x20000000, "name": "slalom", "value": "Slalom", "type": "longboard"}
];

// Returns comma seperated feature list
function GetSpotFeaturesText(feature_bits)
{
	var ret_features = "";
	var first = true;
	for (var i = 0; i < spot_features_list.length; ++i)
	{
		var data = spot_features_list[i];
		if (data.mask & feature_bits)
		{
			if (!first)
				ret_features += ", ";
				
			first = false;
			
			ret_features += data.value;
		}	
	}
	
	if (ret_features.length === 0)
		ret_features = "None";
	
	return ret_features;
}

//////////////////////////////////////////////////////////////////////////////////

var feature_groups_enum =
{
	"tranny":		1,
	"street":		2,
	"longboard":	3,
	"misc":			4
};

////////////
// Tranny //
////////////
var tranny_features_enum =
{
	"tranny_none":	        0x00000000, 
	"quarter_pipe":			0x00000001,
	"half_pipe":            0x00000002, 
	"full_pipe":			0x00000004, 
	"bowl":					0x00000008, 
	"backyard_pool":        0x00000010, 
	"mini":			        0x00000020, 
	"vert":     			0x00000040, 
	"over_vert":			0x00000080, 
	"spine":			    0x00000100, 
	"metal_coping":         0x00000200,
	"pool_coping": 			0x00000400,
	"snake_run":			0x00000800
};

var tranny_features_list =
[
	{"mask": 0x00000000, "name": "tranny_none", "value": "None", "type": "tranny"},
	{"mask": 0x00000001, "name": "quarter_pipe", "value": "Quarter Pipe", "type": "tranny"},
	{"mask": 0x00000002, "name": "half_pipe", "value": "Half Pipe", "type": "tranny"},
	{"mask": 0x00000004, "name": "full_pipe", "value": "Full Pipe", "type": "tranny"},
	{"mask": 0x00000008, "name": "bowl", "value": "Bowl", "type": "tranny"},
	{"mask": 0x00000010, "name": "backyard_pool", "value": "Backyard Pool", "type": "tranny"},
	{"mask": 0x00000020, "name": "mini", "value": "Mini", "type": "tranny"},
	{"mask": 0x00000040, "name": "vert", "value": "Vert", "type": "tranny"},
	{"mask": 0x00000080, "name": "over_vert", "value": "Over-Vert", "type": "tranny"},
	{"mask": 0x00000100, "name": "spine", "value": "Spine", "type": "tranny"},
	{"mask": 0x00000200, "name": "metal_coping", "value": "Metal Coping", "type": "tranny"},
	{"mask": 0x00000400, "name": "pool_coping", "value": "Pool Coping", "type": "tranny"},
	{"mask": 0x00000800, "name": "snake_run", "value": "Snake Run", "type": "tranny"}
];

////////////
// Street //
////////////
var street_features_enum =
{
	"street_none":	        0x00000000, 
	"curb":		            0x00000001, 
	"stairs":				0x00000002, 
	"rail":					0x00000004, 
	"bank":					0x00000008, 
	"ledge":			    0x00000010, 
	"gap":     				0x00000020, 
	"manual_pad":			0x00000040, 
	"ditch":			    0x00000080
};

var street_features_list =
[
	{"mask": 0x00000000, "name": "street_none", "value": "None", "type": "street"},
	{"mask": 0x00000001, "name": "curb", "value": "Curb", "type": "street"},
	{"mask": 0x00000002, "name": "stairs", "value": "Stairs", "type": "street"},
	{"mask": 0x00000004, "name": "rail", "value": "Rail", "type": "street"},
	{"mask": 0x00000008, "name": "bank", "value": "Bank", "type": "street"},
	{"mask": 0x00000010, "name": "ledge", "value": "Ledge", "type": "street"},
	{"mask": 0x00000020, "name": "gap", "value": "Gap", "type": "street"},
	{"mask": 0x00000040, "name": "manual_pad", "value": "Manual Pad", "type": "street"},
	{"mask": 0x00000080, "name": "ditch", "value": "Ditch", "type": "street"}
];

///////////////
// Longboard //
///////////////
var longboard_features_enum =
{
	"longboard_none":	    0x00000000, 
	"downhill":             0x00000001, 
	"freeride":				0x00000002, 
	"slalom":				0x00000004,
	"parking_garage":		0x00000008
};

var longboard_features_list =
[
	{"mask": 0x00000000, "name": "longboard_none", "value": "None", "type": "longboard"},
	{"mask": 0x00000001, "name": "downhill", "value": "Downhill", "type": "longboard"},
	{"mask": 0x00000002, "name": "freeride", "value": "Freeride", "type": "longboard"},
	{"mask": 0x00000004, "name": "slalom", "value": "Slalom", "type": "longboard"},
	{"mask": 0x00000008, "name": "parking_garage", "value": "Parking Garage", "type": "longboard"}
];

//////////
// Misc //
//////////
var misc_features_enum =
{
	"misc_none":	        0x00000000, 
	"indoor":               0x00000001, 
	"outdoor":				0x00000002, 
	"lights":				0x00000004, 
	"concrete":				0x00000008, 
	"wood":			        0x00000010, 
	"skatepark":   			0x00000020, 
	"diy":					0x00000040, 
	"backyard":			    0x00000080, 
	"natural_terrain":      0x00000100,
	"skate_shop": 			0x00000200,
	"entrance_fee":			0x00000400,
	"pads_required":		0x00000800,
	"bust":					0x00001000
};

var misc_features_list = 
[
	{"mask": 0x00000000, "name": "misc_none", "value": "None", "type": "misc"},
	{"mask": 0x00000001, "name": "indoor", "value": "Indoor", "type": "misc"},
	{"mask": 0x00000002, "name": "outdoor", "value": "Outdoor", "type": "misc"},
	{"mask": 0x00000004, "name": "lights", "value": "Lights", "type": "misc"},
	{"mask": 0x00000008, "name": "concrete", "value": "Concrete", "type": "misc"},
	{"mask": 0x00000010, "name": "wood", "value": "Wood", "type": "misc"},
	{"mask": 0x00000020, "name": "skatepark", "value": "Skatepark", "type": "misc"},
	{"mask": 0x00000040, "name": "diy", "value": "DIY", "type": "misc"},
	{"mask": 0x00000080, "name": "backyard", "value": "Backyard", "type": "misc"},
	{"mask": 0x00000100, "name": "natural_terrain", "value": "Natural Terrain", "type": "misc"},
	{"mask": 0x00000200, "name": "skate_shop", "value": "Skate Shop", "type": "misc"},
	{"mask": 0x00000400, "name": "entrance_fee", "value": "Entrance Fee", "type": "misc"},
	{"mask": 0x00000800, "name": "pads_required", "value": "Pads Required", "type": "misc"},
	{"mask": 0x00001000, "name": "bust", "value": "Bust", "type": "misc"}
];

function GetFeaturesArray(features_list, feature_bits)
{
	var ret_features = new Array();
	for (var i = 0; i < features_list.length; ++i)
	{
		var data = features_list[i];
		if (data.mask & feature_bits)
		{
			ret_features.push(data.value);
		}	
	}
	return ret_features;
}

// Returns comma seperated feature list
function GetFeaturesText(features_list, feature_bits)
{
	var features_array = GetFeaturesArray(features_list, feature_bits);
	var ret_features = "";
	var first = true;
	for (var i = 0; i < features_array.length; ++i)
	{
		if (!first)
			ret_features += ", ";
			
		first = false;
		
		ret_features += features_array[i];
	}
	
	if (ret_features.length === 0)
		ret_features = "None";
	
	return ret_features;
}

function linkify(text)
{
	// Nabbed from - http://stackoverflow.com/questions/37684/replace-url-with-html-links-javascript">http://stackoverflow.com/questions/37684/replace-url-with-html-links-javascript
    if (text) 
    {
		//URLs starting with http://, https://, or ftp://
		var reg = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
		text = text.replace(reg, '<a href="$1" rel="nofollow" target="_blank">$1</a>');

		//URLs starting with www. (without // before it, or it'd re-link the ones done above)				
		reg = /(^|[^\/])(www\.[\S]+(\b|$))/gim;
		text = text.replace(reg, '$1<a href="http://$2" rel="nofollow" target="_blank">$2</a>');
		
		//Change email addresses to mailto: links
		reg = /(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim;
		text = text.replace(reg, '<a href="mailto:$1" rel="nofollow">$1</a>');
    }
    return text;
}
