var IS_IPHONE = ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) ? true : false;
var CWD = "/res/style/t2/";

var streamBoxPreload = [
	"/images/t2/popup-top.png",
	"/images/t2/popup-middle.png",
	"/images/t2/popup-bottom.png",
	"/images/t2/popup-button.png",
	"/images/t2/popup-button-selected.png",
	"/images/t2/popup-check.png"
];
var webAppPreload = [
   "images/std-button-blue.png"
];
/*****************************************************************************
 * HTML HELP FUNCTIONS                                                       *
 *****************************************************************************/
(function() {
	var getDimensions = function(el, width) {
		if (el.style.display != 'none')
			return width ? el.offsetWidth : el.offsetHeight;
		// reset css properties to get accurate reading
		var old = resetCSS(el, {display: '', visibility: 'hidden', position: 'absolute'});
		var dim = (width ? el.clientWidth : el.clientHeight) ;
		restoreCSS(el, old);
		return dim;
	}
	window.getElementFullHeight = function(el) { return getDimensions(el, false); }
	window.getElementFullWidth = function(el) { return getDimensions(el, true); }

	window.elementHasClass = function(el, classToFind) {
		var classes = el.className.split(' ');
		for (var i=0; i<classes.length; i++) {
			if (classes[i] == classToFind)
				return true;
		}
		return false;
	}

	window.elementRemoveClass = function(el, classToRemove) {
		var classes = el.className.split(' ');
		var newClasses = [];
		for (var i=0; i<classes.length; i++) {
			if (classes[i] != classToRemove)
				newClasses.push(classes[i]);
				
		}
		el.className = newClasses.join(' ');
	}
	window.elementAddClass = function(el, classToAdd) {
		if (!elementHasClass(el, classToAdd)) {
			var classes = [];
			classes = el.className.split(' ');
			classes.push(classToAdd);
			el.className = classes.join(' ');
		}
	}
	
})();
function resetCSS(el, prop) {
	var old = {};
	for (var i in prop) {
		old[i] = el.style[i];
		el.style[i] = prop[i];
	}
	return old;
}
/*****************************************************************************
 * COOKIE FUNCTIONS                                                          *
 *****************************************************************************/
function restoreCSS(el, prop) {
	for (var i in prop)
		el.style[i] = prop[i]
}
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); }


/*** THIS FUNCTION IS UED BY STREAMBOX AND WEBAPP SETUP ****/
function createUnderlay(name) {
	var div = document.createElement('div');
	div.setAttribute('id', name);
	div.style.display = 'none';
	document.body.appendChild(div)
	return div;
}

/*****************************************************************************
 * STREAMBOX (VIDEO SETTINGS)                                                *
 *****************************************************************************/
function streamBoxShow(msg) {
	var streamBox = document.getElementById('streamBox');
	var underlay  = document.getElementById('streamBoxUnderlay');

    if (!streamBox) return;
	if (streamBox.style.display == 'none') {
		underlay.style.display = 'block';
		underlay.style.height = (window.innerHeight + window.pageYOffset) + 'px';
		streamBox.style.top = window.pageYOffset + (window.innerHeight/2 - getElementFullHeight(streamBox)/2) + 'px';
		streamBox.style.display = 'block';
	}
	else
		streamBox.style.display = 'none';
}
function streamBoxHideUnderlay() {
	document.getElementById('streamBoxUnderlay').style.display = 'none';
	document.getElementById('streamBox').style.display = 'none';
}
function streamBoxSet(type) {
	var buttons = document.querySelectorAll('#streamBox .streamOptions a');
	for (var i=0; i<buttons.length; i++) {
		var el = buttons[i];
		if (el.getAttribute('rel') == type)
			elementAddClass(el, 'selected');
		else {
			if (elementHasClass(el, 'selected'))
				elementRemoveClass(el, 'selected');
		}
	}
}	
function setupStreamBox() {
	var streamBox = document.getElementById('streamBox');
    if (!streamBox) return false;
	var underlay = createUnderlay('streamBoxUnderlay');
	var imgs = new Array();

	for (var i=0, l=streamBoxPreload.length;i<l;i++) {
		imgs.push(new Image());
		imgs[i].src = CWD + streamBoxPreload[i];
	}

	if (IS_IPHONE) {
		underlay.ontouchstart = function(e) {
			e.preventDefault();
			streamBoxHideUnderlay();
		}
	}
	else
		underlay.addEventListener('click', streamBoxHideUnderlay, false);

	var buttons = document.querySelectorAll('#streamBox .streamOptions a');
	for (var i=0; i<buttons.length; i++) {
		var el = buttons[i];
		
		if (IS_IPHONE) {
			el.ontouchstart = function(e) {
				e.preventDefault();
				streamBoxSet(this.getAttribute('rel'));
			}
			el.ontouchend = function(e) {
				e.preventDefault();
				createCookie('viewspeed', this.getAttribute('rel'), 365);
				streamBoxSet(this.getAttribute('rel'));
				setTimeout('streamBoxHideUnderlay()', 100);
			}
		}
		else {
			el.addEventListener('click', function() {
				createCookie('viewspeed', this.getAttribute('rel'), 365);
				streamBoxSet(this.getAttribute('rel'));
				setTimeout('streamBoxHideUnderlay()', 100);
			}, false);
		}
	}

	// if the cookie is not set for streaming bitrate ask for it
	if (readCookie('bitrate') != null)
		streamBoxSet(readCookie('bitrate'));
	else if (elementHasClass(streamBox, 'initSetting'))
		streamBoxShow();
}
/*****************************************************************************
 * COOKIE FUNCTIONS                                                          *
 *****************************************************************************/
function setupSearchBox() {
	var searchBox = document.getElementById('searchBox');
	var cancelButton = document.getElementById('searchCancelButton');
	var searchInput = document.querySelector('#searchBoxx .searchInput');
    var submitButton = document.querySelector('#searchBoxx .searchGoButton');
	var searchForm = document.querySelector('#searchBoxx form[name=searchBoxForm]');

	// setup cancel button inside the search box
	if(cancelButton){
    cancelButton.addEventListener('click', function() {
		searchCleanupHandlers();
		searchInput.value = '';
		searchBox.style.display = 'none';
	},
	false);}
	
	// hook the search functionality up
	searchInput.addEventListener('keypress', function(e) {
		if (e.which == 13) searchDoSubmit();
	}, false);
	submitButton.addEventListener('click', searchDoSubmit, false);

	function searchDoSubmit(e) {
		searchBox.style.display = 'none';
		searchForm.submit();
	}

	// attach to the doSearchButton(s) on the page 
	var links = document.querySelectorAll('.linkSearchButton');
	for (var i=0; i<links.length; i++) {
		var el = links[i];
		el.addEventListener('click', function() {
			searchBox.style.display = 'block';
			searchInput.style.color = '#999';
			searchInput.value = 'search...';
			searchInput.cleanup = true;
			searchInput.focus();
			searchInput.addEventListener('click', searchClearContent, false);
			searchInput.addEventListener('keydown', searchClearContent, false);
		}, false);
	}
}
function searchClearContent() {
	searchCleanupHandlers();
	var el = document.querySelector('#searchBox .searchInput');
	el.value = '';
	el.style.color = "#000";
}
function searchCleanupHandlers() {
	var el = document.querySelector('#searchBox .searchInput');
	if (el.cleanup) {
		el.cleanup = false;
		el.removeEventListener('click', searchClearContent, false);
		el.removeEventListener('keydown', searchClearContent, false);
	}
}
/*****************************************************************************
 * WEBAPP (CREATING A HOME BOOKMARK)                                         *
 *****************************************************************************/
function setupWebAppPopup() {
	var imgs = new Array()
	for (var i=0, l=webAppPreload.length;i<l;i++) {
		imgs.push(new Image());
		imgs[i].src = CWD + webAppPreload[i];
	}

	var underlay = createUnderlay('installAppBoxUnderlay');

	if (IS_IPHONE) {
		underlay.ontouchstart = function(e) {
			e.preventDefault();
			installAppBoxHideUnderlay();
		}
	}
	else 
		underlay.addEventListener('click', installAppBoxHideUnderlay, false);
	document.querySelector('#installAppBox .closeButton').addEventListener('click', installAppBoxHideUnderlay, false);
}
function webappClick() {
	var underlay = document.getElementById('installAppBoxUnderlay');
	var box = document.getElementById('installAppBox');
	underlay.style.height = (window.innerHeight + window.pageYOffset) + 'px';
	underlay.style.display = 'block';
	box.style.top = window.pageYOffset + 30 + 'px';
	box.style.display = 'block';
}	

function installAppBoxHideUnderlay() {
	document.getElementById('installAppBoxUnderlay').style.display = 'none';
	document.getElementById('installAppBox').style.display = 'none';
}

/*****************************************************************************
 * MENU SYSTEM                                                               *
 *****************************************************************************/
function setupMenus() {

    var selects = document.querySelectorAll('.butn_menu select');
	for (var i=0; i<selects.length; i++) {
		var el = selects[i];
        el.focus();// fix positioning by focusing on them
		el.addEventListener('change', function() {
			var val = this.value;

            if (val.match(/^javascript:/)) {
                eval(val);
                this.selectedIndex = 0;
                return;
            }

			if (val != '') {
				if (elementHasClass(this.options[this.selectedIndex], 'win')) {
					window.open(val, 'newwin');
                }
				else {
					document.location = val; 
                }

				this.selectedIndex = 0;
			}
		}, false);
	}
}


addEventListener('load', function() {    
    setupMenus();
    setupSearchBox();
	setupStreamBox();
	setupWebAppPopup();
	var selects = document.querySelectorAll('select');
	for (var i=0; i<selects.length; i++) {
		selects[i].focus();
		selects[i].blur();
	}
}, false);

