function icfgallery() {

    var selector = "#pagecontent-inner .album .thumb a";
    var thumbs = new Array();
    var current = 0;

    addLoadHandler(loader);

    function loader() {
        var elements1 = getElementsBySelector(selector);
        if(elements1.length > 0) for(var i=0; i<elements1.length; i++) {
			createSwitch(elements1[i], i);
		}
        var elements2 = getElementsBySelector('.photo-nav a');
        if(elements2.length > 0) for(var i=0; i<elements2.length; i++) {
            createNav(elements2[i]);
        }
        showCurrent();
    }

    function createSwitch(element, i) {
        element.onclick = function () {
            current = i;
            showCurrent();
            return false;
        }
        thumbs[i] = element;
    }

    function showCurrent() {
        document.getElementById('photo-frame-ph').src = thumbs[current].href;
        setMessage((current + 1)+' of '+thumbs.length);

        window.location = "#pagearea";
    }

    function setMessage(message) {
        var elements = getElementsBySelector('.photo-nav span.photo-index');
        if(elements.length > 0) for(var i=0; i<elements.length; i++) {
			elements[i].innerHTML = message;
		}
    }

    function createNav(element) {
        var op;
        if(hasClass(element, 'previous')) {
            op = 'p';
        } else if(hasClass(element, 'next')) {
            op = 'n';
        }
        element.onclick = function () {
            if(op == 'p') {
                current--;
                if(current < 0) current = thumbs.length-1;

            } else if(op == 'n') {
                current ++;
                if(current >= thumbs.length) {
                    current = 0;
                }
            }
            showCurrent();
            return false;
        }
    }

    function showPic() {
        if (document.getElementById) {
            document.getElementById('photo-frame-ph').src = this.href;
                //if(whichpic.title) {
                    //document.getElementById('desc').childNodes[0].nodeValue = whichpic.title;
                //} else {
                    //document.getElementById('desc').childNodes[0].nodeValue = whichpic.childNodes[0].nodeValue;
                //}
            window.location = "#pagearea";
            return false;
        } else {
            return true;
        }
    }

    function getElementsBySelector(selector) {
		var tokens = selector.split(' ');
		var currentContext = new Array(document);
		for(var i=0;i<tokens.length;i++) {
			token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');
			if(token.indexOf('#') > -1)	{
				var bits = token.split('#');
				var tagName = bits[0];
				var id = bits[1];
				var element = document.getElementById(id);
				if(tagName && element.nodeName.toLowerCase() != tagName)
					return new Array();
				currentContext = new Array(element);
				continue;
			}

			if(token.indexOf('.') > -1) {
				var bits = token.split('.');
				var tagName = bits[0];
				var className = bits[1];
				if(!tagName)
					tagName = '*';

				var found = new Array;
				var foundCount = 0;
				for(var h=0;h<currentContext.length;h++) {
					var elements;
					if(tagName == '*')
						elements = currentContext[h].all ? currentContext[h].all : currentContext[h].getElementsByTagName('*');
					else
						elements = currentContext[h].getElementsByTagName(tagName);

					for(var j=0;j<elements.length;j++)
						found[foundCount++] = elements[j];
				}

				currentContext = new Array;
				var currentContextIndex = 0;
				for(var k=0;k<found.length;k++)	{
					if(found[k].className && found[k].className.match(new RegExp('\\b'+className+'\\b')))
						currentContext[currentContextIndex++] = found[k];
				}

				continue;
			}

			if(token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)) {
				var tagName = RegExp.$1;
				var attrName = RegExp.$2;
				var attrOperator = RegExp.$3;
				var attrValue = RegExp.$4;
				if(!tagName) tagName = '*';

				var found = new Array;
				var foundCount = 0;
				for(var h=0;h<currentContext.length;h++) {
					var elements;
					if(tagName == '*')
						elements = currentContext[h].all ? currentContext[h].all : currentContext[h].getElementsByTagName('*');
					else
						elements = currentContext[h].getElementsByTagName(tagName);

					for(var j=0;j<elements.length;j++)
						found[foundCount++] = elements[j];
				}

				currentContext = new Array;
				var currentContextIndex = 0;
				var checkFunction;
				switch(attrOperator) {
					case '=':
						checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); };
						break;
					case '~':
						checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
						break;
					case '|':
						checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
						break;
					case '^':
						checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); };
						break;
					case '$':
						checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); };
						break;
					case '*':
						checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); };
						break;
					default :
						checkFunction = function(e) { return e.getAttribute(attrName); };
				}

				currentContext = new Array;
				var currentContextIndex = 0;
				for(var k=0;k<found.length;k++) {
					if(checkFunction(found[k]))
						currentContext[currentContextIndex++] = found[k];
				}

				continue;
			}

			tagName = token;
			var found = new Array;
			var foundCount = 0;
			for(var h=0;h<currentContext.length;h++) {
				var elements = currentContext[h].getElementsByTagName(tagName);
				for(var j=0;j<elements.length; j++)
					found[foundCount++] = elements[j];
			}

			currentContext = found;
		}

		return currentContext;
	}

	function getFirstChild(element) {
		if(!element) return null;
		var output = element.firstChild;
		if(output.nextSibling) while(output.nodeType != 1) {
			output = output.nextSibling;
		}
		return output;
	}

	function getLastChild(element) {
		if(!element) return null;
		var output = element.lastChild;
		if(output.previousSibling) while(output.nodeType != 1) {
			output = output.previousSibling;
		}
		return output;
	}

	function getNextSibling(element) {
		var output = element.nextSibling;
		while(output.nodeType != 1) {
			output = output.nextSibling;
		}
		return output;
	}

	function getFirstChildWithTag(element, tag) {
		var thisChild = getFirstChild(element);
		if(!thisChild) return false;
		while(1==1) {
			if(thisChild.nodeType == 1) {
				if(thisChild.tagName.toLowerCase() == tag) return thisChild;
			}
			if(thisChild == element.lastChild) {
				return false;
			} else {
				thisChild = thisChild.nextSibling;
			}
		}
	}

	function elementHasTag(element, tag) {
		var thisChild = getFirstChild(element);
		while(1==1) {
			if(thisChild.nodeType == 1) {
				if(thisChild.tagName.toLowerCase() == tag) return true;
			}
			if(thisChild == element.lastChild) {
				return false;
			} else {
				thisChild = thisChild.nextSibling;
			}
		}
	}

	function getFirstChildWithClass(element, classname) {
		var thisChild = getFirstChild(element);
		while(1==1) {
			if(thisChild.nodeType == 1) {
				if(hasClass(thisChild, classname)) return thisChild;
			}
			if(thisChild == element.lastChild) {
				return false;
			} else {
				thisChild = thisChild.nextSibling;
			}
		}
	}

	function childHasClass(element, classname) {
		var thisChild = getFirstChild(element);
		while(1==1) {
			if(thisChild.nodeType == 1) {
				if(hasClass(thisChild, classname)) return true;
			}
			if(thisChild == element.lastChild) {
				return false;
			} else {
				thisChild = thisChild.nextSibling;
			}
		}
	}

	function addLoadHandler(handler) {
		if(window.addEventListener) {
			window.addEventListener("load",handler,false);
		} else if(window.attachEvent) {
			window.attachEvent("onload",handler);
		} else if(window.onload) {
			var oldHandler = window.onload;
			window.onload = function piggyback() {
				oldHandler();
				handler();
			};
		} else {
			window.onload = handler;
		}
	}

	function addClass(element, className) {
		if (!hasClass(element, className)) {
			if (element.className) element.className += " " + className;
			else element.className = className;
		}
		element.setAttribute("CLASS",element.className);
	};

	function removeClass(element, className) {
		var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)");
		element.className = element.className.replace(regexp, "$2");
		element.setAttribute("CLASS",element.className);
	};

	function hasClass(element, className) {
		var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)");
		return regexp.test(element.className);
	};

	function innerText(element) {
		if(typeof element == "string")
			return element;
		else if(typeof element == "undefined")
			return element;
		else if(element.innerText)
			return element.innerText;

		var text = "";
		var kids = element.childNodes;
		for(var i=0;i<kids.length;i++)
		{
			if(kids[i].nodeType == 1)
			text += innerText(kids[i]);
			else if(kids[i].nodeType == 3)
			text += kids[i].nodeValue;
		}

		return text;
	}
}

if(document.createElement && document.getElementsByTagName && !navigator.userAgent.match(/opera\/?6/i))
	icfgallery();