//OBJECTS

//objects inside the RSS2DetailedItem object

/**
	 Global Variables
**/

var xhr;
var success = false;
var globalmageLength="";
var masterArrayBlock = new Array();
var masterArrayBlockCurrentIndex = 0;

/** 
	static HTML tag variables that are used repeatedly 
**/

var item_html = "";
var olStartTag = " <ol class=' " ;
var liImageTag = " <li class='image'>" ;
var liStartTag = "<li>";
var liEndTag = "</li>";
var h3Tag = "<h3>";
var endH3Tag = "</h3>";
var pStartTag = "<p>";var pEndTag="</p>";
var imgSrcStartTag = "<img class='medium' src='";var imgSrcOnlyTag="<img src='";
var btnImgPrev="<div class='btn_image_prev'></div>"; var btnImgNext="<div class='btn_image_next'></div>";
var aClassTag = "<a class='"; var hrefTag = " href='"; var aHref="<a href='";

var aEndTag = "</a>";
var ulStartTag = "<ul>"; var ulEndTag = "</ul>";
var regularEndTag = " '> ";var xhtmlEndTag = " />";
var olEndTag = "</ol>";
var singleQuote="'";
var altTag = "alt=' ";
var titleTag = "title=' ";
var blankTargetTag = " target='_blank' " ;
var endMarkUp = ">";

var divCaptionInner = "<div class='caption_inner large_gray_scroll'>";
var divTracks = "<div id='track_up' class='track_up' style=''></div><div class='track' style='overflow:hidden;'><div class='track_handle' style='height: 28px; position: relative; top: 0px; z-index: 0; opacity: 0.999999;'></div></div><div id='track_down' class='track_down' style=''></div>";
var divClose = "</div>";
var spanOpenTag="<span>"; var spanEndTag="</span>";

var retVal = false;

//object containing the RSS 2.0 item
function RSS2DetailedItem(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 RSS2DetailedCategory(itemxml.getElementsByTagName("category")[0]);
}

//object containing RSS image tag info
function RSS2DetailedImage(imagexml)
{
	//required
	this.title;
	this.link;
	this.description;

	//Relevant
	this.thumbnail;
	this.gallery_main;
	
	this.sizes=new Array();
	var sizeElement=imagexml.getElementsByTagName("size");
	for (var i=0; i<sizeElement.length; i++)
	{
		Size = new RSS2DetailedSizes(sizeElement[i]);
		this.sizes.push(Size);
	}
	
	var properties = new Array("title", "link", "description", "thumbnail", "gallery_main");
	var tmpElement = null;
	for (var i=0; i<properties.length; i++)
	{
		tmpElement = imagexml.getElementsByTagName(properties[i])[0];
		if (tmpElement != null)
		{
			eval("this."+properties[i]+"=tmpElement.childNodes[0].nodeValue");
			
		}
		else
		{
			eval("this."+properties[i]+"=''");
		}
	}
	
	return;
	
	
}
function RSS2DetailedSizes(sizeXml)
{
	this.type;
	this.description;
	this.href;
	this.altText;
	
	var properties = new Array("type",  "description", "href", "altText");
	var tmpElement = null;
	 for (var i=0; i<properties.length; i++)
        {
                var element = sizeXml.getElementsByTagName(properties[i])[0];
		var tmpElement=null;
                if(element.hasChildNodes())
                {
                        tmpElement = sizeXml.getElementsByTagName(properties[i])[0];
                }
                if (tmpElement != null)
                {
                        eval("this."+properties[i]+"=tmpElement.childNodes[0].nodeValue");
                }
		else
		{
			eval("this."+properties[i]+"=''");
		}

        }
	return true;
}


//objects inside the RSS2DetailedChannel object
function RSS2DetailedCategory(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 RSS2DetailedChannel(rssxml)
{
	//required
	this.title;
	this.link;
	this.description;

	//array of RSS2DetailedItem 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("image");

	for (var i=0; i<itemElements.length; i++)
	{
		
		Item = new RSS2DetailedItem(itemElements[i]);
		this.items.push(Item);
	}
	for (var k=0; k<imageElements.length; k++)
	{
		MyImage = new RSS2DetailedImage(imageElements[k]);
		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 RSS2DetailedCategory(chanElement.getElementsByTagName("category")[0]);
	
}

//processes the received rss xml
function processDetailedRSS(rssxml)
{
	RSS = new RSS2DetailedChannel(rssxml);
	retVal = showRSS(RSS);
	return (retVal);
}

//shows the RSS content in the browser
function showRSS(RSS)
{
	var itemLength = RSS.items.length;
	var imageLength = RSS.images.length;
	
	for (var i=0; i<RSS.images.length; i++)
	{
		var download_image_html = '';
		
		title = RSS.images[i].title;
		link = RSS.images[i].link;
		desc = RSS.images[i].description;
		gallery_main = RSS.images[i].gallery_main;
		thumbnail = RSS.images[i].thumbnail;
		
		// Check if there is an ALT text - use it if it exists otherwise use the title as ALT-Text
		var sizeElement = RSS.images[i].sizes;
		var altText = (sizeElement[0].altText=='')?title:sizeElement[0].altText;
		var titleText = altText;
		
		//Update gallery Image Div
		gallery_image_html = btnImgPrev + btnImgNext + imgSrcOnlyTag + RSS.images[i].gallery_main + singleQuote + altTag + altText + singleQuote + titleTag + titleText + singleQuote + xhtmlEndTag ;
		document.getElementById("gallery_image_area").innerHTML='';
		document.getElementById("gallery_image_area").innerHTML=gallery_image_html;
		
		//Update Caption Region Div
		caption_region_html = divCaptionInner +h3Tag + RSS.images[i].title + endH3Tag + pStartTag + RSS.images[i].description + pEndTag + divClose;
		document.getElementById("caption_region").innerHTML='';
		document.getElementById("caption_region").innerHTML=caption_region_html;
				
		download_image_html += h3Tag + "Download Image" + endH3Tag;
		
		//Loop thru the Sizes Object we have created for every Image
		for(var j=0;j<sizeElement.length;j++)
		{
			//check if the image actually exists and also display only the 4 sizes that we need
			if(   (!(sizeElement[j].type == 'fullscreen' || sizeElement[j].type == 'thumbnail_large')) && (sizeElement[j].href.indexOf('images') !=-1) )
			{
				// We have to open a blank browser window for the Full_Size Image
				if(sizeElement[j].type=='Full_Size')
				{
					var desc = (sizeElement[j].description=='Original Size')?' Full Size':sizeElement[j].description;
					download_image_html += spanOpenTag + "&raquo;" + aClassTag + sizeElement[j].type + singleQuote + hrefTag + sizeElement[j].href + singleQuote + blankTargetTag + endMarkUp + desc + aEndTag +spanEndTag;
				}
				else
				{
					download_image_html += spanOpenTag + "&raquo;" + aClassTag + sizeElement[j].type + singleQuote + hrefTag +'javascript:openImageWin("'+sizeElement[j].href +'")' + regularEndTag + sizeElement[j].description + aEndTag +spanEndTag;
				}
			}
		}
		document.getElementById("download_image_box").innerHTML='';
		document.getElementById("download_image_box").innerHTML=download_image_html;
		
	}
	
	return true;
}

	





