/**
	 Global Variables
**/
var docId;
var xhr;
var output;
var success = false;
var globalmageLength="";
var masterArrayBlock = new Array();
var masterArrayBlockCurrentIndex = 0;
var item_html = "";
var olStartTag = " <ol class=' " ;
var liImageTag = " <li class='image'>" ;
var liStartTag = "<li>";
var liEndTag = "</li>";
var h3Tag = "<h3>";
var idTag = "id='";
var endH3Tag = "</h3>";
var pStartTag = "<p>";var pEndTag="</p>";
var imgSrcStartTag = "<img class='medium' src='";
var aClassTag = "<a class='"; var hrefTag = " href='";
var aEndTag = "</a>";
var ulStartTag = "<ul>"; var ulEndTag = "</ul>";
var regularEndTag = "'> ";var xhtmlEndTag = "'/>";
var olEndTag = "</ol>";
var singleQuote="'";
/*var olClassArray = new Array ('images range_1_10 extents_1_50', 'images range_11_20 extents_1_50','images range_21_30 extents_1_50','images range_31_40 extents_1_50','images range_41_50 extents_1_50','images range_51_60 extents_51_100','images range_61_70 extents_51_100','images range_71_80 extents_51_100','images range_81_90 extents_51_100','images range_91_100 extents_51_100','images range_101_110 extents_101_150','images range_111_120 extents_101_150','images range_121_130 extents_101_150','images range_131_140 extents_101_150','images range_141_150 extents_101_150','images range_151_160 extents_151_200','images range_161_170 extents_151_200','images range_171_180 extents_151_200','images range_181_190 extents_151_200','images range_191_200 extents_151_200','images range_201_210 extents_201_250','images range_211_220 extents_201_250');*/
var olClassArray = new Array ('images range_1_10 extents_1_40', 'images range_11_20 extents_1_40','images range_21_30 extents_1_40','images range_31_40 extents_1_40','images range_41_50 extents_41_80','images range_51_60 extents_41_80','images range_61_70 extents_41_80','images range_71_80 extents_41_80','images range_81_90 extents_81_120','images range_91_100 extents_81_120','images range_101_110 extents_81_120','images range_111_120 extents_81_120','images range_121_130 extents_121_160','images range_131_140 extents_121_160','images range_141_150 extents_121_160','images range_151_160 extents_121_160','images range_161_170 extents_161_200','images range_171_180 extents_161_200','images range_181_190 extents_161_200','images range_191_200 extents_161_200','images range_201_210 extents_201_240','images range_211_220 extents_201_240','images range_221_230 extents_201_240','images range_231_240 extents_201_240','images range_241_250 extents_241_280','images range_251_260 extents_241_280','images range_261_270 extents_241_280','images range_271_280 extents_241_280','images range_281_290 extents_281_320','images range_291_300 extents_281_320','images range_301_310 extents_281_320','images range_311_320 extents_281_320','images range_321_330 extents_321_360','images range_331_340 extents_321_360','images range_341_350 extents_321_360','images range_351_360 extents_321_360','images range_361_370 extents_361_400');
var olArrayIndex=0;
var listOfImages= new Array();

//object containing the RSS 2.0 item
function RSS2Item(itemxml)
{
	//required
	this.title;
	this.link;
	this.description;

	//optional vars
	this.author;
	this.comments;
	this.pubDate;
	
	//optional objects
	this.category;
	this.enclosure;
	this.guid;
	this.source;

	var properties = new Array("title", "link", "description");
	var tmpElement = null;
	for (var i=0; i<properties.length; i++)
	{
		tmpElement = itemxml.getElementsByTagName(properties[i])[0];
		if (tmpElement != null)
		{
			eval("this."+properties[i]+"=tmpElement.childNodes[0].nodeValue");
		}
	}
	
	this.category = new RSS2Category(itemxml.getElementsByTagName("category")[0]);
	
}

//object containing RSS image tag info
function RSS2Image(imagexml, imageNumber, imageLength)
{
	
	//required
	this.tn;
	this.ap;
	this.olClass;
	this.htmlAP;

	//optional vars
	this.url;
	this.width;
	this.height;
	
	
	//optional vars
	this.author;
	this.comments;
	this.pubDate;
	
	//optional objects
	this.category;
	this.enclosure;
	this.guid;
	this.source;
	
	var properties = new Array("tn", "ap","id");
	var tmpElement = null;
	
	
	
	for (var i=0; i<properties.length; i++)
	{
		tmpElement = imagexml.getElementsByTagName(properties[i])[0];
		if (tmpElement != null)
		{
			if(i==1)
			{
				// todo - find a better way of determing that the node in question is <ap> rather than hard coding the index
				eval("this."+properties[i]+"=tmpElement.childNodes[0].nodeValue + '.xml' ");
				this.htmlAP = tmpElement.childNodes[0].nodeValue + '.html' ;
			}
			else
			{
				eval("this."+properties[i]+"=tmpElement.childNodes[0].nodeValue");
			}
		}
	}
		
	if(   ((imageNumber+1) % 10 == 0 )  ||  (  (imageNumber+1) == imageLength)  )
	{
		
		this.olClass=olClassArray[olArrayIndex];
		olArrayIndex++;
	}
	else
	{
		this.olClass=olClassArray[olArrayIndex];
	}
	return;
	
	
}



//objects inside the RSS2Channel object
function RSS2Category(catElement)
{
	if (catElement == null)
	{
		this.domain = null;
		this.value = null;
	}
	else
	{
		this.domain = catElement.getAttribute("domain");
		this.value = catElement.childNodes[0].nodeValue;
	}
}




//object containing the parsed RSS 2.0 channel
function RSS2Channel(rssxml)
{
	//required
	this.title;
	this.link;
	this.description;

	//array of RSS2Item objects
	this.items = new Array();
	this.images = new Array();

	//optional vars
	this.language;
	this.copyright;
	this.managingEditor;
	this.webMaster;
	this.pubDate;
	this.lastBuildDate;
	this.generator;
	this.docs;
	this.ttl;
	this.rating;

	//optional objects
	this.category;
	
	var chanElement = rssxml.getElementsByTagName("channel")[0];
	var itemElements = rssxml.getElementsByTagName("item");
	var imageElements = rssxml.getElementsByTagName("ig");
	
	
	for (var i=0; i<itemElements.length; i++)
	{
		Item = new RSS2Item(itemElements[i]);
		this.items.push(Item);
	}
	
	for (var k=0; k<imageElements.length; k++)
	{
		MyImage = new RSS2Image(imageElements[k], k,imageElements.length);
		this.images.push(MyImage);
	}
	var properties = new Array("title", "link", "description", "language", "copyright", "managingEditor", "webMaster", "pubDate", "lastBuildDate", "generator", "docs", "ttl", "rating");
	var tmpElement = null;
	for (var i=0; i<properties.length; i++)
	{
		tmpElement = chanElement.getElementsByTagName(properties[i])[0];
		if (tmpElement != null)
			eval("this."+properties[i]+"=tmpElement.childNodes[0].nodeValue");
	}
	this.category = new RSS2Category(chanElement.getElementsByTagName("category")[0]);
	
}

//PROCESSES

//processes the received rss xml
function processRSS(rssxml)
{
	
	RSS = new RSS2Channel(rssxml);
	createUserRatingArrays(RSS);
	createMasterArray(RSS);	
	
}

//shows the RSS content in the browser
function createMasterArray(RSS)
{
	var masterArrayIndex=0;
	
	var item_html='';
	for (var i=0; i<RSS.images.length; i++)
	{
	
		var eachImage = new Array();
		if(i % 10 == 0)
		{
			item_html += olStartTag + olClassArray[i/10] + regularEndTag;
	
		}
		item_html += liImageTag;
		var innerLIItems = "";
		//alert(idTag + RSS.images[i].id + idendTag + singleQuote);
		//alert(idTag+RSS.images[i].id+singleQuote);
		
		innerLIItems  += liStartTag + aClassTag + "thumbnail_small" + singleQuote + hrefTag + RSS.images[i].tn + singleQuote +idTag+RSS.images[i].id+singleQuote + "alt='Click here to view gallery image'" + ">" + "thumbnail_small" + aEndTag + liEndTag; 
	         
		
		eachImage = new createNewImage(RSS.images[i].tn,RSS.images[i].ap, RSS.images[i].htmlAP,RSS.images[i].id,innerLIItems);
		listOfImages.push(eachImage);
		
		ulHTML = ulStartTag + innerLIItems  + ulEndTag;
		item_html += ulHTML ;
		item_html += liEndTag;
		
		if(  ( (i+1) % 10 == 0 )  ||  ( (i+1) == RSS.images.length)  )  
		{
			item_html += olEndTag;
			if(   ((i+1) % 40  == 0)  ||  ((i+1) == RSS.images.length)  )
			{
				masterArrayBlock[masterArrayIndex] = item_html;
				masterArrayIndex++;
				item_html='';
			}
		}
	}
	/** 
		Write the created HTML content into the image gallery div
	**/
	document.getElementById("sub").innerHTML='';
	//alert(masterArrayBlock[0]);
	document.getElementById("sub").innerHTML=masterArrayBlock[0] ;
	
	return true;
}

function createNewImage(tnImagePath,detailedXMLPath,detailedHTMLPath,documentId,innerLIItems)
{
	this.tnImagePath = tnImagePath;
	this.detailedXMLPath = detailedXMLPath;
	this.detailedHTMLPath = detailedHTMLPath;
	this.documentId=documentId;
	this.liImageHTML = innerLIItems;
	return true;
}	

function createUserRatingArrays(RSS)
{
    
    var cell= document.getElementById("rating");
    if (cell){
    if ( cell.hasChildNodes() )
    {
    while ( cell.childNodes.length >= 1 )
    {
        cell.removeChild( cell.firstChild );       
    } 
    }}
	
    for (var i=0; i<RSS.images.length; i++)
	{
	
	if (document.getElementById("ratingSiteId") && cell)
	{
	
	var ratingSiteID=document.getElementById("ratingSiteId").title;
	//article related data.
    var oArticleScript     = document.createElement("script");
    oArticleScript.src = "http://comments.nasa.gov/ratingresources/js/ArticleRatingInfo/"+ratingSiteID+"/"+RSS.images[i].id+".js";
	//alert(oArticleScript.src);
	document.getElementById("rating").appendChild(oArticleScript);
	
    //site level data.
    var oSiteScript     = document.createElement("script");
    oSiteScript.src = "http://comments.nasa.gov/ratingresources/js/SiteRatingInfo/"+ratingSiteID+".js";
	//alert(oSiteScript.src);
	document.getElementById("rating").appendChild(oSiteScript); 
    
	}
	
	}
	
}









