document.createElement("header");
document.createElement("section");
document.createElement("nav");
document.createElement("aside");
document.createElement("address");

$("document").ready(function() {
	if($("body")[0].id != "home") {
		$.get("sideinfo.xml",function(xml){
			var randomEntry, oldCookie = readCookie("entry"), size = $("entry",xml).size();
			do {
				randomEntry = Math.floor(Math.random()*size);
			} while (oldCookie == randomEntry);
			createCookie("entry",randomEntry);
			$("aside#sideinfo").html($("entry:eq(" + randomEntry + ")",xml).text());
		});
	}
});

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function addImagesFromXMLFile(options) {
	$.get("images.xml",function(xml){
		jQuery.each( options, function() {
			var xPathArray = this.xPath.split(",");
			var nodes = [];
			jQuery.each(xPathArray, function(count, xPath) {
				var images = $(xPath,xml);
				jQuery.merge( nodes, images )
			});
			var randomNumber, numberOfPathsToReturn = (!!this.numberOfPathsToReturn)?this.numberOfPathsToReturn:1, imageArray = new Array(numberOfPathsToReturn);
			var nodeArray = {}, headerClickable = false;
			if (nodes.length > 0) {
				for(var i = numberOfPathsToReturn; i > 0; i--) {
					do {
						var randomNumber = Math.floor(Math.random()*nodes.length);
						if(!nodeArray[randomNumber]) nodeArray[randomNumber] = {};
					} while(nodeArray[randomNumber].assigned == true);
					nodeArray[randomNumber].assigned = true;
					nodeArray[randomNumber].textContent = (!!nodes[randomNumber].textContent)?nodes[randomNumber].textContent:nodes[randomNumber].text;
					var addCategoryInfo = false;
					switch(this.linkType) {
						case "none":
							elementToAdd = $('<img src="' + nodeArray[randomNumber].textContent + '" alt="' + (!!$(nodes[randomNumber].parentNode).attr("title")?$(nodes[randomNumber].parentNode).attr("title"):"") + (addCategoryInfo?' (' + $(nodes[randomNumber].parentNode).attr("category") + ')':'') + '" />');
							break;
						case "image":					
							var relGroup = (!!this.groupImages)?this.groupImages:"";
							elementToAdd = $('<a class="thickbox" rel="' + relGroup + '" href="' + nodeArray[randomNumber].textContent.split("small").join("large") + '" title="' + (!!$(nodes[randomNumber].parentNode).attr("title")?$(nodes[randomNumber].parentNode).attr("title"):"") + (addCategoryInfo?' (' + $(nodes[randomNumber].parentNode).attr("category") + ')':'') + '"><img src="' + nodeArray[randomNumber].textContent + '" alt="" /></a>');
							break;
						case "video":
						default:
							var videoName = (this.videoId)?this.videoId:$(nodes[randomNumber].parentNode).attr("videoid")?$(nodes[randomNumber].parentNode).attr("videoid"):null;
							if(videoName) {
								if(videoName.indexOf(",") > -1) {
									videoNameArray = videoName.split(",");
									videoName = videoNameArray[Math.floor(Math.random()*videoNameArray.length)]
								}
								elementToAdd = $('<a href="videopage.htm?v=' + videoName + '" title="' + ((!this.videoId||this.videoId == $(nodes[randomNumber].parentNode).attr("videoid"))?'Click to see the \'':'') + (!!$(nodes[randomNumber].parentNode).attr("title")?$(nodes[randomNumber].parentNode).attr("title"):"") + (addCategoryInfo?' (' + $(nodes[randomNumber].parentNode).attr("category") + ')':'') + ((!this.videoId||this.videoId == $(nodes[randomNumber].parentNode).attr("videoid"))?'\' video"':'"') + '><img src="' + nodeArray[randomNumber].textContent + '" alt="" /></a>');
								headerClickable = true;
							} else
								elementToAdd = $('<img src="' + nodeArray[randomNumber].textContent + '" alt="' + (!!$(nodes[randomNumber].parentNode).attr("title")?$(nodes[randomNumber].parentNode).attr("title"):"") + (addCategoryInfo?' (' + $(nodes[randomNumber].parentNode).attr("category") + ')':'') + '" />');
					}
					imageArray[i] = elementToAdd;
					imageArray[i].image = new Image();
					imageArray[i].image.src = nodeArray[randomNumber].textContent;
				}
				this.order = "reverse";
				for(var i = numberOfPathsToReturn; i > 0; i--) {
					(this.order != "reverse")?imageArray[i].prependTo(this.pageElement):imageArray[i].appendTo(this.pageElement);
				}
				if(headerClickable) {
					$("h1#" + videoName + "_title").addClass("clickable").click(function() {document.location = "videopage.htm?v=" + videoName;});
				}
				
			}
		});
		initTB();
	});
}

createGenericOptions = function(name, numberOfImages, type) {
	return 	{
		groupImages:name,
		pageElement:"#" + name,
		xPath:"imageGroup[id=" + name + "] > img", 
		numberOfPathsToReturn: numberOfImages,
		linkType: type,
		videoId: name
	};
}

var jXML = {
    getCount: function(xml,nodes) {
        var response = {};
        for (var node in nodes) {
            response[node] = $(nodes[node],xml).length;
        }
        return response;
    },
    getAttribute: function(xml,nodes) {
        var response = {};
        for (var node in nodes) {
            if (nodes[node][2] == null) {
                response[node] = $(nodes[node][0] + "[" + nodes[node][1] + "]",xml);
            } else {
                if ($(nodes[node][0],xml).attr(nodes[node][1]) == nodes[node][2]) {
                    response[node] = $(nodes[node][0],xml);
                }
            }
        }
        return response;
    },
    getRandomObj: function(xml,nodes) {
        var response = {};
        for (var node in nodes) {
            var a = [];
            var b = [];
            $(nodes[node][0],xml).each(function(i) {
                b[i] = this;
            });
            var c = b.length;
            if (nodes[node][1] != null && nodes[node][1] < c) {
                c = nodes[node][1];
            }
            for (i = 0; i < c; i++) {
                var e = Math.floor(Math.random() * b.length);
                a[i] = b[e];
                b.splice(e,1);
            }
            response[node] = a;
        }
        return response;
    }
};

