(function($){
    
$.fn.extend({ 
        
pixelmap: function(options) {

            
var defaults = {
				
				
// canvas settings
                
c_bg: "#B5B5B5",					
// background hex color of the canvas
				
cw: 900,						
// the width of the canvas
				
ch: 500,						
// the height of the canvas
				
				
// map layout settings
				
point_shape: "rect",			
// "circle" or "rect"
				
offsetW: 1,						
// horizontal spacing between each point of the map
				
offsetH: 1,						
// vertical spacing between each point of the map
				
pointW: 5,						
// width of the points of the map
				
pointH: 5,						
// height of the points of the map
				
pointS: 2,						
// scale value of the active point on roll over
				
durationIn: 200,				
// roll over animation speed
				
durationOut: 100,				
// roll out animation speed
				
				
c_deadPoint: "#fff",			
// hex color of the inactive points of the map
				
c_hotPoint: "#ff0000",			
// hex color of the active points on the map
				
c_hotPointOver: "#fff",			
// hex color of the roll over value of the active point 
				
c_hotStroke: "#ff0000",			
// hex color of the roll over value of the stroke of active point - set equal to c_hotPointOver if you don't want it visible
				
c_hotStrokeOver: "#ff0000",		
// hex color of the roll over value of the stroke of active point - set equal to c_hotPointOver if you don't want it visible
				
c_tierOne: "#eee",				
// hex color of the roll over value of the first tier of surrounding points
				
c_tierTwo: "#ddd", 				
// hex color of the roll over value of the second tier of surrounding points
				
				
b_shadow: true,					
// use a shadow on the active point
				
a_shadow: .3,					
// alpha value of the shadow
				
				
// animation settings
				
randomize: false,				
// randomize the slide show
				
slideshow: true,				
// use a slide show
				
slidedelay: 2000,				
// slide show delay
				
b_t1: false,					
// animate the first tier of surrounding points on rollover
				
b_t2: false,					
// animate the second tier of surrounding points on rollover
				
				
// tooltip settings
				
tooltip_delay: 0,				
// delay showing the tool tip after on rollover
				
tt_off: 5,						
// x and y offset (relative to the point) of the tooltip 
				
rad: 15,						
// radius corner of the tooltip background
				
win_target: "_self",			
// target of the link associated with the tooltip
				
tt_back_col: "#000000",			
// color of the tooltip background
				
tt_back_alpha: .8,				
// alpha value of the tooltip background
				
tt_font_col: "#ffffff",			
// font color of the tooltip text
				
tt_font: "14px Arial",			
// font of the tooltip text "##px FontName" (should use websafe fonts)
				
tt_stroke_col: "#ffffff",		
// stroke color of the tooltip background
				
tt_stroke_thick: 0,				
// stroke thickness of the tooltip background
				
				
// you will not have to edit these values unless you are changing the map graphic (which is not recommended)
				
columns: 131,
				
totalPoints: 9563,
				validPoints: [96,98,228,229,230,231,360,361,362,363,492,493,494,624,750,755,756,873,874,884,885,886,887,888,889,1004,1003,1002,1013,1014,1015,1016,1017,1018,1019,1020,1021,1029,1030,1031,1032,1134,1133,1132,1141,1143,1144, 1145,1146,1147,1148,1149,1150,1151,1160,1161,1162,1163,1164,1165,1296,1292,1291,1273,1274,1275,1276,1277,1278,1279,1280, 1281,1263,1264,1394,1393,1399,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1423,1424, 1555,1556,1557,1549,1548,1547,1546,1545,1544,1543,1542,1541,1540,1539,1538,1537,1536,1535,1534,1533,1532,1531,1530,1529, 1524,1655,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681, 1685,1686,1687,1688,1689,1347,1345,1475,1476,1477,1478,1606,1607,1608,1609,1610,1736,1737,1738,1739,1740,1741,1742,1711, 1712,1713,1714,1715,1786,1787,1776,1777,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806, 1807,1808,1809,1810,1811,1812,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1830,1831,1841,1842,1843,1844,1845,1846, 1847,1848,1849,1851,1852,1853,1854,1855,1856,1857,1862,1864,1866,1867,1868,1869,1870,1871,1872,1873,1874,1905,1906,1907, 1908,1909,1919,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942, 1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1957,1958,1959,1960,1971,1972,1973,1974,1975,1976,1977,1978, 1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003, 2004,2005,2035,2036,2037,2038,2039,2040,2041,2042,2046,2047,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059, 2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2070,2071,2072,2073,2074,2075,2076,2077,2078,2079,2080,2081,2082,2083, 2084,2085,2086,2087,2088,2089,2090,2091,2092,2093,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117, 2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2136,2137,2133,2134,2135,2165,2166,2167,2168,2169, 2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184,2185,2186,2187,2188,2189,2190,2191,2192,2193, 2194,2195,2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2213,2214,2215,2216,2217, 2218,2219,2220,2221,2222,2223,2224,2225,2233,2234,2235,2236,2237,2238,2239,2240,2241,2242,2243,2244,2245,2246,2247,2248, 2249,2250,2251,2252,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305, 2306,2307,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329, 2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353, 2354,2355,2356,2357,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382, 2383,2384,2385,2386,2387,2388,2389,2390,2391,2392,2265,2266,2267,2268,2269,2396,2397,2398,2399,2400,2414,2415,2416,2546, 2547,2548,2427,2428,2429,2430,2431,2433,2434,2435,2436,2437,2438,2439,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449, 2450,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473, 2474,2475,2476,2477,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2495,2496,2497,2498,2499,2500,2501,2502,2503, 2504,2505,2506,2507,2508,2509,2510,2511,2512,2513,2514,2515,2516,2517,2518,2519,2520,2521,2522,2524,2525,2527,2528,2529, 2530,2557,2558,2559,2560,2561,2562,2565,2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581, 2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601,2602,2603,2604,2605, 2606,2607,2608,2609,2610,2611,2612,2613,2614,2615,2616,2618,2628,2629,2630,2631,2632,2633,2634,2635,2636,2637,2638,2639, 2640,2641,2642,2643,2644,2645,2646,2647,2648,2649,2650,2651,2652,2654,2655,2659,2660,2661,2688,2689,2692,2694,2695,2696, 2697,2698,2699,2700,2701,2702,2703,2704,2705,2706,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720, 2721,2722,2723,2724,2725,2726,2727,2728,2729,2730,2731,2732,2733,2734,2735,2736,2737,2738,2739,2740,2741,2742,2743,2744, 2745,2746,2750,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777, 2778,2779,2780,2781,2782,2787,2788,2789,2792,2813,2821,2823,2825,2826,2827,2828,2829,2830,2831,2832,2833,2834,2835,2836, 2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2857,2858,2859,2860, 2861,2862,2863,2864,2865,2866,2867,2868,2869,2870,2871,2872,2873,2874,2875,2876,2888,2889,2890,2891,2892,2893,2894,2895, 2896,2897,2898,2899,2900,2901,2902,2903,2904,2905,2906,2907,2908,2909,2910,2911,2912,2913,2919,2920,2921,2922,2946,2952, 2953,2955,2956,2957,2958,2959,2960,2961,2962,2963,2964,2965,2966,2967,2968,2969,2970,2971,2972,2973,2974,2975,2976,2977, 2978,2979,2980,2981,2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3002, 3003,3004,3005,3020,3021,3022,3023,3024,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043, 3044,3050,3051,3052,3053,3054,3055,3075,3076,3082,3083,3084,3085,3086,3087,3088,3089,3090,3091,3092,3093,3094,3095,3096, 3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3113,3114,3115,3116,3117,3118,3119,3120, 3121,3122,3123,3124,3125,3126,3128,3129,3130,3132,3133,3134,3152,3153,3154,3155,3160,3161,3162,3163,3164,3165,3166,3167, 3168,3169,3170,3171,3172,3173,3174,3175,3176,3182,3183,3184,3185,3186,3175,3176,3213,3214,3215,3216,3217,3218,3219,3220, 3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244, 3245,3246,3247,3248,3249,3250,3251,3252,3253,3254,3255,3256,3262,3263,3264,3282,3283,3284,3292,3293,3294,3295,3296,3297, 3298,3299,3300,3301,3302,3303,3304,3305,3306,3307,3308,3309,3312,3313,3314,3315,3316,3317,3206,3207,3337,3338,3342,3343, 3344,3345,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367, 3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3393,3394,3395,3411,3412, 3413,3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3440,3441,3442,3443,3444,3445, 3446,3447,3448,3449,3467,3469,3470,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487,3488,3489, 3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511,3512,3513, 3514,3515,3516,3517,3524,3525,3526,3528,3540,3541,3542,3555,3556,3557,3558,3559,3560,3561,3562,3563,3564,3565,3566,3567, 3568,3569,3570,3571,3572,3573,3574,3575,3576,3577,3578,3579,3580,3598,3600,3603,3604,3605,3606,3607,3608,3609,3610,3611, 3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635, 3636,3637,3638,3639,3640,3641,3642,3643,3644,3645,3646,3647,3648,3649,3650,3655,3656,3661,3669,3581,3687,3688,3689,3690, 3691,3692,3693,3694,3695,3696,3697,3698,3699,3700,3701,3702,3703,3704,3705,3706,3707,3708,3709,3710,3711,3712,3732,3733, 3734,3735,3736,3737,3738,3739,3740,3741,3742,3743,3744,3745,3746,3747,3748,3749,3750,3751,3752,3753,3754,3755,3756,3757, 3758,3759,3760,3761,3762,3763,3764,3765,3766,3767,3768,3769,3770,3771,3772,3773,3774,3775,3776,3777,3778,3779,3780,3781, 3786,3794,3819,3820,3821,3822,3823,3824,3825,3826,3827,3828,3829,3830,3831,3832,3833,3834,3835,3836,3837,3838,3839,3840, 3841,3844,3843,3842,3862,3863,3864,3865,3866,3867,3868,3869,3870,3871,3872,3873,3874,3875,3876,3877,3878,3879,3880,3881, 3882,3883,3884,3885,3886,3887,3888,3889,3890,3891,3892,3893,3894,3895,3896,3897,3898,3899,3900,3901,3902,3903,3904,3905, 3906,3907,3908,3909,3910,3911,3912,3913,3916,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964, 3965,3966,3967,3968,3969,3970,3971,3974,3975,3993,3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007, 4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028,4029,4030,4031, 4032,4033,4034,4035,4036,4037,4038,4039,4040,4041,4042,4043,4082,4083,4084,4085,4086,4087,4088,4089,4090,4091,4092,4093, 4094,4095,4096,4097,4098,4099,4100,4101,4102,4103,4125,4126,4127,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,4138, 4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4159,4160,4161,4162, 4163,4164,4165,4166,4167,4168,4169,4170,4171,4172,4174,4176,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224, 4225,4226,4227,4228,4229,4230,4231,4254,4255,4256,4257,4258,4259,4260,4262,4263,4264,4265,4266,4267,4268,4269,4270,4271, 4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,4288,4289,4290,4291,4292,4293,4294,4295, 4296,4297,4298,4299,4300,4301,4302,4344,4345,4346,4347,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,4360, 4361,4362,4305,4306,4384,4385,4386,4387,4388,4391,4392,4394,4395,4396,4397,4398,4399,4403,4404,4405,4406,4408,4409,4410, 4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429,4430,4431,4436,4475,4476, 4477,4478,4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,4490,4491,4515,4516,4517,4518,4524,4523,4527,4528,4526, 4535,4536,4537,4540,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559, 4561,4562,4566,4607,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4649,4650,4651,4652,4655, 4657,4659,4660,4661,4666,4667,4668,4669,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682,4683,4684,4685,4686, 4687,4688,4689,4690,4691,4693,4696,4697,4738,4739,4740,4741,4742,4743,4744,4745,4746,4747,4748,4749,4750,4751,4752,4753, 4778,4779,4780,4781,4782,4783,4784,4793,4794,4795,4797,4798,4799,4800,4801,4802,4803,4804,4805,4806,4807,4808,4809,4810, 4811,4812,4813,4814,4815,4816,4817,4818,4819,4820,4821,4824,4826,4827,4870,4872,4873,4874,4875,4876,4877,4878,4879,4880, 4881,4882,4908,4909,4910,4911,4912,4913,4914,4915,4916,4918,4919,4920,4924,4925,4926,4927,4928,4929,4930,4931,4932,4933, 4934,4935,4936,4937,4938,4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950,4951,4952,4956,5002,5004,5005,5006, 5007,5008,5009,5010,5011,5012,5013,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054, 5055,5056,5057,5058,5059,5060,5061,5062,5063,5064,5065,5066,5067,5068,5069,5070,5071,5072,5073,5074,5075,5076,5077,5078, 5079,5080,5081,5082,5083,5084,5087,5134,5136,5137,5138,5139,5144,5168,5169,5170,5171,5172,5173,5174,5175,5176,5177,5178, 5179,5180,5181,5182,5183,5184,5186,5187,5188,5189,5190,5191,5193,5194,5195,5196,5197,5198,5199,5200,5201,5202,5203,5204, 5205,5206,5207,5208,5209,5210,5211,5212,5213,5214,5217,5265,5267,5268,5269,5270,5299,5300,5301,5302,5303,5304,5305,5306, 5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5318,5319,5320,5321,5322,5323,5325,5326,5327,5328,5329,5330,5331,5332, 5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5398,5399,5400,5401,5379,5380,5512,5406,5407,5408, 5409,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5450,5451,5452, 5453,5454,5455,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5529,5530,5531,5532,5533,5535, 5539,5540,5541,5542,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580, 5582,5583,5584,5585,5586,5592,5593,5594,5595,5596,5599,5600,5601,5602,5603,5604,5609,5662,5663,5664,5665,5666,5667,5675, 5691,5692,5693,5694,5695,5696,5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5713,5714,5715, 5716,5723,5724,5725,5726,5730,5731,5732,5733,5734,5740,5796,5797,5798,5807,5822,5823,5824,5825,5826,5827,5828,5829,5830, 5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5854,5855,5856,5861,5863,5864,5865,5866,5870,5871,5735, 5929,5930,5931,5932,5933,5934,5935,5936,5937,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968, 5969,5970,5971,5972,5973,5974,5975,5976,5977,5986,5987,5994,5995,5996,5997,6001,6002,6061,6062,6063,6064,6065,6066,6067, 6068,6069,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107, 6125,6127,6131,6132,6134,6194,6195,6196,6197,6198,6199,6200,6201,6202,6218,6219,6220,6221,6223,6224,6225,6226,6227,6228, 6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6118,6254,6256,6257,6261,6262,6263,6264,6265,6325,6326,6327,6328,6329, 6330,6331,6332,6333,6334,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6386,6387,6388,6391,6392, 6397,6456,6457,6458,6459,6460,6461,6462,6463,6464,6465,6466,6467,6451,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495, 6496,6497,6498,6518,6519,6520,6522,6525,6526,6527,6528,6529,6531,6587,6588,6589,6590,6591,6592,6593,6594,6595,6596,6597, 6598,6599,6600,6618,6619,6620,6621,6622,6623,6624,6625,6626,6627,6628,6650,6651,6654,6655,6656,6657,6658,6659,6660,6661, 6662,6664,6667,6668,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731,6732,6733,6750,6751,6752,6753, 6754,6755,6756,6757,6758,6759,6782,6783,6784,6785,6787,6792,6794,6797,6798,6799,6800,6796,6850,6851,6852,6853,6854,6855, 6856,6857,6858,6859,6860,6861,6862,6863,6881,6882,6883,6884,6885,6886,6887,6888,6889,6890,6915,6916,6917,6918,6919,6920, 6925,6926,6927,6928,6929,6931,6932,6933,6324,6455,6586,6717,6849,6980,6981,6982,6983,6984,6985,6986,6987,6988,6989,6990, 6991,6992,6993,6994,7012,7013,7014,7015,7016,7017,7018,7019,7020,7021,7055,7054,7053,7057,7064,7112,7113,7114,7115,7116, 7117,7118,7119,7120,7121,7122,7123,7124,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7155,7286,7285,7416,7417, 7419,7548,7547,7678,7182,7183,7184,7185,7186,7188,7189,7197,7244,7245,7246,7247,7248,7249,7250,7251,7252,7253,7254,7255, 7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7312,7313,7314,7315,7316,7317,7318,7319,7320,7328,7332,7376,7377,7378, 7379,7380,7381,7382,7383,7384,7385,7386,7405,7406,7407,7408,7409,7410,7411,7412,7441,7442,7443,7444,7445,7446,7447,7448, 7449,7450,7451,7452,7458,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7536,7537,7538,7539,7540,7541,7542,7543,7571, 7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7590,7638,7639,7640,7641,7642,7643,7644,7645,7667,7668, 7669,7670,7671,7672,7673,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7715,7716,7768,7769,7770,7771, 7772,7773,7774,7775,7776,7799,7800,7801,7802,7803,7804,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845, 7846,7847,7899,7900,7901,7902,7903,7904,7905,7906,7930,7931,7932,7933,7934,7965,7966,7967,7968,7969,7970,7971,7972,7973, 7974,7975,7976,7977,8030,8031,8032,8033,8034,8035,8036,8062,8063,8096,8097,8098,8099,8103,8104,8105,8106,8107,8108,8161, 8162,8163,8164,8165,8166,8227,8234,8235,8236,8237,8238,8239,8247,8292,8293,8294,8295,8296,8297,8367,8368,8369,8379,8422, 8423,8424,8425,8426,8510,8509,8640,8639,8631,8630,8770,8769,8901,8900,8553,8554,8555,8556,8684,8685,8686,8687,8815,8816, 8817,8946,8947,8948,9077,9078,9079,9208,9209,9213,9214,9340,9341,9352,9472,9473,9484]
            };
             
            var options = $.extend(defaults, options);
			var worldmap = Raphael(document.getElementById("map"), defaults.cw, defaults.ch);
			var validArray = [];
			var allPoints = [];
			var allShadows = [];
			var btnArray = [];//2500,2600,3969,4227,4354,3470,6221,3998,4657,4659,4924,5183,6256,5331,7452,7976,8108,4693,4697];
			var mapW = (131 * (defaults.pointW + defaults.offsetW));
			var mapH = (73 * (defaults.pointH + defaults.offsetH));
			var startW = Math.floor(worldmap.width/2 - (mapW/2));
			var startH = Math.floor(worldmap.height/2 - (mapH/2));
			var dataPoints = $('.points > li');
			var ttSet;
			var timer;
			var totalpoints;
			var currpoint = null;
			var currp;
			var currp_id;
			var b_activeshow = true;
			var b_animating = false;
			var p_over;
			var p_over_id;
			var is_touch;
			
			var methods = {
				
				init : function () {
						
					is_touch = $('div').runmethod('checkfortouch'); 
					
					var bg = worldmap.rect(0,0,defaults.cw,defaults.ch).attr({fill:defaults.c_bg,stroke:"none"});
					if (is_touch == false) {
						bg.mouseover(function (event) {
							if (b_activeshow == false) $('div').runmethod('deadover'); 
						});
					}
					
					$('div').runmethod('parsePoints'); 
					$('div').runmethod('createValid'); 
			  		
					for (var i = 0; i < defaults.totalPoints; i++)
					{
					  if (i == validArray[i].id){
							
						  if (validArray[i].btn == 1){
							
							  if (defaults.b_shadow == true){
								  //square
								  if (defaults.point_shape == "rect") var shadow = worldmap.rect(startW + (defaults.pointW + defaults.offsetW) * ( i % defaults.columns ), startH+(defaults.pointH + defaults.offsetH) * Math.floor( i / defaults.columns ), defaults.pointW, defaults.pointH).attr({fill: "#000", "fill-opacity": 1,stroke: "none"});
								  
								  if (defaults.point_shape == "circle") var shadow = worldmap.circle(startW + (defaults.pointW + defaults.offsetW) * ( i % defaults.columns ) + defaults.pointW/2, startH+(defaults.pointH + defaults.offsetH) * Math.floor( i / defaults.columns ) + defaults.pointW/2, defaults.pointW/2).attr({fill: "#000", "fill-opacity": 1,stroke: "none"});
								  
								  shadow.hide();
								  shadow.id = "shadow"+i;
								  allShadows.push(shadow);
									  }
								  
							  if (defaults.point_shape == "rect") var point = worldmap.rect(startW + (defaults.pointW + defaults.offsetW) * ( i % defaults.columns ), startH+(defaults.pointH + defaults.offsetH) * Math.floor( i / defaults.columns ), defaults.pointW, defaults.pointH).attr({fill: defaults.c_hotPoint, "fill-opacity": 1,stroke:defaults.c_hotStroke,"stroke-width":.5});
							  
							  if (defaults.point_shape == "circle") var point = worldmap.circle(startW + (defaults.pointW + defaults.offsetW) * ( i % defaults.columns ) + defaults.pointW/2, startH+(defaults.pointH + defaults.offsetH) * Math.floor( i / defaults.columns ) + defaults.pointW/2, defaults.pointW/2).attr({fill: defaults.c_hotPoint, "fill-opacity": 1,stroke:defaults.c_hotStroke,"stroke-width":.5});
							  
							  point.id = i;
							  point.ox = startW + (defaults.pointW + defaults.offsetW) * ( i % defaults.columns );
							  point.oy = startH+(defaults.pointH + defaults.offsetH) * Math.floor( i / defaults.columns );
							  point.col = defaults.c_hotPoint;
							  point.anim = false;
							  allPoints.push(point);
							  
							  point.mouseover(function (event) {
								 if (b_activeshow) $('div').runmethod('killshow');
								 $('div').runmethod('pointover',this,this.id); 
								  
							  });
							  
							  /* This is because IE sucks.
							  point.mouseout(function (event) {
								  if (!$.browser.msie && $.browser.opera) $('div').runmethod('pointout',this,this.id); 
								   
								  
							  });*/
						  
							  point.click(function (event) {
								   $('div').runmethod('pointclick',this,this.id); 
								  
							  });
							  
						  } else {
							   
							  if (defaults.point_shape == "rect") var point = worldmap.rect(startW + (defaults.pointW + defaults.offsetW) * ( i % defaults.columns ), startH+(defaults.pointH + defaults.offsetH) * Math.floor( i / defaults.columns ), defaults.pointW, defaults.pointH).attr({fill: defaults.c_deadPoint, "fill-opacity": 1,stroke: "none"});
							 
							  if (defaults.point_shape == "circle") var point = worldmap.circle(startW + (defaults.pointW + defaults.offsetW) * ( i % defaults.columns ) + defaults.pointW/2, startH+(defaults.pointH + defaults.offsetH) * Math.floor( i / defaults.columns ) + defaults.pointW/2, defaults.pointW/2).attr({fill: defaults.c_deadPoint, "fill-opacity": 1,stroke: "none"});
							   
							  point.id = i;
							  point.col = defaults.c_deadPoint;
							  
							  if (is_touch == false) {
								  point.mouseover(function (event) {
									if (b_activeshow == false) $('div').runmethod('deadover',this,this.id); 
									  
								  });
							  }
							  
							  allPoints.push(point);
							  
						  }
							  
					  }
					}
					
					
					$('div').runmethod('nextpoint');
					if (defaults.slideshow == false) $('div').runmethod('killshow');
				},
				
				checkfortouch : function() {
				  try {  
					document.createEvent("TouchEvent");  
					return true;  
				  } catch (e) {  
					return false;  
				  }  
				},
				
				pointover : function(p,id) {
					if (p_over) $('div').runmethod('deadover',p_over,p_over_id); 
					p_over = p;
					p_over_id = id;
					$('div').runmethod('createTooltip',id);
					if (defaults.b_t2 == true) $('div').runmethod('animateTierTwo',id,0);
					if (defaults.b_t1 == true) $('div').runmethod('animateTierOne',id,0);
					if (defaults.b_shadow == true) $('div').runmethod('animateShadow',"shadow"+id,0);
					p.toFront();
					p.animate({transform: "t0,0s"+defaults.pointS,fill:defaults.c_hotPointOver,stroke:defaults.c_hotStrokeOver,"stroke-width":.5}, defaults.durationIn);
					
					
				},
				
				pointout : function(p,id,fromBG) {
					
					if (ttSet) ttSet.remove();
					if (defaults.b_t2 == true) $('div').runmethod('animateTierTwo',id,1);
					if (defaults.b_t1 == true) $('div').runmethod('animateTierOne',id,1);
					if (defaults.b_shadow == true) $('div').runmethod('animateShadow',"shadow"+id,1);
					p.toFront();
					p.stop();
					p.animate({transform: "",fill:defaults.c_hotPoint,stroke:defaults.c_hotStroke,"stroke-width":.5}, defaults.durationOut);
				},
				
				pointclick : function(p,id) {
					
					var valid = $('div').runmethod('getValid',id);
					var url = valid.url;
					var tar = valid.tar;
					if (url != undefined){
						if (tar == "") { 
							tar = defaults.win_target;
						}
						window.open(url,tar);
					}
				},
				
				deadover : function() {
					//another artifact of IE sucking
					$('div').runmethod('pointout',p_over,p_over_id,true); 
					

					
				},
				
				// slide show functions
				
				nextpoint : function() {
					if (currpoint != null){
						currp_id = Number(btnArray[currpoint].id);
						currp = $('div').runmethod('sortID',currp_id);
						$('div').runmethod('pointout',currp,currp_id);
					}else{
						currpoint = 0;
					}
					
					currpoint ++;
					
					if (currpoint > totalpoints - 1){
						currpoint = 0;	
					}
					
					if (defaults.randomize == true) currpoint = Math.floor(Math.random()*btnArray.length);
					
					currp_id = Number(btnArray[currpoint].id);
					currp = $('div').runmethod('sortID',currp_id);
					$('div').runmethod('pointover',currp,currp_id);
					
					clearTimeout(timer);
					timer = setTimeout( "$('div').runmethod('nextpoint')",defaults.slidedelay);
				},
				
				killshow : function() {
					clearTimeout(timer);
					$('div').runmethod('pointout',currp,currp_id);
					b_activeshow = false;
				},
				
				parsePoints : function() {
					dataPoints.each(function(){
						var id = this.id;
						btnArray.push({id:id,data:$(this),url:$(this).find('a').attr('href'),tar:$(this).find('a').attr('target')});
						});
					totalpoints = btnArray.length;
				},
				
				createTooltip : function(id){
					if (ttSet) ttSet.remove();
					var p = $('div').runmethod('sortID',id);
					var data = $('div').runmethod('getValid',id).data;
					var dataS = $('<div>').append(data.find('#point_image').clone()).remove().html();
					
					
					var tooltip = $('div').runmethod('tooltip',p.ox,p.oy,data,dataS); 
						
				},
				
				getAttr : function(str,attr){
					
					var startIndex = str.indexOf(attr) + attr.length;
					var n = 0;
					for (var i=1; i<5;i++){
						var _sub = str.substring(startIndex,startIndex+i);
						if (isNaN(_sub)) {
							return Number(n);
							}
						n = _sub;
						
					}
				},
				
				tooltip : function(ox,oy,data,dataS){
					var tt = worldmap.set();
					var tt_txt = worldmap.set();
					var tt_txt_group = worldmap.set();
					var padH = 10;
					var padW = 10;
					var off = defaults.tt_off;
					var bb;
					var t_bb;
					var t_gr_bb;
					var tt_w;
					var tt_h;
					
					var header = data.find('point_header').html() + "";
					header = header.replace(/<br>/g, "\n");
					if (header == "null") header = null;
					
					
					var caption = data.find('point_caption').html() + "";
					caption = caption.replace(/<br>/g, "\n");
					if (caption == "null") caption = null;
					
					var image = data.find('#point_image').attr('src');
					var imageW;
					var imageH;
					
					if ($.browser.msie || $.browser.opera) {
						imageW = $('div').runmethod('getAttr',dataS,'width="');
						imageH = $('div').runmethod('getAttr',dataS,'height="');
					}else{
						imageW = data.find('#point_image').attr('width');
						imageH = data.find('#point_image').attr('height');
						}
					
					if (image && !header && !caption){
						tt.push(worldmap.image(image,0,0,imageW,imageH));
						bb = tt.getBBox();
						tt_w = bb.width;
						tt_h = bb.height;
					
					} else {
						var imgW = 0;
						if (image){
							
							tt.push(worldmap.image(image,padW/1.5,padH/1.5,imageW,imageH));
							imgW = imageW;
						}
						var headH = 0;
						if (header){
							var headAttr = {font: defaults.tt_font,fill:defaults.tt_font_col};
							var padX = padW;
							if (image) padX = padW*1.5
							tt_txt_group.push(worldmap.text(imgW+padX, 0, header).attr(headAttr).attr({"text-anchor":"start"}));
							t_gr_bb = tt_txt_group.getBBox();
							
							
							tt_txt.push(tt_txt_group);
							tt_txt_group.translate(0,-t_gr_bb.height/2 - 2); 
							//the minus 2 is a quick fix.
							tt_txt.translate(0,t_gr_bb.height);
							
							tt.push(tt_txt);
							
							bb = tt.getBBox();
							t_bb = tt_txt.getBBox();
							
						}
	
						
						tt_w = bb.width+padW*2;
						tt_h = bb.height+padH;
						tt.push(worldmap.rect(0,0,bb.width+padW*2,bb.height+padH,defaults.rad).attr({fill: defaults.tt_back_col, stroke: defaults.tt_stroke_col, "stroke-width": defaults.tt_stroke_thick, "fill-opacity": defaults.tt_back_alpha}));
						bb = tt.getBBox();
						
						tt_txt.translate(0,(bb.height - t_gr_bb.height)/2);
					}
					
					ttSet = tt;
					
					var offX = off;
					var offY = off;
					
					if (ox <= defaults.cw/2) { 
						ox += offX;
					}
					
					if (oy <= defaults.cw/2) { 
						oy += offY;
					}
					
					if (ox >= defaults.cw/2) { 
						ox -= tt_w - defaults.pointW + offX;
						 
					}
					if (oy >= defaults.ch/2) { 
						oy -= tt_h - defaults.pointH +offY+ offY;
					}
					ttSet.translate(ox,oy);
					ttSet.toFront();
					ttSet.attr({opacity: 0});
					
					for (var i = 0; i<ttSet.length-1; i++){
						ttSet[i].toFront();
						}
					
					var tt_anim = Raphael.animation({opacity:1}, defaults.durationIn);
					ttSet.animate(tt_anim.delay(defaults.tooltip_delay));
					
								 
				},
				
				createValid : function() {
					
					var n = 0;
					for (var i = 0; i < defaults.totalPoints; i++)
					{
						validArray[i] = {id:-1,btn:0};
					}
					
					while(n<defaults.validPoints.length){
						validArray[defaults.validPoints[n]].id = defaults.validPoints[n];
						n++;
					}
					
					n=0;
					while(n<btnArray.length){
						validArray[btnArray[n].id].btn = 1;
						n++;
					}
					 
				},
				
				animateShadow : function(id,dir) {
						
						var params = {transform: "t0,0s.5","fill-opacity": 1};
						var element =  $('div').runmethod('sortShadow',id);
						if(element){
							element.toFront();
							element.show();
							if (dir == 0) {
								params = {transform: "t-1.5,-1.5s"+defaults.pointS,"fill-opacity": defaults.a_shadow}; 
								element.animate(Raphael.animation(params, defaults.durationIn));
							}else{
								element.stop();
								element.animate(Raphael.animation(params, defaults.durationOut,[],function(){element.hide();}));
								}
						}
					},
					
				sortShadow : function(id) {
					
						for (var i = 0; i<allShadows.length; i++){
							if (allShadows[i].id == id)  {
								return allShadows[i];
							}
						}
					},
					
				animateTierOne : function(id,dir) {
					var off = -1;
					var tempArray;
					var params;
					
					if (defaults.point_shape == "rect") tempArray = [{id:id+1,dx:off,dy:0},{id:id-1,dx:-off,dy:0},{id:id+defaults.columns,dx:0,dy:off},{id:id+(defaults.columns+1),dx:off,dy:off},{id:id+(defaults.columns-1),dx:-off,dy:off},{id:id-defaults.columns,dx:0,dy:-off},{id:id-(defaults.columns-1),dx:off,dy:-off},{id:id-(defaults.columns+1),dx:-off,dy:-off}];
					
					if (defaults.point_shape == "circle") tempArray = [{id:id+1,dx:off,dy:0},{id:id-1,dx:-off,dy:0},{id:id+defaults.columns,dx:0,dy:off},{id:id-defaults.columns,dx:0,dy:-off},{id:id+(defaults.columns+1),dx:(2.5*off),dy:(2.5*off)},{id:id+(defaults.columns-1),dx:(2.5*-off),dy:(2.5*off)},{id:id-(defaults.columns-1),dx:(2.5*off),dy:(2.5*-off)},{id:id-(defaults.columns+1),dx:(2.5*-off),dy:(2.5*-off)}];
					
					for (var i = 0; i<tempArray.length; i++){
						
						var element = $('div').runmethod('sortID',tempArray[i].id);
						if(element){
							element.toFront();
							if (dir == 0) {
								
								params = {transform: "t"+tempArray[i].dx+","+tempArray[i].dy+"s1.3",fill:defaults.c_tierOne,"fill-opacity": 1, "stroke-width":0}; 
								element.animate(Raphael.animation(params, defaults.durationIn));
							}else{
								params = {transform: "",fill:element.col,"fill-opacity": 1, "stroke-width":0};
								element.stop();
								element.animate(Raphael.animation(params, defaults.durationOut));
								}
							
						}
					}
				},
				
				animateTierTwo : function(id,dir) {
					var off = -2.8;
					var tempArray;
					var params;
					
					if (defaults.point_shape == "rect") tempArray = [{id:id-(defaults.columns * 2 +2),dx:-off,dy:-off},{id:id-(defaults.columns*2+1),dx:(-off/2) ,dy:-off},{id:id-(defaults.columns*2),dx:0,dy:-off},{id:id-(defaults.columns*2-1),dx:(off/2),dy:-off},{id:id-(defaults.columns*2-2),dx:off,dy:-off},{id:id-(defaults.columns+2),dx:-off,dy:(-off/2)},{id:id-(defaults.columns-2),dx:off,dy:(-off/2)},{id:id-2,dx:-off,dy:0},{id:id+2,dx:off,dy:0},{id:id+(defaults.columns-2),dx:-off,dy:(off/2)},{id:id+(defaults.columns+2),dx:off,dy:(off/2)},{id:id+(defaults.columns*2-2),dx:-off,dy:off},{id:id+(defaults.columns*2-1),dx:(-off/2),dy:off},{id:id+(defaults.columns*2),dx:0,dy:off},{id:id+(defaults.columns*2+1),dx:(off/2),dy:off},{id:id+(defaults.columns*2+2),dx:off,dy:off}];
					
					if (defaults.point_shape == "circle") tempArray = [{id:id-(defaults.columns*2+1),dx:(-off/1.75) ,dy:(1.5*-off)},{id:id-(defaults.columns*2),dx:0,dy:-off},{id:id-(defaults.columns*2-1),dx:(off/1.75),dy:(1.5*-off)},{id:id-(defaults.columns+2),dx:(1.6*-off),dy:(-off/2.25)},{id:id-(defaults.columns-2),dx:(1.6*off),dy:(-off/2.25)},{id:id-2,dx:-off,dy:0},{id:id+2,dx:off,dy:0},{id:id+(defaults.columns-2),dx:(1.6*-off),dy:(off/2.25)},{id:id+(defaults.columns+2),dx:(1.6*off),dy:(off/2.25)},{id:id+(defaults.columns*2-1),dx:(-off/1.75),dy:(1.5*off)},{id:id+(defaults.columns*2),dx:0,dy:off},{id:id+(defaults.columns*2+1),dx:(off/1.75),dy:(1.5*off)}];
					
					
					for (var i = 0; i<tempArray.length; i++){
						var element = $('div').runmethod('sortID',tempArray[i].id);//sortID(tempArray[i].id);
						if(element){
							element.toFront();
							if (dir == 0) {
								params = {transform: "t"+tempArray[i].dx+","+tempArray[i].dy+"s1",fill:defaults.c_tierTwo,"fill-opacity": 1, "stroke-width":0}; 
								element.animate(Raphael.animation(params, defaults.durationIn));
							}else{
								params = {transform: "",fill:element.col,"fill-opacity": 1, "stroke-width":0};
								element.stop();
								element.animate(Raphael.animation(params, defaults.durationOut));
								}
								
							}
						}
					},
				
				sortID : function(id) {
					var p;
					
					for (var i = 0; i<allPoints.length; i++){
						p = allPoints[i];
						if (p.id == id)  {
							return p;
						}
					}
				},
				
				getValid : function(id) {
					for (var i = 0; i<btnArray.length; i++){
						if (btnArray[i].id == id)  {
							return btnArray[i];
						}
					}
				}
					
				
			
			}//end methods
			$.fn.runmethod = function( method ) {
    
				// Method calling logic
				if ( methods[method] ) {
				  return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
				} else if ( typeof method === 'object' || ! method ) {
				  return methods.init.apply( this, arguments );
				} else {
				  $.error( 'Method ' +  method + ' does not exist on jQuery.tooltip' );
				}    
			  
			  };
			  
			$('div').runmethod(); 
        }
    });
})(jQuery);


