/*-


























"I don't mind what you did; I mind how you did it."
	- Bob Woodward





























----------------------------------------------------------------------*/
var redford = {
	/*
		Parameters
	*/
	swfs : "/festival/-/swf/",
	imgs : "img/",

	init : function() {
		var c = redford;
		c.loadSifr();

		addLoadEvent(function() {
			c.daysLeft();
			initScroll();

			if (document.all) {
				c.navFix();
				c.fnLoadPngs();
			}
		});
	},

	/*
		Tweak the "days left" counter
	*/
	daysLeft :  function() {
		var counter = document.getElementById("days-left");
		if (counter) {
			var b = counter.getElementsByTagName("b")[0];
			if (b) {
				var str = trim(getInnerText(b));
				if (str.length > 2) {
					b.className = "long";
				}
			}
		}
	},

	/*
		Fix hover in IE
	*/
	navFix : function() {
		var nav = document.getElementById("nav-primary");

		if (nav) {
			var items = getElementsByClassName("top", "li", nav);

			if (items.length) {
				ieHover(items);
			}
		}
	},

	/*
		Fire up sIFR
	*/
	loadSifr : function() {
		var c = redford;
		/*
			Register the fonts
		*/
		var letterGothic = {
			src: c.swfs + 'letter-gothic.swf'
		}

		var sectionBlack = {
			src: c.swfs + 'section-black.swf'
		}

		var sectionBold = {
			src: c.swfs + 'section-bold.swf'
		}

		/*
			Activate the fonts
		*/
		sIFR.activate(letterGothic);
		sIFR.activate(sectionBlack);
		sIFR.activate(sectionBold);

		/*
			Hi, we're the replacements
		*/
		sIFR.replace(sectionBold, {
			selector: 'h1.sect-title',
			wmode: 'transparent',
			css: [
				'.sIFR-root { background-color: #EFEBD2; color: #9E9D94; font-size: 11px; font-weight: bold; letter-spacing: 1; text-transform: uppercase; }'
			],
			tuneHeight: '-2px'
		});

		sIFR.replace(sectionBlack, {
			selector: '#nav-sub h2',
			css: [
				'.sIFR-root { color: #FFFFFF; font-size: 16px; text-transform: uppercase; }'
			],
			wmode: 'transparent',
			filters: {
				DropShadow: {
					alpha: .3,
					angle: 55,
					knockout: false,
					distance: 1,
					color: '#000000',
					strength: 2
				}
		    }
		});

		var common = 'background-color: #EFEBD2; font-size: 44px; letter-spacing: -1; text-transform: uppercase; ';

		/*
			Add/edit section-specific headline colors below
		*/
		sIFR.replace(letterGothic, {
			wmode: 'transparent',
			selector: 'body.sect-info .page-title',
			css: [
				'.sIFR-root { ' + common + ' color: #00585E; }'
			]
		});

		sIFR.replace(letterGothic, {
			wmode: 'transparent',
			selector: 'body.sect-box .page-title',
			css: [
				'.sIFR-root { ' + common + ' color: #AB470A; }'
			]
		});

		sIFR.replace(letterGothic, {
			wmode: 'transparent',
			selector: 'body.sect-film .page-title',
			css: [
				'.sIFR-root { ' + common + ' color: #B21429; }'
			]
		});

		sIFR.replace(letterGothic, {
			wmode: 'transparent',
			selector: 'body.sect-press .page-title',
			css: [
				'.sIFR-root { ' + common + ' color: #004672; }'
			]
		});

		sIFR.replace(letterGothic, {
			wmode: 'transparent',
			selector: 'body.sect-watch .page-title',
			css: [
				'.sIFR-root { ' + common + ' color: #8F8376; }'
			]
		});
	},

	/*
		Fix PNG transparency in IE
	*/
	fnLoadPngs : function() {
		var c = redford;
		var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
		var min = (rslt != null && Number(rslt[1]) >= 5.5);
		var max = (rslt != null && Number(rslt[1]) < 7.0);
		for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--) {
			if (min && max && img.src.match(/\.png$/i) != null) {
				c.fnFixPng(img);
				img.attachEvent("onpropertychange", c.fnPropertyChanged);
			}
			img.style.visibility = "visible";
		}
	},

	fnPropertyChanged : function() {
		var c = redford;
		if (window.event.propertyName == "src") {
			var el = window.event.srcElement;
			if (!el.src.match(/x\.gif$/i)) {
				el.filters.item(0).src = el.src;
				el.src = c.imgs + "x.gif";
			}
		}
	},

	fnFixPng : function(img) {
		var c = redford;
		if (img.oldSrc) {
			img.src = img.oldSrc;
		}
		var src = img.src;
		img.style.width = img.offsetWidth + "px";
		img.style.height = img.offsetHeight + "px";
		img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')"
		img.oldSrc = src;
		img.src = c.imgs + "x.gif";
	}
};

redford.init();



/*-  Utility functions
----------------------------------------------------------------------*/
function isCompatible() {
	
}

/*
	Add Load Event
*/
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

/*
	IE Fix: Son of Suckerfish (modified for IE5/Mac friendliness)
*/
function ieHover(els) {
	for (var i=0; i < els.length; i++) {
		els[i].onmouseover = function() {
			this.className = safeAppend(this.className, "ie-hover");
		}

		els[i].onmouseout = function() {
			this.className = this.className.replace(new RegExp("( ?|^)ie-hover\\b"), "");
		}
		els[i].onmouseclick = function() {
			this.className = this.className.replace(new RegExp("( ?|^)ie-hover\\b"), "");
		}
	}
}

/*
	Smart string concatenation
*/
function safeAppend(target, str) {
	target += (target.length > 0 ? " ": "") + str;
	return target;
}

/*
	getElementsByClassName (http://doiop.com/getelsbyclass)
*/
function getElementsByClassName(className, tag, elm) {
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all) ? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i = 0; i < length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

/*
	Trim function
*/
function trim(str) {
	return str.replace(/^\s*|\s*$/g,"");
}

/*
	Get Inner Text
*/
function getInnerText(el) {
	if (typeof el == "string") return el;
	if (typeof el == "undefined") { return el };
	if (el.innerText) return el.innerText;	//Not needed but it is faster
	var str = "";
	
	var cs = el.childNodes;
	var l = cs.length;
	for (var i = 0; i < l; i++) {
		switch (cs[i].nodeType) {
			case 1: //ELEMENT_NODE
				str += getInnerText(cs[i]);
				break;
			case 3:	//TEXT_NODE
				str += cs[i].nodeValue;
				break;
		}
	}
	return str;
}

/* CALENDAR ROW EXPANDER */
function expandoMode(state,which) {
	document.getElementById(which).className = state;
	document.getElementById(which+'venue').className = state;
}

/* CALENDAR SCROLLING */
function initScroll() {
	if (document.getElementById) {
		obj = document.getElementById("scrollInner");
		if (obj) {
			obj.iCurrentStep = 0;
			obj.iStepIncrement = 150;
			obj.iMaxStep = 13;
			obj.timer = null;
		}
	}
}

function slideRight() {
	if (obj.iCurrentStep > 0) {
		var nextPos = (obj.iCurrentStep - 1) * obj.iStepIncrement;
		var leftPos = parseInt(obj.style.left);
		var iAbs = -leftPos;

		if (iAbs > nextPos) {
			obj.style.left = (leftPos + (obj.iStepIncrement / 5)) + "px";
			obj.timer = setTimeout("slideRight()", 10);
		} else {
			obj.iCurrentStep--;
			obj.timer = null;
		}
	} else {
		obj.iCurrentStep = 0;
	}
}

function slideLeft() {
	if (obj.iCurrentStep < obj.iMaxStep) {
		var nextPos = (obj.iCurrentStep + 1) * obj.iStepIncrement;
		var leftPos = parseInt(obj.style.left);
		var iAbs = -leftPos;

		if (iAbs < nextPos) {
			obj.style.left = (leftPos - (obj.iStepIncrement / 5)) + "px";
			setTimeout("slideLeft()", 10);
		} else {
			obj.iCurrentStep++;
			obj.timer = null;
		}
	} else {
		obj.iCurrentStep = obj.iMaxStep;
	}
}