working on it ...

Filters

Explore Public Snippets

Sort by

Found 3,648 snippets matching: chrome

    public by lbottaro  463505  0  7  0

    Excel function to calculate the average of positive data in range

    This excel function calculate the average of a specific range of cells, regarding only positive values. Zero or less than zero value won't be used in average calculation. The italian version of this snippet can be used as well on OpenOffice 3.
    =SUMIF(B2:B6;">0")/MAX(COUNTIF(B2:B6;">0");1)
    
    # Italian version
    =SOMMA.SE(B2:B6;">0")/MAX(CONTA.SE(B2:B6;">0");1)

    public by JonahM  275571  4  7  4

    Fluid CSS Rows

    I've realised in my coding experience that I need to To allow for space in the div or row tags when using text. Because everything is responsive on a web page, it's a good idea to use these classes. They work really well. Example: http://j.mp/1oilINn
    
    
    .strip-md{
    	padding-top:80px;
    	padding-bottom:80px;
    	position:relative;
    	overflow:hidden;
    }
    
    .strip-sm{
    	padding-top:30px;
    	padding-bottom:30px;
    }
    
    

    public by fabio.nosenzo  264116  8  6  0

    Refresh all pivot table excel vba macro

    With this snippet you can refresh all the pivot tables in excel workbook within a macro
    ThisWorkbook.RefreshAll

    public by strykerraven  188248  7  5  1

    WordPress safely defining and executing functions

    Handy safe way to include functions in your WordPress Themes functions.php file. This is even more useful if you are using a child theme and don't want to conflict with functions already defined by the parent theme. Even better; These functions can be executed within the same if(function_exists()) block that defines them creating a neater to manage
    <?php
    
    // Lets get rid of the versioning on static .js and .css files.
    // It looks tacky anyway for static files.
    
    	/**
    	 * Strips Version query strings
    	 * @param type $src
    	 * @return type
    	 */
    	if(!function_exists('remove_css_js_versions')){ // if the function doesnt exist then...
    		function remove_css_js_versions($src){ // define the function
    			return remove_query_arg('ver', $src); // call built-in wordpress function to remove query named "ver" from whatever is passed as $src
    		}
    		add_filter('script_loader_src', 'remove_css_js_versions'); // Pass a hook as $src for js to function listed above named "remove_css_js_versions"
    		add_filter('style_loader_src', 'remove_css_js_versions'); // Pass a hook as $src for css to function listed above named "remove_css_js_versions"
    	} // All scripts and styles will be filtered to have ?ver=1.2.3 stripped from urls. Function defined and executed in same if() statement.
    
      /**
      * Need to debug? Instead of just using print_r($array) you just do preprint_r($array)
      * the array will be output neatly instead of wrapped and messy.
      */
    	if(!function_exists('preprint_r')){
    		function preprint_r($val){
    			echo '<pre>' . PHP_EOL;
    			print_r($val) . PHP_EOL;
    			echo '</pre>' . PHP_EOL;
    		}
    	}
    	
    	/** Remove the WP Icon (Menu) from profile and admin pages. */
    		if(!function_exists('remove_wp_logo')){
      		function remove_wp_logo($wp_admin_bar){
      			$wp_admin_bar->remove_node('wp-logo');
      		}
      		add_action('admin_bar_menu', 'remove_wp_logo', 33);
      	}
      	
    /**
    	 * Wordpress Login Page fixes. By default WordPress shows its logo on your login pages and links to its own site.
    	 * A visitor logging into your site don't need this potential roadblock so lets show WordPress that we mean business!
    	 */
    	# Fix Login Page WordPress URL
    	if(!function_exists('fix_wp_login_img_url')){
    		function fix_wp_login_img_url($url){
    			return get_bloginfo('url');
    		}
    		add_filter('login_headerurl', 'fix_wp_login_img_url');
    	}
    
    	# Fix Login Page WordPress Title (Text displayed on hover defaults to Powered By WordPress)
    	if(!function_exists('fix_wp_login_img_title')){
    		function fix_wp_login_img_title($title){
    			return get_bloginfo('description');
    		}
    		add_filter('login_headertitle', 'fix_wp_login_img_title');
    	}
    
    	/**
    		Change Login Page WordPress Logo, You will need to update path and point to a valid image.
    		WordPress adds this with a CSS background image for your anchor link. It first applys a PNG and then a SVG override if your browser is modern and supports svg
    		In your themes custom stylesheet you can change default Wordpress image by supplying a new background image:
    
    		.login h1 a {
    			background-image: none,url(images/your_image.png);
    		}
    
    		Hint: WordPress uses an 64x64 image but you can adapt size to your need. You might want to use SVG like WordPress did because it will scale best at any resolution.
    
    	 */
    
    	/**
    	 * Simple Actions that use wp_head hook to cleanup WP header Junk/Bloat
    	 * that is included with WordPress by default.
    	 */
    	remove_action('wp_head', 'wp_generator');
    	remove_action('wp_head', 'rsd_link');
    	remove_action('wp_head', 'wlwmanifest_link');
    	remove_action('wp_head', 'wp_shortlink_wp_head');            
    	
    	
    	?>

    public by maindog  15982  1493  8  17

    javascript cheat for A Dark Room v1.3

    (can be used on chrome using the javascript console) After you get a hut and someone joins your village (not the builder) this code will provide you with a lot of wood, allowing you to build more huts, traps and other buildings once you have the resources. (does not purchase the buildings and for the mines you still have to find them on the map)
    /**
     * Module that registers the outdoors functionality
     */
    var Outside = {
    	name: "Outside",
    	
    	_GATHER_DELAY: 60,
    	_TRAPS_DELAY: 90,
    	_POP_DELAY: [0.5, 3],
    	
    	_INCOME: {
    		'gatherer': {
    			delay: 1,
    			stores: {
    				'wood': 10000
    			}
    		},
    		'hunter': {
    			delay: 1,
    			stores: {
    				'fur': 10000,
    				'meat': 10000,
    				'alien alloy': 10000,
    				'medicine': 10000
    			}
    		},
    		'trapper': {
    			delay: 1,
    			stores: {
    				'meat': 10000,
    				'bait': 10000,
    				'teeth': 10000,
    				'scales': 10000
    			}
    		},
    		'tanner': {
    			delay: 1,
    			stores: {
    				'fur': 100000,
    				'leather': 100000
    			}
    		},
    		'charcutier': {
    			delay: 1,
    			stores: {
    				'meat': 100000,
    				'wood': 100000,
    				'cured meat': 100000
    			}
    		},
    		'iron miner': {
    			delay: 1,
    			stores: {
    				'cured meat': 100000,
    				'iron': 100000
    			}
    		},
    		'coal miner': {
    			delay: 1,
    			stores: {
    				'cured meat': 100000,
    				'coal': 100000
    			}
    		},
    		'sulphur miner': {
    			delay: 1,
    			stores: {
    				'cured meat': 100000,
    				'sulphur': 100000
    			}
    		},
    		'steelworker': {
    			delay: 1,
    			stores: {
    				'iron': 100000,
    				'coal': 100000,
    				'steel': 100000
    			}
    		},
    		'armourer': {
    			delay: 1,
    			stores: {
    				'steel': 100000,
    				'sulphur': 10000,
    				'bullets': 100000
    			}
    		}
    	},
    	
    	TrapDrops: [
    		{
    			rollUnder: 0.5,
    			name: 'fur',
    			message: 'scraps of fur'
    		},
    		{
    			rollUnder: 0.75,
    			name: 'meat',
    			message: 'bits of meat'
    		},
    		{
    			rollUnder: 0.85,
    			name: 'scales',
    			message: 'strange scales'
    		},
    		{
    			rollUnder: 0.93,
    			name: 'teeth',
    			message: 'scattered teeth'
    		},
    		{
    			rollUnder: 0.995,
    			name: 'cloth',
    			message: 'tattered cloth'
    		},
    		{
    			rollUnder: 1.0,
    			name: 'charm',
    			message: 'a crudely made charm'
    		}
    	],
    	
    	init: function(options) {
    		this.options = $.extend(
    			this.options,
    			options
    		);
    		
    		if(Engine._debug) {
    			this._GATHER_DELAY = 0;
    			this._TRAPS_DELAY = 0;
    		}
    		
    		// Create the outside tab
    		this.tab = Header.addLocation("A Silent Forest", "outside", Outside);
    		
    		// Create the Outside panel
    		this.panel = $('<div>').attr('id', "outsidePanel")
    			.addClass('location')
    			.appendTo('div#locationSlider');
    		
    		//subscribe to stateUpdates
    		$.Dispatch('stateUpdate').subscribe(Outside.handleStateUpdates);
    		
    		if(typeof $SM.get('features.location.outside') == 'undefined') {
    			$SM.set('features.location.outside', true);
    			if(!$SM.get('game.buildings')) $SM.set('game.buildings', {});
    			if(!$SM.get('game.population')) $SM.set('game.population', 0);
    			if(!$SM.get('game.workers')) $SM.set('game.workers', {});
    		}
    		
    		this.updateVillage();
    		Outside.updateWorkersView();
    		
    		Engine.updateSlider();
    		
    		// Create the gather button
    		new Button.Button({
    			id: 'gatherButton',
    			text: "gather wood",
    			click: Outside.gatherWood,
    			cooldown: Outside._GATHER_DELAY,
    			width: '80px'
    		}).appendTo('div#outsidePanel');
    	},
    	
    	getMaxPopulation: function() {
    		return $SM.get('game.buildings["hut"]', true) * 4;
    	},
    	
    	increasePopulation: function() {
    		var space = Outside.getMaxPopulation() - $SM.get('game.population');
    		if(space > 0) {
    			var num = Math.floor(Math.random()*(space/2) + space/2);
    			if(num == 0) num = 1;
    			if(num == 1) {
    				Notifications.notify(null, 'a stranger arrives in the night');
    			} else if(num < 5) {
    				Notifications.notify(null, 'a weathered family takes up in one of the huts.');
    			} else if(num < 10) {
    				Notifications.notify(null, 'a small group arrives, all dust and bones.');
    			} else if(num < 30) {
    				Notifications.notify(null, 'a convoy lurches in, equal parts worry and hope.');
    			} else {
    				Notifications.notify(null, "the town's booming. word does get around.");
    			}
    			Engine.log('population increased by ' + num);
    			$SM.add('game.population', num);
    		}
    		Outside.schedulePopIncrease();
    	},
    	
    	killVillagers: function(num) {
    		$SM.add('game.population', num * -1);
    		if($SM.get('game.population') < 0) {
    			$SM.set('game.population', 0);
    		}
    		var remaining = Outside.getNumGatherers();
    		if(remaining < 0) {
    			var gap = -remaining;
    			for(var k in $SM.get('game.workers')) {
    				var num = $SM.get('game.workers["'+k+'"]');
    				if(num < gap) {
    					gap -= num;
    					$SM.set('game.workers["'+k+'"]', 0);
    				} else {
    					$SM.add('game.workers["'+k+'"]', gap * -1);
    					break;
    				}
    			}
    		}
    	},
    	
    	schedulePopIncrease: function() {
    		var nextIncrease = Math.floor(Math.random()*(Outside._POP_DELAY[1] - Outside._POP_DELAY[0])) + Outside._POP_DELAY[0];
        	Engine.log('next population increase scheduled in ' + nextIncrease + ' minutes');
        	Outside._popTimeout = setTimeout(Outside.increasePopulation, nextIncrease * 60 * 1000);
    	},
    	
    	updateWorkersView: function() {
    		var workers = $('div#workers');
    
    		// If our population is 0 and we don't already have a workers view,
    		// there's nothing to do here.
    		if(!workers.length && $SM.get('game.population') == 0) return;
    
    		var needsAppend = false;
    		if(workers.length == 0) {
    			needsAppend = true;
    			workers = $('<div>').attr('id', 'workers').css('opacity', 0);
    		}
    		
    		var numGatherers = $SM.get('game.population');
    		var gatherer = $('div#workers_row_gatherer', workers);
    		
    		for(var k in $SM.get('game.workers')) {
    			var workerCount = $SM.get('game.workers["'+k+'"]');
    			var row = $('div#workers_row_' + k.replace(' ', '-'), workers);
    			if(row.length == 0) {
    				row = Outside.makeWorkerRow(k, workerCount);
    				
    				var curPrev = null;
    				workers.children().each(function(i) {
    					var child = $(this);
    					var cName = child.attr('id').substring(12).replace('-', ' ');
    					if(cName != 'gatherer') {
    						if(cName < k && (curPrev == null || cName > curPrev)) {
    							curPrev = cName;
    						}
    					}
    				});
    				if(curPrev == null && gatherer.length == 0) {
    					row.prependTo(workers);
    				} 
    				else if(curPrev == null)
    				{
    					row.insertAfter(gatherer);
    				} 
    				else 
    				{
    					row.insertAfter(workers.find('#workers_row_' + curPrev.replace(' ', '-')));
    				}
    				
    			} else {
    				$('div#' + row.attr('id') + ' > div.row_val > span', workers).text(workerCount);
    			}
    			numGatherers -= workerCount;
    			if(workerCount == 0) {
    				$('.dnBtn', row).addClass('disabled');
    				$('.dnManyBtn', row).addClass('disabled');
    			} else {
    				$('.dnBtn', row).removeClass('disabled');
    				$('.dnManyBtn', row).removeClass('disabled');
    			}
    		}
    		
    		if(gatherer.length == 0) {
    			gatherer = Outside.makeWorkerRow('gatherer', numGatherers);
    			gatherer.prependTo(workers);
    		} else {
    			$('div#workers_row_gatherer > div.row_val > span', workers).text(numGatherers);
    		}
    		
    		if(numGatherers == 0) {
    			$('.upBtn', '#workers').addClass('disabled');
    			$('.upManyBtn', '#workers').addClass('disabled');
    		} else {
    			$('.upBtn', '#workers').removeClass('disabled');
    			$('.upManyBtn', '#workers').removeClass('disabled');
    		}
    		
    		
    		if(needsAppend && workers.children().length > 0) {
    			workers.appendTo('#outsidePanel').animate({opacity:1}, 300, 'linear');
    		}
    	},
    	
    	getNumGatherers: function() {
    		var num = $SM.get('game.population'); 
    		for(var k in $SM.get('game.workers')) {
    			num -= $SM.get('game.workers["'+k+'"]');
    		}
    		return num;
    	},
    	
    	makeWorkerRow: function(name, num) {
    		var row = $('<div>')
    			.attr('id', 'workers_row_' + name.replace(' ','-'))
    			.addClass('workerRow');
    		$('<div>').addClass('row_key').text(name).appendTo(row);
    		var val = $('<div>').addClass('row_val').appendTo(row);
    		
    		$('<span>').text(num).appendTo(val);
    		
    		if(name != 'gatherer') {
    		  $('<div>').addClass('upManyBtn').appendTo(val).click([10], Outside.increaseWorker);
    			$('<div>').addClass('upBtn').appendTo(val).click([1], Outside.increaseWorker);
    			$('<div>').addClass('dnBtn').appendTo(val).click([1], Outside.decreaseWorker);
    			$('<div>').addClass('dnManyBtn').appendTo(val).click([10], Outside.decreaseWorker);
    		}
    		
    		$('<div>').addClass('clear').appendTo(row);
    		
    		var tooltip = $('<div>').addClass('tooltip bottom right').appendTo(row);
    		var income = Outside._INCOME[name];
    		for(var s in income.stores) {
    			var r = $('<div>').addClass('storeRow');
    			$('<div>').addClass('row_key').text(s).appendTo(r);
    			$('<div>').addClass('row_val').text(Engine.getIncomeMsg(income.stores[s], income.delay)).appendTo(r);
    			r.appendTo(tooltip);
    		}
    		
    		return row;
    	},
    	
    	increaseWorker: function(btn) {
    		var worker = $(this).closest('.workerRow').children('.row_key').text();
    		if(Outside.getNumGatherers() > 0) {
    		  var increaseAmt = Math.min(Outside.getNumGatherers(), btn.data);
    			Engine.log('increasing ' + worker + ' by ' + increaseAmt);
    			$SM.add('game.workers["'+worker+'"]', increaseAmt);
    		}
    	},
    	
    	decreaseWorker: function(btn) {
    		var worker = $(this).closest('.workerRow').children('.row_key').text();
    		if($SM.get('game.workers["'+worker+'"]') > 0) {
    		  var decreaseAmt = Math.min($SM.get('game.workers["'+worker+'"]') || 0, btn.data);
    			Engine.log('decreasing ' + worker + ' by ' + decreaseAmt);
    			$SM.add('game.workers["'+worker+'"]', decreaseAmt * -1);
    		}
    	},
    	
    	updateVillageRow: function(name, num, village) {
    		var id = 'building_row_' + name.replace(' ', '-');
    		var row = $('div#' + id, village);
    		if(row.length == 0 && num > 0) {
    			row = $('<div>').attr('id', id).addClass('storeRow');
    			$('<div>').addClass('row_key').text(name).appendTo(row);
    			$('<div>').addClass('row_val').text(num).appendTo(row);
    			$('<div>').addClass('clear').appendTo(row);
    			var curPrev = null;
    			village.children().each(function(i) {
    				var child = $(this);
    				if(child.attr('id') != 'population') {
    					var cName = child.attr('id').substring(13).replace('-', ' ');
    					if(cName < name && (curPrev == null || cName > curPrev)) {
    						curPrev = cName;
    					}
    				}
    			});
    			if(curPrev == null) {
    				row.prependTo(village);
    			} else {
    				row.insertAfter('#building_row_' + curPrev.replace(' ', '-'));
    			}
    		} else if(num > 0) {
    			$('div#' + row.attr('id') + ' > div.row_val', village).text(num);
    		} else if(num == 0) {
    			row.remove();
    		}
    	},
    	
    	updateVillage: function(ignoreStores) {
    		var village = $('div#village');
    		var population = $('div#population');
    		var needsAppend = false;
    		if(village.length == 0) {
    			needsAppend = true;
    			village = $('<div>').attr('id', 'village').css('opacity', 0);
    			population = $('<div>').attr('id', 'population').appendTo(village);
    		}
    		
    		for(var k in $SM.get('game.buildings')) {
    			if(k == 'trap') {
    				var numTraps = $SM.get('game.buildings["'+k+'"]');
    				var numBait = $SM.get('stores.bait', true);
    				var traps = numTraps - numBait;
    				traps = traps < 0 ? 0 : traps;
    				Outside.updateVillageRow(k, traps, village);
    				Outside.updateVillageRow('baited trap', numBait > numTraps ? numTraps : numBait, village);
    			} else {
    				if(Outside.checkWorker(k)) {
    					Outside.updateWorkersView();
    				}
    				Outside.updateVillageRow(k, $SM.get('game.buildings["'+k+'"]'), village);
    			}
    		}
    		
    		population.text('pop ' + $SM.get('game.population') + '/' + this.getMaxPopulation());
    		
    		var hasPeeps;
    		if($SM.get('game.buildings["hut"]', true) == 0) {
    			hasPeeps = false;
    			village.addClass('noHuts');
    		} else {
    			hasPeeps = true;
    			village.removeClass('noHuts');
    		}
    		
    		if(needsAppend && village.children().length > 1) {
    			village.appendTo('#outsidePanel');
    			village.animate({opacity:1}, 300, 'linear');
    		}
    		
    		if(hasPeeps && typeof Outside._popTimeout == 'undefined') {
    			Outside.schedulePopIncrease();
    		}
    		
    		this.setTitle();
    
    		if(!ignoreStores && Engine.activeModule === Outside && village.children().length > 1) {
    			$('#storesContainer').css({top: village.height() + 26 + 'px'});
    		}
    	},
    	
    	checkWorker: function(name) {
    		var jobMap = {
    			'lodge': ['hunter', 'trapper'],
    			'tannery': ['tanner'],
    			'smokehouse': ['charcutier'],
    			'iron mine': ['iron miner'],
    			'coal mine': ['coal miner'],
    			'sulphur mine': ['sulphur miner'],
    			'steelworks': ['steelworker'],
    			'armoury' : ['armourer']
    		};
    		
    		var jobs = jobMap[name];
    		var added = false;
    		if(typeof jobs == 'object') {
    			for(var i = 0, len = jobs.length; i < len; i++) {
    				var job = jobs[i];
    				if(typeof $SM.get('game.buildings["'+name+'"]') == 'number' && 
    						typeof $SM.get('game.workers["'+job+'"]') != 'number') {
    					Engine.log('adding ' + job + ' to the workers list');
    					$SM.set('game.workers["'+job+'"]', 0);
    					added = true;
    				}
    			}
    		}
    		return added;
    	},
    	
    	updateVillageIncome: function() {		
    		for(var worker in Outside._INCOME) {
    			var income = Outside._INCOME[worker];
    			var num = worker == 'gatherer' ? Outside.getNumGatherers() : $SM.get('game.workers["'+worker+'"]');
    			if(typeof num == 'number') {
    				var stores = {};
    				if(num < 0) num = 0;
    				var tooltip = $('.tooltip', 'div#workers_row_' + worker.replace(' ', '-'));
    				tooltip.empty();
    				var needsUpdate = false;
    				var curIncome = $SM.getIncome(worker);
    				for(var store in income.stores) {
    					stores[store] = income.stores[store] * num;
    					if(curIncome[store] != stores[store]) needsUpdate = true;
    					var row = $('<div>').addClass('storeRow');
    					$('<div>').addClass('row_key').text(store).appendTo(row);
    					$('<div>').addClass('row_val').text(Engine.getIncomeMsg(stores[store], income.delay)).appendTo(row);
    					row.appendTo(tooltip);
    				}
    				if(needsUpdate) {
    					$SM.setIncome(worker, {
    						delay: income.delay,
    						stores: stores
    					});
    				}
    			}
    		}
    		Room.updateIncomeView();
    	},
    	
    	updateTrapButton: function() {
    		var btn = $('div#trapsButton');
    		if($SM.get('game.buildings["trap"]', true) > 0) {
    			if(btn.length == 0) {
    				new Button.Button({
    					id: 'trapsButton',
    					text: "check traps",
    					click: Outside.checkTraps,
    					cooldown: Outside._TRAPS_DELAY,
    					width: '80px'
    				}).appendTo('div#outsidePanel');
    			} else {
    				Button.setDisabled(btn, false);
    			}
    		} else {
    			if(btn.length > 0) {
    				Button.setDisabled(btn, true);
    			}
    		}
    	},
    	
    	setTitle: function() {
    		var numHuts = $SM.get('game.buildings["hut"]', true);
    		var title;
    		if(numHuts == 0) {
    			title = "A Silent Forest";
    		} else if(numHuts == 1) {
    			title = "A Lonely Hut";
    		} else if(numHuts <= 4) {
    			title = "A Tiny Village";
    		} else if(numHuts <= 8) {
    			title = "A Modest Village";
    		} else if(numHuts <= 14) {
    			title = "A Large Village";
    		} else {
    			title = "A Raucous Village";
    		}
    		
    		if(Engine.activeModule == this) {
    			document.title = title;
    		}
    		$('#location_outside').text(title);
    	},
    	
    	onArrival: function(transition_diff) {
    		Outside.setTitle();
    		if(!$SM.get('game.outside.seenForest')) {
    			Notifications.notify(Outside, "the sky is grey and the wind blows relentlessly");
    			$SM.set('game.outside.seenForest', true);
    		}
    		Outside.updateTrapButton();
    		Outside.updateVillage(true);
    
    		Engine.moveStoresView($('#village'), transition_diff);
    	},
    	
    	gatherWood: function() {
    		Notifications.notify(Outside, "dry brush and dead branches litter the forest floor");
    		var gatherAmt = $SM.get('game.buildings["cart"]', true) > 0 ? 50 : 10;
    		$SM.add('stores.wood', gatherAmt);
    	},
    	
    	checkTraps: function() {
    		var drops = {};
    		var msg = [];
    		var numTraps = $SM.get('game.buildings["trap"]', true);
    		var numBait = $SM.get('stores.bait', true);
    		var numDrops = numTraps + (numBait < numTraps ? numBait : numTraps);
    		for(var i = 0; i < numDrops; i++) {
    			var roll = Math.random();
    			for(var j in Outside.TrapDrops) {
    				var drop = Outside.TrapDrops[j];
    				if(roll < drop.rollUnder) {
    					var num = drops[drop.name];
    					if(typeof num == 'undefined') {
    						num = 0;
    						msg.push(drop.message);
    					}
    					drops[drop.name] = num + 1;
    					break;
    				}
    			}
    		}
    		var s = 'the traps contain ';
    		for(var i = 0, len = msg.length; i < len; i++) {
    			if(len > 1 && i > 0 && i < len - 1) {
    				s += ", ";
    			} else if(len > 1 && i == len - 1) {
    				s += " and ";
    			}
    			s += msg[i];
    		}
    		
    		var baitUsed = numBait < numTraps ? numBait : numTraps;
    		drops['bait'] = -baitUsed;
    		
    		Notifications.notify(Outside, s);
    		$SM.addM('stores', drops);
    	},
    	
    	handleStateUpdates: function(e){
    		if(e.category == 'stores'){
    			Outside.updateVillage();
    		} else if(e.stateName.indexOf('game.workers') == 0
    		          || e.stateName.indexOf('game.population') == 0){
    			Outside.updateVillage();
    			Outside.updateWorkersView();
    			Outside.updateVillageIncome();
    		};
    	}
    };

    public by Timothy Cyrus  67055  0  3  0

    Example of how to have Google Chrome extensions auto update to Github releases

    Example of how to have Google Chrome extensions auto update to Github releases: updates.xml
    <?xml version='1.0' encoding='UTF-8'?>
    <gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
      <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
        <updatecheck codebase='https://github.com/tcyrus/sample-chrome-extension/releases/download/v2.0/sce.crx' version='2.0' />
      </app>
    </gupdate>
    
    

    public by marksimon232  2519  4  6  1

    Send message from content script to background on Chrome Extension

    Can someone please write a short snippet on how to send message from content script to background on Chrome Extension? Thanks, John
    From the <a href="http://developer.chrome.com/extensions/runtime.html#event-onMessage">the documentation for chrome.runtime.onMessage.addListener</a>
    
    This function becomes invalid when the event listener returns, unless you return 
    true from the event listener to indicate you wish to send a response asynchronously
    (this will keep the message channel open to the other end until sendResponse
    is called).
    
    So you just need to add return true; after the call to getUrls to indicate that you will 
    all the response function asynchronously.
    
    

    public by federicolucca  2365  0  5  0

    Chrome without security

    open -a Google\ Chrome --args --disable-web-security

    public by informatrex  1946  0  5  0

    Sample Chrome Extension js file

    Loading content on a sample extension html file
    var greetCount = 0;
    
    $(function () {
      $('#name').keyup(function () {
        $('#greeting').text("Hi, " + $('#name').val() + "!");
        greetCount++;
        chrome.browserAction.setBadgeText({ "text" : greetCount.toString() });
      });
    });            

    public by geeknam  1917  0  3  0

    Chrome Extension to get RP pics

    Chrome Extension to get RP pics : getpic.js
    function showPic(){
        $("#studentImage").hide().html(getPic()).fadeIn(2000);
        $("#studentId").val("");
        $("#fullname").val("");
    }
    
    function getPic(){
        var idval = $("#studentId").val();
        var nameval = $("#fullname").val();
        url = '<img src="Directory of the schools site that pictures resides at' + idval + '-' + nameval + '.jpg"   onerror="notFound()"/>';
        return url;
    }
    
    function notFound(){
        errorMsg = '<span class="error">Image not found. Invalid student ID or student name.</span>';
        $("#studentImage").html(errorMsg);
    }
    
    
    • Public Snippets
    • Channels Snippets