<klip>
   <identity>
      <title>
         API: Timer Klip
      </title>
   </identity>
   <locations>
      <icon>
         http://www.klipfolio.com/static/klips/klipfolio/sample_icon.png
      </icon>
      <banner>
         http://www.klipfolio.com/static/klips/klipfolio/sample_banner.png   
      </banner>
   </locations>
   <setup>
      <scriptmode>
         extended
      </scriptmode>
      <enterprise>
      	true
      </enterprise>
   </setup>

   	<messages>
      		<loading>
         		Getting Memory Usage...
      		</loading>
   	</messages>
   	
	<style>
		item { 
			type:item 
		}
		
		mempercent { 
			itemcol: 1;
			noterow:1; 
			label:"Percentage";
		}
		
		memused { 
			itemcol: 2;
			noterow:2; 
			label:"Used";
		}
		
		memtotal { 
			itemcol: 3;
			noterow:3; 
			label:"Available";
		}
	</style>
   
	<klipscript>
		<![CDATA[

// Create a timer for callback every 2000 miliseconds (2 seconds)
var g_timer = createTimer (2000);

// Call getMemData() each tick of the timer
g_timer.onTick = getMemData;


function onLoad ()
{
	Items.savehistory = false;
	Items.canalert = false;
	Items.autoremove = false;
}

function getMemData ()
{
	var freekbytes = Engines.Platform.getAvailableKBytes ();
	var totalbytes = Engines.Platform.queryWMI ("SELECT * FROM Win32_PhysicalMemory", "Capacity");

	if (freekbytes.length && totalbytes.length)
	{
		var memarray = totalbytes.split (",");

		var i;
		var totalkbytes = 0;
		for (i = 0; i < memarray.length; i++)
		{
			totalkbytes += memarray[i] - 0;
		}
		totalkbytes = totalkbytes / 1024;

		var mempct = Math.round ((totalkbytes - freekbytes)/ totalkbytes * 100);

		var xml = "<item><mempercent>" + mempct + "%</membercent>" +
			  "<memused>" + (totalkbytes - freekbytes) + " KB" + 
			  "</memused><memtotal>" + freekbytes + " KB" +
			  "</memtotal></item>"; 

		Items.clear( true );
		Engines.Data.process (xml);
	}

	return true;
}

function onRefresh ()
{
	var success = getMemData();
	
	// Make sure the user can't delete or dim (visit) the webcam image
	if(Items.length)
	{
		Items[0].canvisit = false;
		Items[0].candelete = false;
	}
	
	return success;
}

	]]>
	</klipscript>
</klip>
