var pul_root = 'http://pling-u-like.com/';
// var pul_root = 'http://plingulike:55/';
var pul_mute = false;
(function(window, document, version, callback) {
    var j, d;
    var loaded = false;
    if (!(j = window.jQuery) || version > j.fn.jquery || callback(j, loaded)) {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = pul_root+"assets/js/jquery-1.4.2.min.js";
        script.onload = script.onreadystatechange = function() {
            if (!loaded && (!(d = this.readyState) || d == "loaded" || d == "complete")) {
                callback((j = window.jQuery).noConflict(1), loaded = true);
                j(script).remove();
            }
        };
        document.documentElement.childNodes[0].appendChild(script)
    }
})(window, document, "1.4.2", function($, jquery_loaded) {
    // Widget code here
		
		$.noConflict();
		$.getScript(pul_root+"assets/js/soundmanager2.js",function(){
			soundManager.url = pul_root+'assets/flash/';
			soundManager.debugMode = false;
			soundManager.onready(
				function(){

				soundManager.createSound({
				 id:'pul_countertick',
				 url:pul_root+'assets/audio/clocktic.mp3'
				});
				
				soundManager.createSound({
				 id:'pul_countertock',
				 url:pul_root+'assets/audio/clocktoc.mp3'
				});

				soundManager.createSound({
				 id:'pul_pling',
				 url:pul_root+'assets/audio/coins.mp3'
				});

				soundManager.createSound({
				 id:'pul_pin',
				 url:pul_root+'assets/audio/hammer hit.mp3'
				});

				soundManager.createSound({
				 id:'pul_spin',
				 url:pul_root+'assets/audio/spinningwheel.mp3'
				});

				soundManager.createSound({
				 id:'pul_bell',
				 url:pul_root+'assets/audio/bell.mp3'
				});

			});
			
			if(pul_mute){
				soundManager.mute();
			}
		});
		
		
		$("head").append("<link>");
	    css = $("head").children(":last");
	    css.attr({
	      rel:  "stylesheet",
	      type: "text/css",
	      href: pul_root+"plingulike.css",
		  media: "all",
		  title: "no title",
		  charset: "utf-8"
	    });

	 

		if ($.browser.msie && $.browser.version.substr(0,1)==7) {
			$("head").append("<link>");
		    css = $("head").children(":last");
		    css.attr({
		      rel:  "stylesheet",
		      type: "text/css",
		      href: pul_root+"assets/css/ie7.css",
			  media: "all"
		    });
		}
		
		if ($.browser.msie && $.browser.version.substr(0,1)==6) {
			$("head").append("<link>");
		    css = $("head").children(":last");
		    css.attr({
		      rel:  "stylesheet",
		      type: "text/css",
		      href: pul_root+"assets/css/ie6.css",
			  media: "all"
		    });
			
			$("head").append("<style>");
		    htc = $("head").children(":last");
		    htc.attr({
		      type: "text/css"
			})
			htc.text('img, div { behavior: url(iepngfix.htc) }')
			
		}
		
		function is_array (mixed_var) {
		    // http://kevin.vanzonneveld.net
		    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
		    // +   improved by: Legaev Andrey
		    // +   bugfixed by: Cord
		    // +   bugfixed by: Manish
		    // +   improved by: Onno Marsman
		    // +   improved by: Brett Zamir (http://brett-zamir.me)
		    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
		    // %        note 1: In php.js, javascript objects are like php associative arrays, thus JavaScript objects will also
		    // %        note 1: return true  in this function (except for objects which inherit properties, being thus used as objects),
		    // %        note 1: unless you do ini_set('phpjs.objectsAsArrays', true), in which case only genuine JavaScript arrays
		    // %        note 1: will return true
		    // *     example 1: is_array(['Kevin', 'van', 'Zonneveld']);
		    // *     returns 1: true
		    // *     example 2: is_array('Kevin van Zonneveld');
		    // *     returns 2: false
		    // *     example 3: is_array({0: 'Kevin', 1: 'van', 2: 'Zonneveld'});
		    // *     returns 3: true
		    // *     example 4: is_array(function tmp_a(){this.name = 'Kevin'});
		    // *     returns 4: false

		    var key = '';
		    var getFuncName = function (fn) {
		        var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn);
		        if (!name) {
		            return '(Anonymous)';
		        }
		        return name[1];
		    };

		    if (!mixed_var) {
		        return false;
		    }

		    // BEGIN REDUNDANT
		    this.php_js = this.php_js || {};
		    this.php_js.ini = this.php_js.ini || {};
		    // END REDUNDANT

		    if (typeof mixed_var === 'object') {

		        if (this.php_js.ini['phpjs.objectsAsArrays'] &&  // Strict checking for being a JavaScript array (only check this way if call ini_set('phpjs.objectsAsArrays', 0) to disallow objects as arrays)
		            (
		            (this.php_js.ini['phpjs.objectsAsArrays'].local_value.toLowerCase &&
		                    this.php_js.ini['phpjs.objectsAsArrays'].local_value.toLowerCase() === 'off') ||
		                parseInt(this.php_js.ini['phpjs.objectsAsArrays'].local_value, 10) === 0)
		            ) {
		            return mixed_var.hasOwnProperty('length') && // Not non-enumerable because of being on parent class
		                            !mixed_var.propertyIsEnumerable('length') && // Since is own property, if not enumerable, it must be a built-in function
		                                getFuncName(mixed_var.constructor) !== 'String'; // exclude String()
		        }

		        if (mixed_var.hasOwnProperty) {
		            for (key in mixed_var) {
		                // Checks whether the object has the specified property
		                // if not, we figure it's not an object in the sense of a php-associative-array.
		                if (false === mixed_var.hasOwnProperty(key)) {
		                    return false;
		                }
		            }
		        }

		        // Read discussion at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_is_array/
		        return true;
		    }

		    return false;
		}
		
		function pul_start(pul_location){	
			pul_location_ =	pul_location
			pul_getplings();	
			pul_scrollwrap("-619px");
			$(document).oneTime(0,function(){
				if(pul_object.loaded){
					initialise_game();
				}else{
					pul_object.current_status = "started_not_loaded";
				}
			})
		}
		
		function pul_initialise(){

			$('#pul_clouds').animate({ 
			    left: "-400px"
			  }, 100000 )	.animate({ 
				    left: "0"
				  }, 100000 );

			$('#pul_start').click(function(el){
				pul_location_ = $('#pul_get_location').val();
				pul_start(pul_location_)
			})
			
			$('#pul_skip').click(function(el){
				
				// pul_end();
				pul_pickpling();
			})

			$('#pul_get_started').click(function(el){
					if(typeof pul_set_location === 'undefined'){
						$('#pul_welcome').animate({'opacity':0}).css({'zIndex':0,'display':'none'});
						$('#pul_get_age_and_location').animate({'opacity':100}).css({'zIndex':12,'display':'block'});
					}else{
						pul_start(pul_set_location)
					}		
			})

			$('#pul_togglesounds').click(function(ev){
				if(this.title == 'sounds on'){
					soundManager.muteAll();
					this.title = 'sounds off';
					this.innerHTML = 'turn sounds on';
				}else{
					soundManager.unmuteAll()
					this.title = 'sounds on';	
					this.innerHTML = 'turn sounds off';
				}
				
			})

			$(document).everyTime(500, function(i) {
			 pul_changeBgPos('pul_bell_lights_surround',200,2);
			}, 0);

			$(document).everyTime(700, function(i) {
			 pul_changeBgPos('pul_bell_lights',372,2);
			}, 0);
			
			
			
			// pul_scrollwrap("-619px");
			// $(document).oneTime(5000,function(){
			// 	initialise_game();
			// })
		}
		
		function pul_get(){
				$('#pul_location').append("\n<div id=\"pul_frame\">\n<div id=\"pul_frame_wrap\">\n\t<div id=\"pul_frame_top\"><\/div>\n\t<div id=\"pul_frame_left\"><\/div>\n\t<div id=\"pul_frame_right\"><\/div>\n\t<div id=\"pul_frame_bottom\"><\/div>\n<\/div>\n\t\n\t\t<div id=\"pul_wrap\">\n\n\t\t<div id=\"pul_wrap_inside\">\n\t\n\t\t\t<div id=\"pul_big_cloud\">\n\t\t\t<\/div>\n\t\t\t<div id=\"pul_big_cloud_text\">\n\t\t\t\t<div id=\"pul_welcome\">\n\t\t\t\t\t<p>Welcome to pling-u-like.  It's a fun and friendly way to find out about things you like to do.<\/p>\n\t\t\t\t\t<p>Just click on the pling you like most out of the two randomly selected by the pling-u-like, and we'll do the rest.<\/p>\n\t\t\t\t\t<p class=\"pul_align_center\"><a id=\"pul_get_started\">get started!<\/a><\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<div id=\"pul_get_age_and_location\">\n\t\t\t\t\t<p>To help us find things to do close to where you live choose your area from the list below...<\/p>\n\t\t\t\t\t<select name=\"pul_location\" id=\"pul_get_location\">\n\t\t\t\t\t\t<option>Adur<\/option>\n\t\t\t\t\t\t<option>Allerdale<\/option>\n\t\t\t\t\t\t<option>Arun<\/option>\n\t\t\t\t\t\t<option>Ashford<\/option>\n\t\t\t\t\t\t<option>Barnsley<\/option>\n\t\t\t\t\t\t<option>Birmingham<\/option>\n\t\t\t\t\t\t<option>Blaby<\/option>\n\t\t\t\t\t\t<option>Blackpool<\/option>\n\t\t\t\t\t\t<option>Bolton<\/option>\n\t\t\t\t\t\t<option>Bournemouth<\/option>\n\t\t\t\t\t\t<option>Bradford<\/option>\n\t\t\t\t\t\t<option>Breckland<\/option>\n\t\t\t\t\t\t<option>Bridgend<\/option>\n\t\t\t\t\t\t<option>Bristol<\/option>\n\t\t\t\t\t\t<option>Broadland<\/option>\n\t\t\t\t\t\t<option>Bromley<\/option>\n\t\t\t\t\t\t<option>Bromsgrove<\/option>\n\t\t\t\t\t\t<option>Canterbury<\/option>\n\t\t\t\t\t\t<option>Carlisle<\/option>\n\t\t\t\t\t\t<option>Charnwood<\/option>\n\t\t\t\t\t\t<option>Chichester<\/option>\n\t\t\t\t\t\t<option>Chiltern<\/option>\n\t\t\t\t\t\t<option>Chorley<\/option>\n\t\t\t\t\t\t<option>Christchurch<\/option>\n\t\t\t\t\t\t<option>Coventry<\/option>\n\t\t\t\t\t\t<option>Crawley<\/option>\n\t\t\t\t\t\t<option>Dartford<\/option>\n\t\t\t\t\t\t<option>Doncaster<\/option>\n\t\t\t\t\t\t<option>Dover<\/option>\n\t\t\t\t\t\t<option>Dudley<\/option>\n\t\t\t\t\t\t<option>Eastleigh<\/option>\n\t\t\t\t\t\t<option>Eden<\/option>\n\t\t\t\t\t\t<option>Exeter<\/option>\n\t\t\t\t\t\t<option>Fareham<\/option>\n\t\t\t\t\t\t<option>Fenland<\/option>\n\t\t\t\t\t\t<option>Gateshead<\/option>\n\t\t\t\t\t\t<option>Gedling<\/option>\n\t\t\t\t\t\t<option>Gosport<\/option>\n\t\t\t\t\t\t<option>Gravesham<\/option>\n\t\t\t\t\t\t<option>Greenwich<\/option>\n\t\t\t\t\t\t<option>Hackney<\/option>\n\t\t\t\t\t\t<option>Halton<\/option>\n\t\t\t\t\t\t<option>Hambleton<\/option>\n\t\t\t\t\t\t<option>Harborough<\/option>\n\t\t\t\t\t\t<option>Hart<\/option>\n\t\t\t\t\t\t<option>Hartlepool<\/option>\n\t\t\t\t\t\t<option>Havant<\/option>\n\t\t\t\t\t\t<option>Horsham<\/option>\n\t\t\t\t\t\t<option>Hull<\/option>\n\t\t\t\t\t\t<option>Islington<\/option>\n\t\t\t\t\t\t<option>Kirklees<\/option>\n\t\t\t\t\t\t<option>Knowsley<\/option>\n\t\t\t\t\t\t<option>Leeds<\/option>\n\t\t\t\t\t\t<option>Leicester<\/option>\n\t\t\t\t\t\t<option>Lewisham<\/option>\n\t\t\t\t\t\t<option>Lichfield<\/option>\n\t\t\t\t\t\t<option>Liverpool<\/option>\n\t\t\t\t\t\t<option>Maidstone<\/option>\n\t\t\t\t\t\t<option>Manchester<\/option>\n\t\t\t\t\t\t<option>Melton<\/option>\n\t\t\t\t\t\t<option>Newcastle-under-Lyme<\/option>\n\t\t\t\t\t\t<option>Northumberland<\/option>\n\t\t\t\t\t\t<option>Norwich<\/option>\n\t\t\t\t\t\t<option>Nottingham<\/option>\n\t\t\t\t\t\t<option>Oldham<\/option>\n\t\t\t\t\t\t<option>Poole<\/option>\n\t\t\t\t\t\t<option>Portsmouth<\/option>\n\t\t\t\t\t\t<option>Reading<\/option>\n\t\t\t\t\t\t<option>Redditch<\/option>\n\t\t\t\t\t\t<option>Rugby<\/option>\n\t\t\t\t\t\t<option>Rushcliffe<\/option>\n\t\t\t\t\t\t<option>Rushmoor<\/option>\n\t\t\t\t\t\t<option>Rutland<\/option>\n\t\t\t\t\t\t<option>Salford<\/option>\n\t\t\t\t\t\t<option>Sandwell<\/option>\n\t\t\t\t\t\t<option>Sevenoaks<\/option>\n\t\t\t\t\t\t<option>Shepway<\/option>\n\t\t\t\t\t\t<option>Shropshire<\/option>\n\t\t\t\t\t\t<option>Solihull<\/option>\n\t\t\t\t\t\t<option>Southampton<\/option>\n\t\t\t\t\t\t<option>Southwark<\/option>\n\t\t\t\t\t\t<option>Stafford<\/option>\n\t\t\t\t\t\t<option>Stockport<\/option>\n\t\t\t\t\t\t<option>Stoke-on-Trent<\/option>\n\t\t\t\t\t\t<option>Stratford-on-Avon<\/option>\n\t\t\t\t\t\t<option>Swale<\/option>\n\t\t\t\t\t\t<option>Tamworth<\/option>\n\t\t\t\t\t\t<option>Teignbridge<\/option>\n\t\t\t\t\t\t<option>Thanet<\/option>\n\t\t\t\t\t\t<option>Torbay<\/option>\n\t\t\t\t\t\t<option>Wakefield<\/option>\n\t\t\t\t\t\t<option>Walsall<\/option>\n\t\t\t\t\t\t<option>Warwick<\/option>\n\t\t\t\t\t\t<option>Waveney<\/option>\n\t\t\t\t\t\t<option>Waverley<\/option>\n\t\t\t\t\t\t<option>Wigan<\/option>\n\t\t\t\t\t\t<option>Winchester<\/option>\n\t\t\t\t\t\t<option>Wokingham<\/option>\n\t\t\t\t\t\t<option>Wolverhampton<\/option>\n\t\t\t\t\t\t<option>Worcester<\/option>\n\t\t\t\t\t\t<option>Worthing<\/option>\n\t\t\t\t\t\t<option>Wychavon<\/option>\n\t\t\t\t\t\t<option>Wycombe<\/option>\n\t\t\t\t\t<\/select>\n\t\t\t\t\t<!-- <br\/>\n\t\t\t\t\t<label>Please select your age:<\/label>\n\t\t\t\t\t<a class=\"pul_select_age\">baby<\/a>\n\t\t\t\t\t<a class=\"pul_select_age\">young<\/a>\n\t\t\t\t\t<a class=\"pul_select_age\">old<\/a> -->\n\t\t\t\t\t<p class=\"pul_align_center\"><a id=\"pul_start\">start the game!<\/a><\/p>\t\t\t\t\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\n\t\n\t\t\t<div id=\"pul_mun\">\n\t\t\t<\/div>\n\t\n\t\t\t<div id=\"pul_front_wrap\">\n\t\t\t\t\n\t\t\t\t<div id=\"pul_skip\">\n\t\t\t\t<\/div>\n\t\t\n\t\t\t\t<div id=\"pul_front\">\n\t\t\n\t\t\t\t<\/div>\n\t\t\n\t\t\t\t<div id=\"pul_expressions\">\n\t\t\t\n\t\t\t\t<\/div>\n\t\t\n\t\t\t\t<div id=\"pul_bell_lights\">\n\n\t\t\t\t<\/div>\n\t\t\n\t\t\t\t<div id=\"pul_counter\">\n\t\t\t\n\t\t\t\t<\/div>\n\t\t\n\t\t\t\t<div id=\"pul_plings_left_wrap\" class=\"pul_plings_wrappers\">\n\t\t\t\t\t<div id=\"pul_plings_left\">\n\t\t\t\t\t\t<div class=\"pul_pling\">\n\t\t\t\t\t\t\tLoading...\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n\t\t\t\t<div id=\"pul_plings_right_wrap\" class=\"pul_plings_wrappers\">\n\t\t\t\t\t<div id=\"pul_plings_right\">\n\t\t\t\t\t\t<div class=\"pul_pling\">\n\t\t\t\t\t\t\tLoading...\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n\t\t\t<\/div>\n\t\n\t\t\t<div id=\"pul_wheel\">\n\t\t\n\t\t\t<\/div>\n\t\n\t\t\t<div id=\"pul_points\">\n\t\t\n\t\t\t<\/div>\n\t\n\t\t\t<div id=\"pul_right_pattern\">\n\t\t\n\t\t\t<\/div>\n\t\n\t\t\t<div id=\"pul_tents\">\n\t\t\n\t\t\t<\/div>\n\t\n\t\t\t<div id=\"pul_bell\">\n\t\t\n\t\t\t<\/div>\n\t\n\t\t\t<div id=\"pul_bell_lights_surround\">\n\n\t\t\t<\/div>\n\t\n\t\t\t<div id=\"pul_pin\">\n\t\t\n\t\t\t<\/div>\n\t\n\t\t\t<div id=\"pul_clouds\">\n\t\t\t\t<div id=\"pul_cloud1\">\n\t\t\t\n\t\t\t\t<\/div>\n\t\t\t\t<div id=\"pul_cloud2\">\n\t\t\t\n\t\t\t\t<\/div>\n\t\t\t\t<div id=\"pul_cloud3\">\n\t\t\t\n\t\t\t\t<\/div>\n\t\t\t\t<div id=\"pul_cloud4\">\n\t\t\t\n\t\t\t\t<\/div>\n\t\t\t\t<div id=\"pul_cloud5\">\n\t\t\t\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\n\t\t<\/div>\n\n\t\t<\/div>\n\n<\/div>\n\n<a id=\"pul_togglesounds\" class=\"pul_bottomlinks\" title=\"sounds on\">turn sounds off<\/a> | <a class=\"pul_bottomlinks\" href=\"http://about.plings.net/apps/pling-u\">about<\/a> | <a class=\"pul_bottomlinks\" href=\"http://plings.net\" >plings<\/a> | <a class=\"pul_bottomlinks\" href=\"http://1updesign.org\" >1UP<\/a>");					
				pul_initialise();
		}
		
		
		/**
		 * $.timers - Timer abstractions for $
		 * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
		 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
		 * Date: 2009/10/16
		 *
		 * @author Blair Mitchelmore
		 * @version 1.2
		 *
		 **/

		$.fn.extend({
			everyTime: function(interval, label, fn, times) {
				return this.each(function() {
					$.timer.add(this, interval, label, fn, times);
				});
			},
			oneTime: function(interval, label, fn) {
				return this.each(function() {
					$.timer.add(this, interval, label, fn, 1);
				});
			},
			stopTime: function(label, fn) {
				return this.each(function() {
					$.timer.remove(this, label, fn);
				});
			}
		});

		$.extend({
			timer: {
				global: [],
				guid: 1,
				dataKey: "$.timer",
				regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
				powers: {
					// Yeah this is major overkill...
					'ms': 1,
					'cs': 10,
					'ds': 100,
					's': 1000,
					'das': 10000,
					'hs': 100000,
					'ks': 1000000
				},
				timeParse: function(value) {
					if (value == undefined || value == null)
						return null;
					var result = this.regex.exec($.trim(value.toString()));
					if (result[2]) {
						var num = parseFloat(result[1]);
						var mult = this.powers[result[2]] || 1;
						return num * mult;
					} else {
						return value;
					}
				},
				add: function(element, interval, label, fn, times) {
					var counter = 0;

					if ($.isFunction(label)) {
						if (!times) 
							times = fn;
						fn = label;
						label = interval;
					}

					interval = $.timer.timeParse(interval);

					if (typeof interval != 'number' || isNaN(interval) || interval < 0)
						return;

					if (typeof times != 'number' || isNaN(times) || times < 0) 
						times = 0;

					times = times || 0;

					var timers = $.data(element, this.dataKey) || $.data(element, this.dataKey, {});

					if (!timers[label])
						timers[label] = {};

					fn.timerID = fn.timerID || this.guid++;

					var handler = function() {
						if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
							$.timer.remove(element, label, fn);
					};

					handler.timerID = fn.timerID;

					if (!timers[label][fn.timerID])
						timers[label][fn.timerID] = window.setInterval(handler,interval);

					this.global.push( element );

				},
				remove: function(element, label, fn) {
					var timers = $.data(element, this.dataKey), ret;

					if ( timers ) {

						if (!label) {
							for ( label in timers )
								this.remove(element, label, fn);
						} else if ( timers[label] ) {
							if ( fn ) {
								if ( fn.timerID ) {
									window.clearInterval(timers[label][fn.timerID]);
									delete timers[label][fn.timerID];
								}
							} else {
								for ( var fn in timers[label] ) {
									window.clearInterval(timers[label][fn]);
									delete timers[label][fn];
								}
							}

							for ( ret in timers[label] ) break;
							if ( !ret ) {
								ret = null;
								delete timers[label];
							}
						}

						for ( ret in timers ) break;
						if ( !ret ) 
							$.removeData(element, this.dataKey);
					}
				}
			}
		});

		$(window).bind("unload", function() {
			$.each($.timer.global, function(index, item) {
				$.timer.remove(item);
			});
		});


		
		pul_get();
		
		

		var pul_bgpos = new Object;
		function pul_changeBgPos(the_id,width,iterations)
		{
			if(!pul_bgpos[the_id] || pul_bgpos[the_id] == iterations)
				pul_bgpos[the_id] = 0;
		
			pul_bgpos[the_id]++;
		
			$('#'+the_id).css('background-position', width*pul_bgpos[the_id]+'px 0px');//changing the style

	
	
		}
		
		function pul_play_it_again(){
						
			//reset all variables...
			pul_countdown = false;
			pul_countdownTimeri = 1;
			pul_counterticktock = 0;
			pul_pointsi = 1;
			pul_bellTimeri = 0;
			pul_pinTimeri = 0;
			plingheight = false;
			pul_spinplingsc = false;
			pul_plingspos = new Object;
			pul_plingspos.left = 0;
			pul_plingspos.right = 0;
			maxTime = 10000;
			pul_allowpick = false;
			pul_object = new Object;
			pul_object.pling_seq = 0;
			pul_object.loaded = false;
			pul_object.pling_remove_seq = 0;
			pul_object.current_status = 'initial';
			pul_object.try_i = 0;
			pul_pickedplings = new Array;
			pul_started = new Object();
			pul_plings_html = new Object;
			pul_object.selection_order = new Object;
			pul_object.selection_order.left = new Array(); // condensed array
			pul_object.selection_order.right = new Array(); // condensed array
			pul_object.len = null;
			pul_object.current_emotion = new Object;
			pul_object.current_emotion.name = 'sad';
			pul_object.current_emotion.openclosed = 'open';
			
			$(document).stopTime();
			$('#pul_expressions').stopTime();
			
			
			// csss
			//counter
			$('#pul_counter').css({ 
			    backgroundPosition: "0px 0px"
			  });
			//points
			$('#pul_points').css({ 
			    backgroundPosition: "0px 0px"
			  });
			//plingwrap
			$('#pul_plings_left').css({ 
			    top: "0px"
			  });
			$('#pul_plings_right').css({ 
			    top: "0px"
			  });
			
			pul_initialise();
			
			//initialise
			pul_getplings();	
			pul_scrollwrap("-619px");
			$(document).oneTime(2500,function(){
				if(pul_object.loaded){
					initialise_game();
				}else{
					pul_object.current_status = "started_not_loaded";
				}
			})
			
		}

		var pul_countdown = false;
		var pul_countdownTimeri = 1;
		var pul_counterticktock = 0;
		function pul_countdownTimer()
		{
			if(pul_countdown==true){
				if(pul_countdownTimeri<62){
					var pos = pul_countdownTimeri*58;
					  $("#pul_counter").animate({ 
					    backgroundPosition: "0px "+pos+"px"
					  }, 500,'easeOutBounce' );
						pul_countdownTimeri++;
						
						
						if(pul_counterticktock == 0){
							soundManager.play('pul_countertick');
							pul_counterticktock = 1;
						}else{
							soundManager.play('pul_countertock');
							pul_counterticktock = 0;
						}
				}else{
			
					pul_store();
					pul_show_tags();
					pul_scrollwrap("0px");
					$('pul_play_again').click(function(){
						pul_play_it_again();
					})
			
					pul_countdown = false;

					
				}
			}
	

	
	
		}
		
		
		function pul_store(){

			
			var pul_store_info = new Object;
			var date = new Date();
			pul_store_info.time = date.getTime();
			pul_store_info.location = pul_location_;
			pul_store_info.choices = new Array;			
			for (var i=0; i < pul_pickedplings.length; i++) {
				var left_id = pul_object.selection_order.left[i];
				var right_id = pul_object.selection_order.right[i] + pul_object.selection_order.left.length;
				var chosen_id = pul_pickedplings[i];
				pul_store_info.choices[i] = new Object;
				pul_store_info.choices[i].choice_left = left_id;
				pul_store_info.choices[i].choice_right = right_id;
				pul_store_info.choices[i].chosen = chosen_id;
				
				// pul_store_info.choices[i].choice_left = pul_object.pul_activities[left_id].@attributes.id;
				// pul_store_info.choices[i].choice_right = pul_object.pul_activities[right_id].@attributes.id;
				// pul_store_info.choices[i].chosen = pul_object.pul_activities[chosen_id].@attributes.id;
				
			};
			
			
			pul_store_info_json = $.toJSON(pul_store_info);
			
			$.ajax({ url: pul_root+"store.php",
				 	dataType: 'json',
				   	data: "json="+pul_store_info_json
					});
			
			
		}
		
		function pul_end(){
			pul_countdownTimeri = 63;
		}

		function pul_get_keywords(){
			var pul_picked_keywords = Object;
			
			
			var pul_keywords = new Array;
			for (var i=0; i < pul_pickedplings.length; i++) {
				var pul_tmp_label = pul_pickedplings[i];
				if(pul_tmp_label){
					
					if(pul_object.pul_activities[pul_tmp_label].keywords){
					
						var keywords = pul_object.pul_activities[pul_tmp_label].keywords;

						if(keywords.keyword){
							for (var x=0; x < keywords.keyword.length; x++) {
								if(is_array(keywords.keyword)){
									pul_keywords.push(keywords.keyword[x]);
								}else{
									pul_keywords.push(keywords.keyword);
								}
							};
						}
					}
				}

			};
	
				for (var x=0; x < pul_keywords.length; x++) {
			    var k = pul_keywords[x];
			    if(!pul_picked_keywords[k]){
			        pul_picked_keywords[k] = 1;
			    }else{
			                pul_picked_keywords[k] = pul_picked_keywords[k]+1;
			    }

			}
		
			return pul_picked_keywords;

		}

		function pul_show_tags(){
			
			var kw_obj = pul_get_keywords();
			var plingscount = pul_pointsi-1;
			var html = "<div id='pul_end_text'><p>Congratulations, you chose "+plingscount+" plings.  To find out more about the activities you chose click on one of the tags below.</p><div id='pul_tags'>";
			for (property in kw_obj) {
				html = html + pul_make_tag(property,kw_obj[property]);
			};
			
			html = html + "</div><div id='pul_finished_buttons'><a id='pul_play_again'>play again</a></div></div>";
	
			$('#pul_big_cloud_text').empty();
	
			$('#pul_big_cloud_text').append(html);
			
			$('#pul_play_again').click(function(){
				pul_play_it_again();
			})
			
			return html;
		}

		function pul_make_tag(tag,size){
			var em_multiple = 0.2;
			var em_max = 2.8;
			var href = 'http://www.plings.net/search?keyword='+tag+'&postcode='+pul_object.postcode;
	
			var ems = (size*em_multiple)+1;
			
			if(ems>em_max)
				ems = em_max;
	
			
			var html = "<a target='_blank' class='pul_tag' href='"+href+"' style='font-size:"+ems+"em'>"+tag+"</a>";
	
			return html;
		}

		function pul_sort_keywords(kw){
			var pul_keywords = Object;
			for (var x=0; x < kw.length; x++) {
			    var k = kw[x];
			    if(!pul_keywords[k]){
			        pul_keywords[k] = 1;
			    }else{
			                pul_keywords[k] = pul_keywords[k]+1;
			    }
	
			}
			return pul_keywords;
		}




		var pul_pointsi = 1;
		function pul_points()
		{
		if(pul_pointsi<50){
			var pos = pul_pointsi*90;
			  $("#pul_points").animate({opacity:0},270).animate({ 
			    backgroundPosition: "-"+pos+"px"+ " 0px"
			  }, 0 ).animate({opacity:100},300);

				pul_pointsi++;
		}else{
			  $("#points").animate({ 
			    backgroundPosition: "0px 0px"
			  }, 0 );
	
			pul_pointsi = 0;
		}

		soundManager.play('pul_pling');

		}

		var pul_bellTimeri = 0;
		function pul_bellLights(level,totalduration)
		{
			k=0;
			pul_bellTimeri=0;
			while(k< level+1){
				delay = totalduration/(level+1);
				$("#pul_bell").queue("pul_bellqueue", function() {
			
			
				pul_bellTimeri = (pul_bellTimeri < level) ? pul_bellTimeri+1 : 0;
				var pos = pul_bellTimeri*200;
				
				  $("#pul_bell").css({ 
					    backgroundPosition: "-"+pos+"px"+ " 0px"
					  });
		
				  var self = this;
								
				if(pul_bellTimeri==level){
					delay = 2000;
				} 

				$(document).oneTime(delay,function(){
				    $(self).dequeue("pul_bellqueue");
				})
		
		
		
				});
				k++;
			}
	
			$("#pul_bell").dequeue("pul_bellqueue");

		}
		
		var pul_emotions = new Object;
		pul_emotions.happy = new Object;
		pul_emotions.happy.open = 49;
		pul_emotions.happy.closed = 98;
		pul_emotions.sad = new Object;
		pul_emotions.sad.open = 0;
		pul_emotions.happy.closed = 98;
		pul_emotions.angry = new Object;
		pul_emotions.angry.open = 195;
		pul_emotions.angry.closed = 146;
		pul_emotions.surprised = new Object;
		pul_emotions.surprised.open = 244;
		pul_emotions.surprised.closed = 294;
		
		function pul_do_expression(emotion){
			var pos = pul_emotions[emotion]['open'];
			var bpos = pos+"px"+" 0px";
			$('#pul_expressions').css({backgroundPosition: bpos});
			pul_object.current_emotion.name = emotion;
		}
		
		function pul_express(emotion){
			var date = new Date();
			$('#pul_expressions').oneTime(0,function(){
				pul_do_expression(emotion)
			})
			$('#pul_expressions').oneTime(4000,function(){
				pul_do_expression('sad');
			})
		}
		
		function pul_blink(){
			openclosed = pul_object.current_emotion.openclosed == 'open' ? 'closed' : 'open';
			var pos = pul_emotions[emotion][openclosed];
			$('#pul_expressions').css({backgroundPosition: "0px "+pos+"px"});
			pul_object.current_emotion.openclosed = openclosed;
			$(document).oneTime(100,function(){
				pul_blink();
			})
		}


		var pul_pinTimeri = 0;
		function pul_firepin(percent)
		{
			
				
			
				if(percent==100){
					level = 7;
					pul_express('surprised');
				}else if(percent>90){
					level = 6;
					pul_express('happy');			
				}else if(percent>80){
					level = 5;
					pul_express('happy');			
				}else if(percent>60){
					level = 4;
					pul_express('happy');			
				}else if(percent>40){
					level = 3;
					pul_express('angry');			
					
				}else if(percent>30){	
					level = 2;
					pul_express('angry');			
					
				}else if(percent>15){	
					level = 1;
					pul_express('angry');			
			
				}else{
					level = 0;
					pul_express('angry');			
					
				}
	
				pul_bellLights(level,300);
	
				var to = 1093 - (1093-818)*percent/100 ;
				  $("#pul_pin").animate({ 
				    top: to+"px"
				  }, 300, 'easeOutQuint' ).animate({ 
					    top: "1093px"
					  }, 500, 'easeOutBounce' ).delay(500);

			soundManager.play('pul_pin');
			
			if(percent==100){
				$(document).oneTime(100,function(){
				    soundManager.play('pul_bell');

				})
			}

	
		}

		var plingheight = false;
		var pul_spinplingsc = false;
		var pul_plingspos = new Object;
		pul_plingspos.left = 0;
		pul_plingspos.right = 0;
		function pul_spinplings(leftright,target_number){
			if(pul_spinplingsc){
				$('#pul_plings_'+leftright).css({top:'0px'});
			}
			
			
			var id = null;
	
			if(!plingheight) { 
				plingheight = $('.pul_pling').outerHeight();
			 }	
						
			var sequence_number = parseInt(pul_object.try_i)+1; //plus 1 because of arithmetic
			var ttop = plingheight*target_number + plingheight*pul_object.selection_order.left.length*sequence_number;		
	
	
	
			$('#pul_plings_'+leftright).animate({
				top: "-"+ttop+"px"
			},3000,'easeInOutCirc');
	
			$(document).oneTime(3000,function(){
			    soundManager.stop('pul_spin');
				
			})
	
	
	
			// pul_spinplingsc = true;
	
			soundManager.play('pul_spin');
		}

		var maxTime = 5000;
		var minTime = 500;
		var pul_allowpick = false;
		function pul_firepinController(time){
			if(pul_firepin){
				//time in ms
				if(time < minTime){		
					var percent = 100;
				}else if(time < maxTime){	
					var h = time-minTime;
					var x = maxTime-minTime;
					var percent = 100-(h/x)*100;
				}else{
					// fassy
					var percent = 10;
				}
	
				pul_firepin(percent);
	
			}else{
				return false;
		
			}
	
		}
		var pul_object = new Object;
		pul_object.postcode = null;
		pul_object.current_emotion = new Object;
		pul_object.current_emotion.name = 'sad';
		pul_object.current_emotion.openclosed = 'open';

		pul_object.pling_seq = 0;
		pul_object.pling_remove_seq = 0;
		function pul_appendplings(){
			pul_plings_html.left = pling_html('left',0,pul_object.len);
			pul_plings_html.right = pling_html('right',pul_object.len,pul_object.len*2);
			$('#pul_plings_left').append(pul_plings_html.left);
			$('#pul_plings_right').append(pul_plings_html.right);
			pul_object.pling_seq = pul_object.pling_seq+1;
			$('.pul_pling').click(function(el){pul_pickpling(this)});
		}

		function pul_removeplings(){
			$('.pul_plings_'+pul_object.pling_remove_seq).remove();
			pul_object.pling_remove_seq++;
		}

		pul_object.current_status = 'initial';
		
		pul_object.loaded = false;
		pul_object.try_i = 0;
		function initialise_game(){
									
				if(pul_object.current_status == 'initial'){
				
					$(document).everyTime(1000, function(i) {
					 pul_countdownTimer();
					});
				
				
				
					pul_countdown = true;
					pul_object.current_status = 'started';
				
				}else{
					// pul_removeplings();
				}
		
				$("#pul_wrap").queue(function()
				{
				
					pul_appendplings();
		
					pul_spinplings('left',pul_object.selection_order.left[pul_object.try_i]);
					pul_spinplings('right',pul_object.selection_order.right[pul_object.try_i]);
		
					var self = this;
				
					$(document).oneTime(3000,function(){
					    $(self).dequeue();
					})
				
				
				
					pul_allowpick = false;
				});
				$("#pul_wrap").queue(function()
				{
					var totalpulselength = 1000;
					pul_pulse_pling_holders(1000);
					var self = this;
				
					$(document).oneTime(0,function(){
					    $(self).dequeue();
					})
				
				});
				$("#pul_wrap").queue(function()
				{
					pul_timeit('pick',1);
					pul_allowpick = true;
				   	$(this).dequeue();
				});
	
				pul_object.try_i++;


		}


		function shuffle_array(input_array){
			var idx, i, ind1, ind2, temp, arraylength = input_array.length;
			var output_array = new Array(arraylength);
			for (i = 0; i < arraylength; ++i)
				output_array[i] = i;
			for (i = 0; i < arraylength; ++i)
			{
				ind1 = Math.floor(Math.random() * arraylength);
				ind2 = Math.floor(Math.random() * arraylength);
				temp = output_array[ind1];
				output_array[ind1] = output_array[ind2];
				output_array[ind2] = temp;
			}
			return (output_array);
		}

		var pul_pickedplings = new Array;
		function pul_pickpling(el){
			//get plingid from element
			if(pul_allowpick){
				
				if(!el){
					var the_id = null;
				}else{
					var the_id = parseInt(el.title);
				}
				

				pul_pickedplings.push((the_id));

				var time = pul_timeit('pick',0);
				pul_allowpick = false;
				
				pul_firepinController(time);
				
				pul_points();
				$(document).oneTime(700,function(){
				    initialise_game();
				})
			}
		}

		var pul_redbordercolour = '#AA0424';
		var pul_highlightbordercolour = '#FFF';
		function pul_pulse_pling_holders(totalength){
			var pulselength = totalength/6;
			var nubordercolor = "orange";
			var nubordercolor2 = "red";
			var nubackgroundcolor = "yellow";
			var nubackgroundcolor2 = "white";
			$('.pul_plings_wrappers')
			.animate({ borderTopColor: nubordercolor, borderRightColor: nubordercolor,  borderLeftColor: nubordercolor,  borderBottomColor: nubordercolor, backgroundColor:nubackgroundcolor }, pulselength)
			.animate({ borderTopColor: nubordercolor2, borderRightColor: nubordercolor2,  borderLeftColor: nubordercolor2,  borderBottomColor: nubordercolor2 ,backgroundColor:nubackgroundcolor2 }, pulselength)
			.animate({ borderTopColor: nubordercolor, borderRightColor: nubordercolor,  borderLeftColor: nubordercolor,  borderBottomColor: nubordercolor , backgroundColor:nubackgroundcolor}, pulselength)
			.animate({ borderTopColor: nubordercolor2, borderRightColor: nubordercolor2,  borderLeftColor: nubordercolor2,  borderBottomColor: nubordercolor2 , backgroundColor:nubackgroundcolor2}, pulselength)
			.animate({ borderTopColor: nubordercolor, borderRightColor: nubordercolor,  borderLeftColor: nubordercolor,  borderBottomColor: nubordercolor, backgroundColor:nubackgroundcolor}, pulselength)
			.animate({ borderTopColor: nubordercolor2, borderRightColor: nubordercolor2,  borderLeftColor: nubordercolor2,  borderBottomColor: nubordercolor2,backgroundColor:nubackgroundcolor2 }, pulselength)
			;
		}

		var pul_started = new Object();
		function pul_timeit(n,state){
			var date = new Date();
			if(pul_started.n || !state){
				var timeittook = (date.getTime() - pul_started.n);
				pul_started.n = null;
				return timeittook;
			 }
			else (state)
			{ 
				pul_started.n = date.getTime();
			}
		}

		function pling_html(pos,offset,amount){
			var k = 0;
			var pul_plings_html = new Object;
			pul_plings_html.$pos = '';
	
			if(pul_object.selection_order[pos].length<1){
				var so = pul_object.selection_order[pos];
			}else{
				var so = new Object //(dummy)
			}

			for (var i=offset; i < amount; i++) {
				pul_plings_html.$pos = pul_plings_html.$pos + pul_createpling(pul_object.pul_activities[i],i);
				so[k] = k;
				k++;
			}
		
			return pul_plings_html.$pos;
		}

		function pul_createpling(pling,ind){
			var name = pling.Name;
			return "<div class='pul_pling pul_plings_"+pul_object.pling_seq+"' title='"+ind+"'>"+name+"</div>";
		}

		var pul_plings_html = new Object;
		pul_object.selection_order = new Object;
		pul_object.selection_order.left = new Array(); // condensed array
		pul_object.selection_order.right = new Array(); // condensed array
		pul_object.len = null;
		function pul_renderplings(plings){
			pul_plings_html.left = "";
			pul_plings_html.right = "";
	
			pul_object.pul_activities = plings.activities.activity;
			
			pul_object.len = plings.activities.activity.length/2;
	
			pul_plings_html.left = pling_html('left',0,	pul_object.len);
			pul_plings_html.right = pling_html('right',	pul_object.len,	pul_object.len*2);
		
			pul_object.selection_order.left = shuffle_array(pul_object.selection_order.left);
			pul_object.selection_order.right = shuffle_array(pul_object.selection_order.right);
	
			$('#pul_plings_left').empty();
			$('#pul_plings_right').empty();
		
			pul_appendplings();
			pul_appendplings();


		
		}

		var pul_location_;
		function pul_getplings(){
			var pul_url = pul_root+'getplings.php';
			var loc = pul_location_;
			$.ajax({ url: pul_url,
				 	dataType: 'jsonp',
				   	data: "loc="+loc,
				 	success: function(data){
					pul_renderplings(data);
					pul_object.postcode = data.postcode;
					pul_object.loaded = true;
					
					if(pul_object.current_status == 'started_not_loaded')
					{
						pul_object.current_status = 'initial';
						initialise_game();
					}
					
					$('.pul_pling').click(function(el){pul_pickpling(this)});
			      }});
		}


		function pul_scrollwrap(pos){
			$('#pul_wrap_inside').animate({ 
			    top: pos
			  }, 4000 )
		}
		
	});
