/*
Script-static.js © 2008
Licensed under the Creative Commons
Attribution-Noncommercial-Share Alike
http://creativecommons.org/licenses/by-nc-sa/3.0/
*/

/*
http://www.jslint.com
http://jsbeautifier.org
*/

var ysnAnchorOpened;

/* 
 ========== Target all external links ==========
*/

function TargetAllExternalLinks() {
	// get all anchors
	var anchors = document.getElementsByTagName("a");
	// for each anchor...
	for (var index = 0; index < anchors.length; index++) {
		// examine href (lowercase)
		var href = anchors[index].href.toLowerCase();
		// returns -1 if the string value to search for never occurs
		if ((href.indexOf('http://') !== -1) && (href.indexOf('tofilmfest.') == -1) && (href.indexOf('172.16.0.') == -1) && !(anchors[index].className)) {
			// set target and class
			anchors[index].target = "_blank";
			anchors[index].className = "external";
			// examine onclick attribute
			var anchoronclick = anchors[index].getAttribute('onclick');
			if (anchoronclick === null) {
				anchors[index].setAttribute("onclick", ((anchoronclick !== null) ? anchoronclick : "") + "pageTracker._trackPageview(URLname(href));");
			}
		}
	}
	// alert("TargetAllExternalLinks");
}

/* 
 ========== URL to Div ==========
*/

function ResponseToId(strURL, intReadyState, strResponseText, strBegin, strEnd, Id, IntervalId) {
	var DivId = 'Div_' + Id;
	ElemResponseText = document.getElementById(DivId);
	switch (intReadyState) {
	case 1:
		strResponseText = 'Opening...';
		ElemResponseText.innerHTML = strResponseText;
		break;
	case 2:
		strResponseText = 'Requesting...';
		ElemResponseText.innerHTML = strResponseText;
		break;
	case 3:
		strResponseText = 'Loading...';
		ElemResponseText.innerHTML = strResponseText;
		break;
	case 4:
		//	'Loaded'
		var intBegin = strResponseText.indexOf(strBegin);
		var intEnd = strResponseText.lastIndexOf(strEnd);
		strResponseText = strResponseText.substring(intBegin, intEnd);
		ElemResponseText.innerHTML = strResponseText;
		//
		TargetAllExternalLinks();
		clearInterval(IntervalId);
		break;
	default:
		strReadyState = 'Uninitialized';
		ElemResponseText.innerHTML = strResponseText;
		break;
	}
}

function URLtoDiv(strURL, Id) {
	var strResponseText = null;
	var intReadyState, IntervalId;
	if (window.XMLHttpRequest) {
		//	 Firefox
		objRequest = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		//	IE
		objRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (objRequest) {
		objRequest.onreadystatechange = function () {
			intReadyState = objRequest.readyState;
			if (objRequest.readyState == 4) { //	Loaded
				if (objRequest.status == 200) { //	OK response
					strResponseText = objRequest.responseText;
				} else {
					alert("Status code: " + objRequest.status + "\n" + objRequest.statusText);
				}
			}
		};
		try {
			objRequest.open("GET", strURL, true);
		} catch (e) {
			alert(e);
		}
		objRequest.send(null);
		IntervalId = setInterval(function () {
			ResponseToId(strURL, intReadyState, strResponseText, "<BODY ID='BodyId_FilmDetail'>", "</BODY>", Id, IntervalId);
		}, 100);
	}
}

/* 
 ========== Toggle element by id ==========
*/

function ToggleDiv(Id, strURL) {
	var DivId = 'Div_' + Id;
	var DivElement = document.getElementById(DivId);
	//
	if (DivElement) {
		if (DivElement.style.visibility == 'visible') {
			DivElement.style.visibility = 'hidden';
			DivElement.style.display = 'none';
		} else {
			URLtoDiv(strURL, Id);
			DivElement.style.visibility = 'visible';
			DivElement.style.display = 'block';
		}
	}
}

/* 
 ========== Open Achor Frame ==========
*/

function OpenAnchorFrame() {
	//alert("OpenAnchorFrame " + Anchor + '\n' + Source);
	if (!ysnAnchorOpened) {
		ysnAnchorOpened = true;
		// in location bar 
		var href = window.location.href;
		// anchor point
		var pound = href.indexOf('#');
		if (pound) {
			var end = href.length;
			var Anchor = href.substring((pound + 1), end);
			//
			var dash = Anchor.indexOf('--');
			var File = Anchor;
			if (dash !== -1) {
				File = Anchor.substring(0, dash);
			}
			var Source = '/film?t=' + File; // + '#' + Id;
			ToggleDiv(Anchor, Source);
		}
	}
}

/* 
 ========== URL name ==========
*/

function URLname(strURL) {
	var len = strURL.length;
	// remove prefix
	var pre = strURL.indexOf('://');
	if (pre !== -1) {
		strURL = strURL.substring(pre + 3, len);
	}
	// remove www.
	var www = strURL.substring(0, 4); // last char in substring not included
	if (www == 'www.') {
		len = strURL.length;
		strURL = strURL.substring(4, len);
	}
	// remove URI
	var slash = strURL.indexOf('/');
	if (slash !== -1) {
		strURL = strURL.substring(0, slash); // last char in substring not included
	}
	// alert('/link/' + strURL);
	return '/link/' + strURL;
}

//	http://dean.edwards.name/weblog/2006/06/again/
//	http://www.javascriptkit.com/dhtmltutors/domready.shtml

function addEvent(element, event, funct) {
	if (element.attachEvent) {
		element['e' + event + funct] = funct;
		element[event + funct] = function () {
			element['e' + event + funct](window.event);
		};
		element.attachEvent('on' + event, element[event + funct]);
		var r = element.attachEvent('on' + event, funct);
		return r;
	} else if (element.addEventListener) {
		element.addEventListener(event, funct, false);
		return true;
	} else {
		element['on' + event] = funct;
	}
}

addEvent(window, "load", OpenAnchorFrame);
addEvent(window, "load", TargetAllExternalLinks);
