/* *******************************************************************
   created:			08.02.2007, by eLab, eLearning Lab, USI/SUPSI
   name:			webtv.js
   description:		javscript file for USIVIRTUAL website, WEBTV
   last modified:	08.02.2007
   ******************************************************************* */

/* ************************************************************************************************************************************************************************ */
/* VOTE */


function rateImg(rating,vidInstance){
		var url = '/admin/webtv/ajax_php/updateVideoRating.php';
		var pars = 'rating='+rating+'&vidInstance='+vidInstance+'&rand='+Math.random();
		
	var myAjax = new Ajax.Request(url, {method:'post', postBody: pars, onFailure: reportErrorRating });
		//remotos = new datosServidor;
		//nt = remotos.enviar('updateVideoRating.php?rating='+rating+'&vidInstance='+vidInstance);
		rating = rating * 18;
		document.getElementById('current-rating').style.width = rating+'px';
		
		document.getElementsByClassName('one-star')[0].style.display = 'none';
		document.getElementsByClassName('two-stars')[0].style.display = 'none';
		document.getElementsByClassName('three-stars')[0].style.display = 'none';
		document.getElementsByClassName('four-stars')[0].style.display = 'none';
		document.getElementsByClassName('five-stars')[0].style.display = 'none';
		
}
function reportErrorRating(request){
	alert('Sorry. There was an error rating.');
}


/* ************************************************************************************************************************************************************************ */
/* WEBTV AJAX */

function GetParam(name) {
	var start=location.search.indexOf("?"+name+"=");
	if (start<0) start=location.search.indexOf("&"+name+"=");
	if (start<0) return '';
	start += name.length+2;
	var end=location.search.indexOf("&",start)-1;
	if (end<0) end=location.search.length;
	var result=location.search.substring(start,end);
	var result='';
	for(var i=start;i<=end;i++) {
		var c=location.search.charAt(i);
		result=result+(c=='+'?' ':c);
	}
	return unescape(result);
}

function reportError(request)
{
	alert('Sorry. There was an error.');
}

function getTree(lang, chid, subid) {
{
	var url = '/admin/webtv/ajax_php/getWebTvMenuDiv.php';
	var pars = 'lang='+lang+'&chid='+chid+'&subid='+subid+'&rand='+Math.random();
		
	var myAjax = new Ajax.Updater(
					{success: 'webTvMenu'}, 
					url, 
					{
						method: 'get', 
						parameters: pars, 
						onFailure: reportError,
						evalScripts: true
					});
		
	}

}

function getVideo(lang, vid, vlang, subid) {
{
		var url = '/admin/webtv/ajax_php/getWebTvVideoDiv.php';
		var pars = 'lang='+lang+'&vid='+vid+'&vlang='+vlang+'&subid='+subid+'&rand='+Math.random();
		
		var myAjax = new Ajax.Updater(
					{success: 'webTvVideo'}, 
					url, 
					{
						method: 'get', 
						parameters: pars, 
						onFailure: reportError,
						evalScripts: true
					});
		
	}

}

function getSubcategoryVideos(lang, subid) {
{
		var url = '/admin/webtv/ajax_php/getWebTvVideosDiv.php';
		var pars = 'lang='+lang+'&subid='+subid+'&rand='+Math.random();
		
		var myAjax = new Ajax.Updater(
					{success: 'webTvVideos'}, 
					url, 
					{
						method: 'get', 
						parameters: pars, 
						onFailure: reportError,
						evalScripts: true
					});
	}

}
//with startvideo
function getSubcategoryVideosStart(lang, subid, startvideo) {
{
		var url = '/admin/webtv/ajax_php/getWebTvVideosDiv.php';
		var pars = 'lang='+lang+'&subid='+subid+'&startvideo='+startvideo+'&rand='+Math.random();
		
		var myAjax = new Ajax.Updater(
					{success: 'webTvVideos'}, 
					url, 
					{
						method: 'get', 
						parameters: pars, 
						onFailure: reportError,
						evalScripts: true
					});
	}

}

function goDirectlyToVideo(lang, chid, subid, vid, vlang){
		getTree(lang, chid, subid);
		getVideo(lang, vid, vlang, subid);		
		getSubcategoryVideos(lang, subid);
}

//with startvideo
function getLastVideos(lang,num) {
{
		var url = '/admin/webtv/ajax_php/getLastVideos.php';
		var pars = 'lang='+lang+'&num='+num+'&rand='+Math.random();
		
		var myAjax = new Ajax.Updater(
					{success: 'lastVideosContent'}, 
					url, 
					{
						method: 'get', 
						parameters: pars, 
						onFailure: reportError,
						evalScripts: true
					});
	}

}

function getLastSubcategoryVideos(lang, subid) {
{
		var url = '/admin/webtv/ajax_php/getLastSubcategoryVideos.php';
		var pars = 'lang='+lang+'&subid='+subid+'&rand='+Math.random();
		
		var myAjax = new Ajax.Updater(
					{success: 'subcategoryVideos'}, 
					url, 
					{
						method: 'get', 
						parameters: pars, 
						onFailure: reportError,
						evalScripts: true
					});
	}

}

/************************************************************************************************************
(C) www.dhtmlgoodies.com, October 2005

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	

Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.

Update log:

	March, 15th: Fixed problem with sliding in MSIE

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland

************************************************************************************************************/	
var expandFirstItemAutomatically = false;	// Expand first menu item automatically ?
var initMenuIdToExpand = true;	// Id of menu item that should be initially expanded. the id is defined in the <li> tag.
var expandMenuItemByUrl = false;	// Menu will automatically expand by url - i.e. if the href of the menu item is in the current location, it will expand
var initMenuIdToExpand = 'initialExpandedMenuItem';

var initialMenuItemAlwaysExpanded = true;	// NOT IMPLEMENTED YET

var dhtmlgoodies_slmenuObj;
var divToScroll = false;
var ulToScroll = false;	
var divCounter = 1;
var otherDivsToScroll = new Array();
var divToHide = false;
var parentDivToHide = new Array();
var ulToHide = false;
var offsetOpera = 0;
if(navigator.userAgent.indexOf('Opera')>=0)offsetOpera=1;	
var slideMenuHeightOfCurrentBox = 0;
var objectsToExpand = new Array();
var initExpandIndex = 0;
var alwaysExpanedItems = new Array();
	
function resetOtherDivsToScroll() {
	otherDivsToScroll = new Array();
}
	
function popMenusToShow()
{	
	var obj = divToScroll;
	var endArray = new Array();
	while(obj && obj.tagName!='BODY'){
		if(obj.tagName=='DIV' && obj.id.indexOf('slideDiv')>=0){
			var objFound = -1;
			for(var no=0;no<otherDivsToScroll.length;no++){
				if(otherDivsToScroll[no]==obj){
					objFound = no;		
				}					
			}	
			if(objFound>=0){
				otherDivsToScroll.splice(objFound,1);	
			}		
		}	
		obj = obj.parentNode;
	}	
}

function showSubMenu(e,inputObj)
{	
	
	if(!(inputObj) && this){		
		if(this && this.tagName)inputObj = this.parentNode;
		if(inputObj && inputObj.tagName=='LI'){
			temp = inputObj.getElementsByTagName('DIV')[0];
			if(!temp){				
				$('dhtmlgoodies_slidedown_menu').getElementsByClassName('selectedSubcategory').each(function(element){element.removeClassName('selectedSubcategory');});;
				$$('li a[href='+this+']').each(function(element){element.ancestors()[0].addClassName('selectedSubcategory'); });
			}
		}
	}
	
	if(this && this.tagName)inputObj = this.parentNode;
	if(inputObj && inputObj.tagName=='LI'){
		divToScroll = inputObj.getElementsByTagName('DIV')[0];
		for(var no=0;no<otherDivsToScroll.length;no++){
			if(otherDivsToScroll[no]==divToScroll)return;
		}			
	}
	
	
	hidingInProcess = false;
	if(otherDivsToScroll.length>0){
		if(divToScroll){				
			if(otherDivsToScroll.length>0){
				//SWITCH BACKGROUND IMAGE
				$(divToScroll).ancestors()[0].addClassName('selectedCategory');//setStyle({backgroundImage: 'url(../img/video-img/video-arrow-down.gif)'});
				popMenusToShow();
			}
			if(otherDivsToScroll.length>0){				
				autoHideMenus();
				hidingInProcess = true;
			}
		}	
	}		
	if(divToScroll && !hidingInProcess){
		divToScroll.style.display='';
		otherDivsToScroll.length = 0;
		otherDivToScroll = divToScroll.parentNode;
		otherDivsToScroll.push(divToScroll);	
		while(otherDivToScroll && otherDivToScroll.tagName!='BODY'){
			if(otherDivToScroll.tagName=='DIV' && otherDivToScroll.id.indexOf('slideDiv')>=0){
				otherDivsToScroll.push(otherDivToScroll);
									
			}
			otherDivToScroll = otherDivToScroll.parentNode;
		}			
		ulToScroll = divToScroll.getElementsByTagName('UL')[0];
		if(divToScroll.style.height.replace('px','')/1<=1)scrollDownSub();
	}
}



function autoHideMenus()
{
	if(otherDivsToScroll.length>0){		
		divToHide = otherDivsToScroll[otherDivsToScroll.length-1];
		parentDivToHide.length=0;		
		//SWITCH BACKGROUND IMAGE
		$(divToHide).ancestors()[0].removeClassName('selectedCategory');//setStyle({backgroundImage: 'url(../img/video-img/video-arrow-right.gif)'});
		var obj = divToHide.parentNode.parentNode.parentNode;
		while(obj && obj.tagName=='DIV'){			
			if(obj.id.indexOf('slideDiv')>=0)parentDivToHide.push(obj);
			obj = obj.parentNode.parentNode.parentNode;
		}
		var tmpHeight = (divToHide.style.height.replace('px','')/1 - slideMenuHeightOfCurrentBox);
		if(tmpHeight<0)tmpHeight=0;
		if(slideMenuHeightOfCurrentBox)divToHide.style.height = tmpHeight  + 'px';
		ulToHide = divToHide.getElementsByTagName('UL')[0];
		slideMenuHeightOfCurrentBox = ulToHide.offsetHeight;
		scrollUpMenu();		
	}else{
		slideMenuHeightOfCurrentBox = 0;
		showSubMenu();			
	}
}


function scrollUpMenu()
{

	var height = divToHide.offsetHeight;
	height-=15;
	if(height<0)height=0;
	divToHide.style.height = height + 'px';

	for(var no=0;no<parentDivToHide.length;no++){	
		parentDivToHide[no].style.height = parentDivToHide[no].getElementsByTagName('UL')[0].offsetHeight + 'px';
	}
	if(height>0){
		setTimeout('scrollUpMenu()',5);
	}else{
		divToHide.style.display='none';
		otherDivsToScroll.length = otherDivsToScroll.length-1;
		autoHideMenus();			
	}
}	

function scrollDownSub()
{
	if(divToScroll){			
		var height = divToScroll.offsetHeight/1;
		var offsetMove =Math.min(15,(ulToScroll.offsetHeight - height));
		height = height +offsetMove ;
		divToScroll.style.height = height + 'px';
		
		for(var no=1;no<otherDivsToScroll.length;no++){
			var tmpHeight = otherDivsToScroll[no].offsetHeight/1 + offsetMove;
			otherDivsToScroll[no].style.height = tmpHeight + 'px';
		}			
		if(height<ulToScroll.offsetHeight)setTimeout('scrollDownSub()',5); else {
			divToScroll = false;
			ulToScroll = false;
			if(objectsToExpand.length>0 && initExpandIndex<(objectsToExpand.length-1)){
				initExpandIndex++;
				
				showSubMenu(false,objectsToExpand[initExpandIndex]);
			}
		}
	}
}
	
function initSubItems(inputObj,currentDepth)
{		
	divCounter++;		
	var div = document.createElement('DIV');	// Creating new div		
	div.style.overflow = 'hidden';	
	div.style.position = 'relative';
	div.style.display='none';
	div.style.height = '1px';
	div.id = 'slideDiv' + divCounter;
	div.className = 'slideMenuDiv' + currentDepth;		
	inputObj.parentNode.appendChild(div);	// Appending DIV as child element of <LI> that is parent of input <UL>		
	div.appendChild(inputObj);	// Appending <UL> to the div
	var menuItem = inputObj.getElementsByTagName('LI')[0];
	while(menuItem){
		if(menuItem.tagName=='LI'){
			var aTag = menuItem.getElementsByTagName('A')[0];
			aTag.className='slMenuItem_depth'+currentDepth;	
			var subUl = menuItem.getElementsByTagName('UL');
			if(subUl.length>0){
				initSubItems(subUl[0],currentDepth+1);					
			}
			aTag.onclick = showSubMenu;				
		}			
		menuItem = menuItem.nextSibling;						
	}		
}

function initSlideDownMenu()
{
	dhtmlgoodies_slmenuObj = document.getElementById('dhtmlgoodies_slidedown_menu');
	dhtmlgoodies_slmenuObj.style.visibility='visible';
	var mainUl = dhtmlgoodies_slmenuObj.getElementsByTagName('UL')[0];		
	var mainMenuItem = mainUl.getElementsByTagName('LI')[0];
	mainItemCounter = 1;
	while(mainMenuItem){			
		if(mainMenuItem.tagName=='LI'){
			var aTag = mainMenuItem.getElementsByTagName('A')[0];
			aTag.className='slMenuItem_depth1';	
			var subUl = mainMenuItem.getElementsByTagName('UL');
			if(subUl.length>0){
				mainMenuItem.id = 'mainMenuItem' + mainItemCounter;
				initSubItems(subUl[0],2);
				aTag.onclick = showSubMenu;
				mainItemCounter++;
			}				
		}			
		mainMenuItem = mainMenuItem.nextSibling;	
	}		
	
	if(location.search.indexOf('mainMenuItemToSlide')>=0){
		var items = location.search.split('&');
		for(var no=0;no<items.length;no++){
			if(items[no].indexOf('mainMenuItemToSlide')>=0){
				values = items[no].split('=');
				showSubMenu(false,document.getElementById('mainMenuItem' + values[1]));	
				initMenuIdToExpand = false;				
			}
		}			
	}else if(expandFirstItemAutomatically>0){
		if(document.getElementById('mainMenuItem' + expandFirstItemAutomatically)){
			showSubMenu(false,document.getElementById('mainMenuItem' + expandFirstItemAutomatically));
			initMenuIdToExpand = false;
		}
	}

	if(expandMenuItemByUrl)
	{
		var aTags = dhtmlgoodies_slmenuObj.getElementsByTagName('A');
		for(var no=0;no<aTags.length;no++){
			var hrefToCheckOn = aTags[no].href;				
			if(location.href.indexOf(hrefToCheckOn)>=0 && hrefToCheckOn.indexOf('#')<hrefToCheckOn.length-1){
				initMenuIdToExpand = false;
				var obj = aTags[no].parentNode;
				while(obj && obj.id!='dhtmlgoodies_slidedown_menu'){
					if(obj.tagName=='LI'){							
						var subUl = obj.getElementsByTagName('UL');
						if(initialMenuItemAlwaysExpanded)alwaysExpanedItems[obj.parentNode] = true;
						if(subUl.length>0){								
							objectsToExpand.unshift(obj);
						}
					}
					obj = obj.parentNode;	
				}
				showSubMenu(false,objectsToExpand[0]);
				break;					
			}			
		}
	}
			
	if(initMenuIdToExpand)
	{
		objectsToExpand = new Array();
		var obj = document.getElementById(initMenuIdToExpand)
		while(obj && obj.id!='dhtmlgoodies_slidedown_menu'){
			if(obj.tagName=='LI'){
				var subUl = obj.getElementsByTagName('UL');
				if(initialMenuItemAlwaysExpanded)alwaysExpanedItems[obj.parentNode] = true;
				if(subUl.length>0){						
					objectsToExpand.unshift(obj);
				}
			}
			obj = obj.parentNode;	
		}
		
		showSubMenu(false,objectsToExpand[0]);
	
	}
	
}

/************************************/
//Submit Video Functions
/************************************/

function showSubmitVideo(){
	new Effect.SlideDown('submitVideo',{ duration: 1.0, queue: {position:'front', scope: 'myscope', limit: 1}});
	
	Event.stopObserving('webTvVMCmail', 'click', showSubmitVideo);
	Event.observe('submitVideoContentCloseLink', 'click', hideSubmitVideo);	
	Event.observe('webTvVMCmail', 'click', hideSubmitVideo);	
}
function hideSubmitVideo(){
	new Effect.SlideUp('submitVideo',{ duration: 1.0, queue: {position:'front', scope: 'myscope', limit: 1} });
	
	Event.stopObserving('webTvVMCmail', 'click', hideSubmitVideo);
	Event.observe('webTvVMCmail', 'click', showSubmitVideo);		
	Event.stopObserving('submitVideoContentCloseLink', 'click', hideSubmitVideo);			
}
function sendSubmitVideo(lang,subid,vlang,vid){
	if(!isRFC822ValidEmail($F('from'))){
		$("fromEmailLabel").setStyle({color:'#f00'});
		return false;
	}else{
		$("fromEmailLabel").setStyle({color:'#000'});
	}
	if(!isRFC822ValidEmail($F('to'))){
		$("toEmailLabel").setStyle({color:'#f00'});
		return false;
	}else{						
		$("toEmailLabel").setStyle({color:'#000'});
	}		
	
	var url = '/admin/webtv/ajax_php/sendemail.php?&rand='+Math.random()*1000;
	var postBodyParam = Form.serialize('add');
	var myAjax = new Ajax.Request(
		url,
		{
		method:'post',												
		postBody:	postBodyParam+'&lang='+lang+'&subid='+subid+'&vlang='+vlang+'&vid='+vid,
		onFailure:	submitVideoError,
		onSuccess:	function(transport) {
						sendSubmitVideoSuccess(transport.responseText);
					}
		}
		);
}
function submitVideoError(){
	alert('Error sending email')
}

var responseText = '';
function sendSubmitVideoSuccess(text){
	responseText = text;
	var heightInits = $('submitVideo').getHeight();
	$('submitVideo').innerHTML='';
	$('submitVideo').setStyle({height: heightInits+'px',backgroundColor:'#f8e2d4'});
	new Effect.Scale('submitVideo', 25, {scaleY:true, scaleX:false,duration:1.0, scaleContent:false, afterFinish: updateSubmitVideoContent});
}
function updateSubmitVideoContent(){
	$('submitVideo').setStyle({backgroundColor:''});				
	$('submitVideo').update("<div id=\"submitVideoContentSubmitted\"><div id=\"submitVideoContentClose\"><a href=\"javascript:void(0)\" id=\"submitVideoContentCloseLink\">close</a></div><div id=\"submitVideoOk\">"+responseText+"</div></div><div id=\"submitVideoBottom\"><img src=\"/img/blank.gif\" height=\"6\" width=\"1\" /></div>");
	setTimeout("hideSubmitVideo();",2000);
	responseText = '';
}
function isRFC822ValidEmail(sEmail) {					
	var sQtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
	var sDtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
	var sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
	var sQuotedPair = '\\x5c[\\x00-\\x7f]';
	var sDomainLiteral = '\\x5b(' + sDtext + '|' + sQuotedPair + ')*\\x5d';
	var sQuotedString = '\\x22(' + sQtext + '|' + sQuotedPair + ')*\\x22';
	var sDomain_ref = sAtom;
	var sSubDomain = '(' + sDomain_ref + '|' + sDomainLiteral + ')';
	var sWord = '(' + sAtom + '|' + sQuotedString + ')';
	var sDomain = sSubDomain + '(\\x2e' + sSubDomain + ')*';
	var sLocalPart = sWord + '(\\x2e' + sWord + ')*';
	var sAddrSpec = sLocalPart + '\\x40' + sDomain; // complete RFC822 email address spec
	var sValidEmail = '^' + sAddrSpec + '$'; // as whole string
	
	var reValidEmail = new RegExp(sValidEmail);
	
	if (reValidEmail.test(sEmail)) {
		return true;
	}
	
	return false;
}