// General Functions
function ExecAjax(url,parameters,func_create,func_success,func_complete,func_error,async,method,timeout){
	var rand = Math.round(Math.random() * 99999);
	parameters=rand+"&"+parameters;
	
	if(async!=true){async=false;}else{async=true;}
	if(!method){method="POST";}
	if(!timeout){timeout=60;}
	var result = new String();
	var objetoAjax = new Ajax.Request(
		url,
		{
			method: method, 
			requestTimeout: timeout,
			encoding: 'UTF-8',
			parameters: parameters, 
			onCreate : function(){if(func_create) eval(func_create);},
			onSuccess : function(){if(func_success) eval(func_success);},
			onComplete: function(transport){
				//alert("Ajax Result: "+transport.responseText);
				eval(func_complete);
			},
			onFailure:  function(){
				if(func_error==null){
					alert("Error: Action has not been executed correctly.");
				} else {
					eval(func_error);
				}
			},
			asynchronous : async
		});
	return result;
}

function OpenLayer(div_id){
	$(div_id).show();
	
}
function CloseLayer(div_id){
	$(div_id).hide();
}

function FavAddVideo(video_id,update){
	ExecAjax("actions/fav_status.php","video_id="+video_id+"&status=1","","","EvalFavStatus(transport.responseText,'"+video_id+"',1);","",true,"POST",60);
}

function FavRemoveVideo(video_id,update){
	ExecAjax("actions/fav_status.php","video_id="+video_id+"&status=0","","","EvalFavStatus(transport.responseText,'"+video_id+"',0);","",true,"POST",60);
}

function EvalFavStatus(response,video_id,status){
	var aResponse=response.evalJSON()
	if(aResponse.success==true){
		if(status==1){
			if($('favstar_off_'+video_id)) $('favstar_off_'+video_id).hide();
			if($('favstar_on_'+video_id)) $('favstar_on_'+video_id).show();
		} else {
			if($('favstar_on_'+video_id)) $('favstar_on_'+video_id).hide();
			if($('favstar_off_'+video_id)) $('favstar_off_'+video_id).show();
		}		
	} else {
		alert(aResponse.message);
	}	
}

function SwitchTab(group,tab){
	var regexp=new RegExp("^"+group+"_");
	$$('.tab_info').each(function(element){
		if(regexp.test(element.id)){
			element.removeClassName('tab_upload');
		}
	});
	$(group+'_'+tab).addClassName('tab_upload');
}

function HideByClassName(classname){
	var aElements=$$(classname);
	aElements.each(function(element){
		element.hide();
	});
}

function ShowByClassName(classname){
	var aElements=$$(classname);
	aElements.each(function(element){
		element.show();
	});
}

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 UserLogin(){
	$('login_error_msg').hide();
	var user=$('login_form').user_login.value;
	var pass=$('login_form').pass_login.value;
	if(!user){
		$('login_error_msg').innerHTML=aLabels['username_required'];
		$('login_error_msg').show();
	} else if(!pass){
		$('login_error_msg').innerHTML=aLabels['password_required'];
		$('login_error_msg').show();
	} else {
		ExecAjax("actions/login.php","user="+user+"&pass="+pass,"","","EvalUserLogin(transport.responseText);","",true,"POST",60);
	}
}

function EvalUserLogin(response){
	var aResponse=response.evalJSON()
	if(aResponse.success==true){
		window.location.reload();
	} else{
		$('login_error_msg').innerHTML=aResponse.message;
		$('login_error_msg').show();
	}	
}

function SendRecoverEmail(email){
	$('forgot_error_msg').hide();
	$('forgot_success_msg').hide();
	if(!email){
		$('forgot_error_msg').innerHTML=aLabels['email_required'];
		$('forgot_error_msg').show();
	} else {
		ExecAjax("actions/recover_password.php","email="+email,"","","EvalRecoverEmail(transport.responseText);","",true,"POST",60);
	}
}

function EvalRecoverEmail(response){
	var aResponse=response.evalJSON()
	if(aResponse.success==true){
		$('forgot_success_msg').innerHTML=aResponse.message;
		$('forgot_success_msg').show();
		$('user_email').value='';
	} else{
		$('forgot_error_msg').innerHTML=aResponse.message;
		$('forgot_error_msg').show();
	}		
}

function UserRegister(f){
	$('register_error_msg').hide();
	$('register_success_msg').hide();
	var f=$('register_form');
	
	var user=f.user.value;
	var pass=f.pass.value;
	var email=f.email.value;
	
	if(!user){
		$('register_error_msg').innerHTML=aLabels['username_required'];
		$('register_error_msg').show();
	} else if(!pass){
		$('register_error_msg').innerHTML=aLabels['password_required'];
		$('register_error_msg').show();
	} else if(!email){
		$('register_error_msg').innerHTML=aLabels['email_required'];
		$('register_error_msg').show();
	} else if(!email.match(/\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b/)){
		$('register_error_msg').innerHTML=aLabels['email_missmatch'];
		$('register_error_msg').show();
	} else {
		ExecAjax("actions/register.php","user="+user+"&pass="+pass+"&email="+email,"","","EvalUserRegister(transport.responseText);","",true,"POST",60);
	}
}

function EvalUserRegister(response){
	var aResponse=response.evalJSON()
	if(aResponse.success==true){
		$('register_error_msg').hide();
		$('register_success_msg').show();
	} else {
		$('register_success_msg').hide();
		$('register_error_msg').innerHTML=aResponse.message;
		$('register_error_msg').show();
	}
}

function loadModule(module,vars,div_id,aditional_functions) {
	if(!aditional_functions) aditional_functions="";
	ExecAjax("index.php?module="+module,"onlymod=1&"+vars,"","","$('"+div_id+"').innerHTML=transport.responseText; "+aditional_functions,"",true);
}

function DisbleUploadButton(){
	$('upload_button').hide();
	$('upload_button_disabled').show();
	$('upload_loading').show();	
}

function EnableUploadButton(){
	$('upload_button_disabled').hide();
	$('upload_button').show();
	$('upload_loading').hide();	
}

function EvalVideoUpload(){
	EnableUploadButton();
	$('upload_form').reset();
	$('upload_success').show();
}

/* File Input stylizer functions */
if (!window.SI) { var SI = {}; };
SI.Files =
{
	htmlClass : 'SI-FILES-STYLIZED',
	fileClass : 'file',
	wrapClass : 'cabinet',
	
	fini : false,
	able : false,
	init : function()
	{
		this.fini = true;
		
		var ie = 0 //@cc_on + @_jscript_version
		if (window.opera || (ie && ie < 5.5) || !document.getElementsByTagName) { return; } // no support for opacity or the DOM
		this.able = true;
		
		var html = document.getElementsByTagName('html')[0];
		html.className += (html.className != '' ? ' ' : '') + this.htmlClass;
	},
	
	stylize : function(elem)
	{
		if (!this.fini) { this.init(); };
		if (!this.able) { return; };
		
		elem.parentNode.file = elem;
		elem.parentNode.onmousemove = function(e)
		{
			if (typeof e == 'undefined') e = window.event;
			if (typeof e.pageY == 'undefined' &&  typeof e.clientX == 'number' && document.documentElement)
			{
				e.pageX = e.clientX + document.documentElement.scrollLeft;
				e.pageY = e.clientY + document.documentElement.scrollTop;
			};

			var ox = oy = 0;
			var elem = this;
			if (elem.offsetParent)
			{
				ox = elem.offsetLeft;
				oy = elem.offsetTop;
				while (elem = elem.offsetParent)
				{
					ox += elem.offsetLeft;
					oy += elem.offsetTop;
				};
			};

			var x = e.pageX - ox;
			var y = e.pageY - oy;
			var w = this.file.offsetWidth;
			var h = this.file.offsetHeight;

			this.file.style.top		= y - (h / 2)  + 'px';
			this.file.style.left	= x - (w - 30) + 'px';
		};
	},
	
	stylizeById : function(id)
	{
		this.stylize(document.getElementById(id));
	},
	
	stylizeAll : function()
	{
		if (!this.fini) { this.init(); };
		if (!this.able) { return; };
		
		var inputs = document.getElementsByTagName('input');
		for (var i = 0; i < inputs.length; i++)
		{
			var input = inputs[i];
			if (input.type == 'file' && input.className.indexOf(this.fileClass) != -1 && input.parentNode.className.indexOf(this.wrapClass) != -1)
			{
				this.stylize(input);
			};
		};
	}
};
SI.Files.stylizeAll();


// Thumbs rotation functions
// -------------------------
var thumbs_cache=[];
var thumb_interval='';
var thumb_index=0;
var hover=[];
var ajax_running=0;


function StartThumbRotation(thumb_id,video_id){
	StopThumbRotation(thumb_id,video_id);
	hover[video_id]=1;
	thumb_index=0;
	if(ajax_running==0){
		if(!thumbs_cache[video_id]){
			ajax_running=1;
			thumbs_cache[video_id]="";
			ExecAjax("actions/video/get_thumbs_list.php","video_id="+video_id,"","","ExecThumbRotation('"+thumb_id+"','"+video_id+"',transport.responseText);","",true,"POST");
		} else {
			ExecThumbRotation(thumb_id,video_id,'{"success":true,"thumbs":'+thumbs_cache[video_id].toJSON()+'}');
		}
	}
}

function ExecThumbRotation(thumb_id,video_id,response){
	oResponse=response.evalJSON();
	ajax_running=0;
	if(oResponse.success==true){
		thumbs_cache[video_id]=oResponse.thumbs;
		
		if(hover[video_id]==1){
			var pics=[];
			for(i=0;i<oResponse.thumbs.length;i++){
				pics[i]= new Image(164,124);
		     	pics[i].src=oResponse.thumbs[i];
			}
			thumb_interval=setInterval("NextThumb('"+thumb_id+"','"+video_id+"');",500);
		} else {
			StopThumbRotation(thumb_id,video_id);	
		}
	} else {
		thumbs_cache[video_id]='{"success":false}';
	}
}

function NextThumb(thumb_id,video_id){
	if(hover[video_id]==1 && ajax_running==0 && thumbs_cache[video_id]){
		var t=thumbs_cache[video_id];
		
		if(thumb_index>=t.length-1 || thumb_index==-1){
			thumb_index=0;
		} else {
			thumb_index++;
		}	
		if(t[thumb_index] && $(thumb_id)) $(thumb_id).src=t[thumb_index];
	}
}

function StopThumbRotation(thumb_id,video_id){
	clearInterval(thumb_interval);
	thumb_index=-1;
	NextThumb(thumb_id,video_id);
	hover[video_id]=0;
}

function ValidateUpload(){
	$('upload_success').hide();
	DisbleUploadButton();
	var f=$('upload_form');
	if(f.upload_title.value && f.upload_description.value && f.upload_tags.value && f.upload_file.value && f.upload_categories.getValue().length>0){
		$('upload_form').submit();
	} else {
		EnableUploadButton();
		alert(aLabels['all_fields_required']);
		return false;
	}
}
