//expandableText
Event.observe(window, 'load', expandableText);
function expandableText() {
	if(!$$('.hidden-text')) return false;
	if(!$$('.expand-message')) return false;
	var expanders = $$('.expand-message a');
	for (var i=0;i<expanders.length;i++) {
		Event.observe(expanders[i], 'click',
	    	function(e) {
				hiddenText = Event.element(e).ancestors()[1].getElementsByClassName('hidden-text');
				hiddenText[0].show();
				Event.element(e).ancestors()[0].hide();
				Event.stop(e);
			});
	}
	var contractors = $$('.hidden-text a');
	for (var j=0;j<contractors.length;j++) {
		Event.observe(contractors[j], 'click',
	    	function(e) {
				expandMessage = Event.element(e).ancestors()[1].getElementsByClassName('expand-message');
				expandMessage[0].show();
				Event.element(e).ancestors()[0].hide();
				Event.stop(e);
			});
	}
}

//hide affiliates
Event.observe(window, 'load', hideAffiliates);
function hideAffiliates() {
	if(!$$('.hide-affiliates')) return false;
	var affiliates = $$('.hide-affiliates');
	for (var i=0;i<affiliates.length;i++) {
		affiliates[i].hide();
	}
}

Event.observe(window, 'load', showWatchNow);
function showWatchNow() {
	var userdate = new Date;
	var userzone = -userdate.getTimezoneOffset()/60;
	tz_list = [-4, -5, -6, -7, -8, -9, -10, -11, -12, 11, 10];
	if (tz_list.contains(userzone)) {
		if ($('leftcol') && $('watch-now')) {
			$('leftcol').className = 'wn';
			$('watch-now').show();
		}
	} else {
		if ($('int-warning')) {
			$('int-warning').show();
		}
	}
}

//give IE6 button:hover functionality, IE7 is also affected though it doesn't need to be
buttonsHover = function() {
	if(!$$('button')) return false;
	var btns = $$('button');
	for (var i=0;i<btns.length;i++) {
		Event.observe(btns[i], 'mouseover',
	    	function(e) {
				Event.element(e).className+=" hover";
			});
		Event.observe(btns[i], 'mouseout',
	        function(e) {
				Event.element(e).className=Event.element(e).className.replace(new RegExp(" hover\\b"), "");
			});	
	}
	var dscdnts = $$('button *');
	for (var j=0;j<dscdnts.length;j++) {
		Event.observe(dscdnts[j], 'mouseover',
	    	function(e) {
				Event.element(e).ancestors()[0].className+=" hover";
			});
		Event.observe(dscdnts[j], 'mouseout',
	        function(e) {
				Event.element(e).ancestors()[0].className=Event.element(e).ancestors()[0].className.replace(new RegExp(" hover\\b"), "");
			});	
	}
}
if (window.attachEvent) window.attachEvent("onload", buttonsHover);


//Search Bar functionality
Event.observe(window, 'load', setupSearchFunc);
function setupSearchFunc() {
        if (!document.getElementById) return false;
        if (!document.getElementById("searchBarSelect")) return false;
        if (!document.getElementById("searchBarInput")) return false;
        var searchSelect = document.getElementById("searchBarSelect");
        Event.observe(searchSelect, 'change',
                function(e) {
                        if(Field.present('searchBarInput'))
                                Event.element(e).form.submit();
                });
}

//Search "Sort By" functionality
Event.observe(window, 'load', setupSortBoxFunc);
function setupSortBoxFunc() {
        if (!document.getElementById) return false;
        if (!document.getElementById("sortboxSort")) return false;
        var sortboxSort = document.getElementById("sortboxSort");
        Event.observe(sortboxSort, 'change',
                function(e) {
                        Event.element(e).form.submit();
                });
}

//Search "Availability" functionality
Event.observe(window, 'load', setupAvailabilityFunc);
function setupAvailabilityFunc() {
        if (!document.getElementById) return false;
        if (!document.getElementById("filterAvail")) return false;
        var availSort = document.getElementById("filterAvail");
        Event.observe(availSort, 'change',
                function(e) {
                        Event.element(e).form.submit();
                });
}

// platform detection magics
var PlatformDetect = {
    init: function () {
        this.browser = this.searchString(this.dataBrowser)
        || "unknown";
        this.version = this.searchVersion(navigator.userAgent)
        || this.searchVersion(navigator.appVersion)
        || "unknown";
        this.OS = this.searchString(this.dataOS) || "unknown";
    },
    searchString: function (data) {
        for (var i=0;i<data.length;i++){
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = (data[i].versionSearch ||
                                        data[i].identity);
            if (dataString) {
                if (dataString.indexOf(data[i].subString) != -1)
                    return data[i].identity;
            }
            else if (dataProp)
            return data[i].identity;
        }
    },
    searchVersion: function (dataString) {
        var index = dataString.indexOf(this.versionSearchString);
        if (index == -1) return;
        return parseFloat(
            dataString.substring(index+this.versionSearchString.length+1)
            );
    },
    dataBrowser: [
        { string: navigator.userAgent,
          subString: "OmniWeb",
          versionSearch: "OmniWeb/",
          identity: "OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari"
        },
        {
            prop: window.opera,
            identity: "Opera"
        },
        {
            string: navigator.vendor,
            subString: "iCab",
            identity: "iCab"
        },
        {
            string: navigator.vendor,
            subString: "KDE",
            identity: "Konqueror"
        },
        {
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
        },
        {
            string: navigator.vendor,
            subString: "Camino",
            identity: "Camino"
        },
        {// for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: "Netscape",
            identity: "Netscape"
        },
        {
            string: navigator.userAgent,
            subString: "MSIE",
            identity: "Explorer",
            versionSearch: "MSIE"
        },
        {
            string: navigator.userAgent,
            subString: "Gecko",
            identity: "Mozilla",
            versionSearch: "rv"
        },
        { // for older Netscapes (4-)
            string: navigator.userAgent,
            subString: "Mozilla",
            identity: "Netscape",
            versionSearch: "Mozilla"
        }
        ],
    dataOS : [
        {
            string: navigator.platform,
            subString: "Win",
            identity: "Windows"
        },
        {
            string: navigator.platform,
            subString: "Mac",
            identity: "Mac"
        },
        {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
        }
        ]

};
PlatformDetect.init();

// some convenience stuff for arrays
Array.prototype.indexOf=function(obj){
    var result=-1;

    for (var i=0;i< this.length;i++){
        if (this[i]==obj){
            result=i;
            break;
        }
    }

    return result;
}

Array.prototype.contains=function(obj){
    return (this.indexOf(obj)>=0);
}

