<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="__MSG_gadgetTitle__" title_url="http://www.lamboratory.com/gadgets.php#gsv" description="__MSG_description__" author="Guillermo Alvaro Rey" author_email="gsViewerFeedback@lamboratory.com" author_affiliation="Lamboratory.com" author_location="Madrid, Spain" author_photo="http://www.lamboratory.com/images/guille.PNG" author_aboutme="My brother Jorge and me are the Lamb Brothers." author_link="http://www.lamboratory.com" author_quote="Nobody expects the Spanish Inquisition!" thumbnail="http://www.lamboratory.com/images/gsvThumbnail.PNG" screenshot="http://www.lamboratory.com/images/gsvScreenshot.PNG" category="tools"> 
	<Locale messages="http://www.lamboratory.com/gadgets/gsv_messages/ALL_ALL.xml"/>
	<Locale lang="es" messages="http://www.lamboratory.com/gadgets/gsv_messages/es_ALL.xml"/>
	<Require feature="dynamic-height" />
	<Require feature="setprefs" />
	<Require feature="tabs" />
	<Require feature="grid"/>
	<Require feature="analytics"/>
</ModulePrefs>
<UserPref name="sheet0" display_name="__MSG_sheetFeed1__" datatype="string" required="true"/>
<UserPref name="sheet1" display_name="__MSG_sheetFeed2__" datatype="string" required="false"/>
<UserPref name="sheet2" display_name="__MSG_sheetFeed3__" datatype="string" required="false"/>
<UserPref name="sheet3" display_name="__MSG_sheetFeed4__" datatype="string" required="false"/>
<UserPref name="col0" default_value="1" datatype="hidden"/>
<UserPref name="row0" default_value="1" datatype="hidden"/>
<UserPref name="col1" default_value="1" datatype="hidden"/>
<UserPref name="row1" default_value="1" datatype="hidden"/>
<UserPref name="col2" default_value="1" datatype="hidden"/>
<UserPref name="row2" default_value="1" datatype="hidden"/>
<UserPref name="col3" default_value="1" datatype="hidden"/>
<UserPref name="row3" default_value="1" datatype="hidden"/>
<UserPref name="nCols" display_name="__MSG_colsDisplayed__" default_value="4" datatype="string" required="true"/>
<UserPref name="nRows" display_name="__MSG_rowsDisplayed__" default_value="6" datatype="string" required="true"/>
<Content type="html"><![CDATA[
<style>
	a img {
		border: none;
	}
  .g {
		text-indent:3px;
		padding-right:3px;
		overflow:hidden;
		white-space:nowrap;
		letter-spacing:0;
		word-spacing:0;
		background-color:#FFFFFF;
		z-index:1;
		border-top:0px none;
		border-left:0px none;
		border-bottom:1px solid #CCC;
		border-right:1px solid #CCC;
		font-family:Arial;
		font-size:100.0%;
		font-weight:normal;
		font-style:normal;
		text-decoration:none;
		vertical-align:bottom;
		white-space:normal;
		text-indent:0px;
		padding-left:3px;
	} 
	.s0 {
		background-color:#EFEFF7;
		font-size:80.0%;
		text-align:center;
		border-top:1px solid #CCC;
		border-left:1px solid #CCC;
	} 
	.selected {
		border: 2px solid #3366CC;
	}
	.infoSelected {
		border: 1px solid #3366CC;
	}
	.tblGenFixed { 
		table-layout: fixed;
		border-collapse: collapse;
		border-style: none;
		border-spacing: 0px;
		width: 250px;
		font-size: 10pt;
	} 
	#tblMain { 
		border: 0;
		cellpadding: 0;
		cellspacing: 0; 
		padding-top: 10px;
	} 
</style>

<div id="data"></div>
<div id="info" style="overflow:auto;"></div>

<script type="text/javascript">

var cols = ['0','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ','BA','BB','BC','BD','BE','BF','BG','BH','BI','BJ','BK','BL','BM','BN','BO','BP','BQ','BR','BS','BT','BU','BV','BW','BX','BY','BZ','CA','CB','CC','CD','CE','CF','CG','CH','CI','CJ','CK','CL','CM','CN','CO','CP','CQ','CR','CS','CT','CU','CV','CW','CX','CY','CZ','DA','DB','DC','DD','DE','DF','DG','DH','DI','DJ','DK','DL','DM','DN','DO','DP','DQ','DR','DS','DT','DU','DV','DW','DX','DY','DZ','EA','EB','EC','ED','EE','EF','EG','EH','EI','EJ','EK','EL','EM','EN','EO','EP','EQ','ER','ES','ET','EU','EV','EW','EX','EY','EZ','FA','FB','FC','FD','FE','FF','FG','FH','FI','FJ','FK','FL','FM','FN','FO','FP','FQ','FR','FS','FT','FU','FV','FW','FX','FY','FZ','GA','GB','GC','GD','GE','GF','GG','GH','GI','GJ','GK','GL','GM','GN','GO','GP','GQ','GR','GS','GT','GU','GV','GW','GX','GY','GZ','HA','HB','HC','HD','HE','HF','HG','HH','HI','HJ','HK','HL','HM','HN','HO','HP','HQ','HR','HS','HT','HU','HV','HW','HX','HY','HZ','IA','IB','IC','ID','IE','IF','IG','IH','II','IJ','IK','IL','IM','IN','IO','IP','IQ','IR','IS','IT','IU','IV','IW','IX','IY','IZ'];

var prefs = new _IG_Prefs(__MODULE_ID__);
var spreadsheetFeeds = new Array();
var iFeeds = 0;
for (var i = 0; i <= 3 ; i++) {
	if (prefs.getString("sheet"+i)!="") {
		spreadsheetFeeds[iFeeds] = prefs.getString("sheet"+i);
		iFeeds++;
	}
}
var colIni = new Array(4);
var rowIni = new Array(4);
colIni[0] = prefs.getInt("col0");
rowIni[0] = prefs.getInt("row0");
colIni[1] = prefs.getInt("col1");
rowIni[1] = prefs.getInt("row1");
colIni[2] = prefs.getInt("col2");
rowIni[2] = prefs.getInt("row2");
colIni[3] = prefs.getInt("col3");
rowIni[3] = prefs.getInt("row3");
var numCols = prefs.getInt("nCols");
var numRows = prefs.getInt("nRows");

var oldSelCol = 0;
var oldSelRow = 0;

// Create backend object, initialize with data
var backend = new Object();
var arrayLength = (numRows+1)*(numCols+1);
backend.data = new Array(arrayLength);
for (var i = 0; i < arrayLength ; i++) {
	backend.data[i]="&nbsp;";
}
backend._IGG_getNormalView = function(index) {
	var value = this.data[index];
	return '<span>' + value + '</span>';
}
backend._IGG_isDragSource = function(index) {
	if((index%(numCols+1)!=0)&&(index>numCols)){
		return true;
	}
	else{
		return false;
	}
}
backend._IGG_isDragTarget = function(index, sourceIndex) {
	return false;
}
backend._IGG_handleDrag  = selectCell;

backend._IGG_getSurrogateView = function(source) {
	return "";	
}
function selectCell(source,target) {

	var selCol = source%(numCols+1);
	var selRow = Math.floor(source/(numCols+1));
	var selColVal = this.data[selCol];
	var selRowVal = this.data[selRow*(numCols+1)];
	_gel("info").innerHTML = "<span style=\"font-size:80.0%;\">"+selColVal+selRowVal+": </span>"+this.data[source];
	_gel("info").className = "infoSelected";

	//highlight cell
	var gridTable = document.getElementById('gridTable');
	var rows = gridTable.getElementsByTagName("tr");
	var cells = rows[selRow].getElementsByTagName("td");
	var selSpan = cells[selCol].getElementsByTagName("span");
	var selDiv = selSpan[0].getElementsByTagName("div");
	selDiv[0].className = "selected";

	//un-highlight cell
	if ((oldSelCol>0)&&(oldSelRow>0)&&!((oldSelCol==selCol)&&(oldSelRow==selRow))){
		cells = rows[oldSelRow].getElementsByTagName("td");
		selSpan = cells[oldSelCol].getElementsByTagName("span");
		selDiv = selSpan[0].getElementsByTagName("div");
		selDiv[0].className = "";
	}
	oldSelCol = selCol;
	oldSelRow = selRow;

	// Tells gadget to resize itself
	_IG_AdjustIFrameHeight();
	_IG_Analytics("UA-2138291-1", "/gsViewer/selectCell");
}




	   
function drawContainer(iTable) {

	var html = "<table id='tblMain'>";
	html += "<tr><td></td><td><center><table><tr><td align=\"left\"><a href=\"javascript:displayChange("+iTable+",'col',-"+numCols+")\"><img src=\"http://www.lamboratory.com/gadgets/gsv_images/left2.gif\"/></a></td><td align=\"middle\"><a href=\"javascript:displayChange("+iTable+",'col',-1)\"><img src=\"http://www.lamboratory.com/gadgets/gsv_images/left1.gif\"/></a></td><td align=\"middle\"><a href=\"javascript:displayChange("+iTable+",'col',1)\"><img src=\"http://www.lamboratory.com/gadgets/gsv_images/right1.gif\"/></a></td><td align=\"right\"><a href=\"javascript:displayChange("+iTable+",'col',"+numCols+")\"><img src=\"http://www.lamboratory.com/gadgets/gsv_images/right2.gif\"/></a></td></tr></table></center></td></tr>";
	html += "<tr><td><table><tr><td valign=\"top\"><a href=\"javascript:displayChange("+iTable+",'row',-"+numRows+")\"><img src=\"http://www.lamboratory.com/gadgets/gsv_images/up2.gif\"/></a></td></tr><tr><td><a href=\"javascript:displayChange("+iTable+",'row',-1)\"><img src=\"http://www.lamboratory.com/gadgets/gsv_images/up1.gif\"/></a></td></tr><tr><td><a href=\"javascript:displayChange("+iTable+",'row',1)\"><img src=\"http://www.lamboratory.com/gadgets/gsv_images/down1.gif\"/></a></td></tr><tr><td><a href=\"javascript:displayChange("+iTable+",'row',"+numRows+")\"><img src=\"http://www.lamboratory.com/gadgets/gsv_images/down2.gif\"/></a></td></tr></table></td><td id=\"spreadsheet"+iTable+"\"></td></tr>";
	html += "</table>";
	_gel('data').innerHTML = html;
}


function getContent(iTable) {

  _gel("info").innerHTML = "";
	_gel("info").className = "";

	spreadsheetFeed = spreadsheetFeeds[iTable];

	_IG_FetchXmlContent(spreadsheetFeed, function (response) {
		if (response == null || typeof(response) != "object" || response.firstChild == null) {
			//alert("Error: "+response);
			return;
		}
		var entriesList = response.getElementsByTagName("entry");

		for (var i = 0; i < entriesList.length ; i++) {
			var entryList = entriesList.item(i).childNodes;
			var title = "";
			var content = "";
			for (var j = 0; j < entryList.length ; j++) {
				var node = entryList.item(j);
				if (node.nodeName == "title") {
					var title = node.firstChild.nodeValue;
				}
				if (node.nodeName == "content") {
					var content = node.firstChild.nodeValue ;
				}
			}
			if ((title!="")&&(content!="")) {
				aCells[iTable][title]=content;
			}
		}
		displayResults(iTable,colIni[iTable],rowIni[iTable],colIni[iTable]+numCols-1,rowIni[iTable]+numRows-1);
		_IG_Analytics("UA-2138291-1", "/gsViewer/getContent");
	});
}


function displayResults(iTable,colIni,rowIni,colFin,rowFin) {

	backend.data[0] = "&nbsp;";
	var contData = 1;
	for (var j = colIni; j <= colFin; j++) {
		backend.data[contData] = cols[j];
		contData++;
	}
	for (var i = rowIni; i <= rowFin ; i++) {
		backend.data[contData] = i;
		contData++;
		for (var j = colIni; j <= colFin; j++) {
			var cell = cols[j]+i;
			if (cell in aCells[iTable]) {
				backend.data[contData] = "<div>"+aCells[iTable][cell]+"</div>";
				contData++;
			}
			else {
				backend.data[contData] = "<div>&nbsp;</div>";
				contData++;
			}
		}
	}
	backend._IGG_refreshAll();

	//highlight cell
	if((oldSelCol>0)&&(oldSelRow>0)){
		var gridTable = document.getElementById('gridTable');
		var rows = gridTable.getElementsByTagName("tr");
		var cells = rows[oldSelRow].getElementsByTagName("td");
		var selSpan = cells[oldSelCol].getElementsByTagName("span");
		var selDiv = selSpan[0].getElementsByTagName("div");
		selDiv[0].className = "selected";
	}

	// Tells gadget to resize itself
	_IG_AdjustIFrameHeight();
}

function drawGrid(iTable,numCols,numRows) {
		var grid = new _IG_Grid(backend, "mygrid", numRows+1, numCols+1);
		_gel("spreadsheet"+iTable).appendChild(grid.getTable());
		grid.getTable().border = 0;
		grid.getTable().cellspacing = 0;
		grid.getTable().cellpadding = 0;
		grid.getTable().id = "gridTable";
		grid.getTable().className = "tblGenFixed";
		rows = grid.getTable().getElementsByTagName("tr");
		cells = rows[0].getElementsByTagName("td");
		for (var j = 0; j < cells.length ; j++) {
			cells[j].className = "g s0";
		}
		for (var i = 1; i < rows.length ; i++) {
			cells = rows[i].getElementsByTagName("td");
			cells[0].className = "g s0";
			for (var j = 1; j < cells.length ; j++) {
				cells[j].className = "g";
			}
		}
		grid.initDragging();

		oldSelCol=0;
		oldSelRow=0;
}


function displayChange(iTable,dir,size) {
	switch(dir){
		case "col":
			if(colIni[iTable]+size>1){ // pensar en el max tb
				colIni[iTable]=colIni[iTable]+size;
			}
			else{
				size=1-colIni[iTable]; // real size, for selected cell
				colIni[iTable]=1;
			}
			prefs.set("col"+iTable, colIni[iTable]);
			if((oldSelCol-size>numCols)||(oldSelCol-size<1)){
				oldSelCol=0;
				oldSelRow=0;
			}
			else{
				oldSelCol=oldSelCol-size;
			}
			break;
		case "row":
			if(rowIni[iTable]+size>1){
				rowIni[iTable]=rowIni[iTable]+size;
			}
			else{
				size=1-rowIni[iTable]; // real size, for selected cell
				rowIni[iTable]=1;
			}
			prefs.set("row"+iTable, rowIni[iTable]);
			if((oldSelRow-size>numRows)||(oldSelRow-size<1)){
				oldSelCol=0;
				oldSelRow=0;
			}
			else{
				oldSelRow=oldSelRow-size;
			}
			break;
	}
	displayResults(iTable,colIni[iTable],rowIni[iTable],colIni[iTable]+numCols-1,rowIni[iTable]+numRows-1);
	_IG_Analytics("UA-2138291-1", "/gsViewer/displayChange");
}

function generatorCallback(iTable) {
	return function(tabId) {
		tabsCallback(tabId, iTable);
	}
}


function tabsCallback(tabId, iTable) {
	drawContainer(iTable);
	drawGrid(iTable,numCols,numRows);
	getContent(iTable);
}

</script>

<script type="text/javascript">

var aCells = new Array(spreadsheetFeeds.length);
drawContainer(spreadsheetFeeds.length);

var tabs = new _IG_Tabs(__MODULE_ID__); 
for (var i = 0; i < spreadsheetFeeds.length ; i++) {
	aCells[i] = new Array();
  tabs.addDynamicTab("Tab "+i, generatorCallback(i));
}

// Tells gadget to resize itself
_IG_AdjustIFrameHeight();
_IG_Analytics("UA-2138291-1", "/gsViewer");

</script>

]]></Content>
</Module>

