// JavaScript Document
var playerColor1=Array("FE78BB","E3B600","000000","000000","000000","000000","C6D53E","C96400","B1B1B1","D9CDB8","FD1111","404040");
var playerColor2=Array("000000","D07317","303030","888889","66FF00","B2C125","FFFFFF","FECF74","CD2929","000000","C0A26A","000000");
var playerColor3=Array("B9D6E8","FFFFFF","FFFFFF","FF0000","FFFFFF","C5C5C5","BEC0C0","ECECEC","8E2B12","FF0000","871C01","D6D6D6");
var playerColor4=Array("000000","FFFFFF","FFCC00","000000","FFFFFF","484848","000000","000000","000000","D9CDB8","000000","000000");
var customTab_sel=3;
var numRowPlayList=0;
var thumbPlayersRows=6;
var thumbPlayersCur=1;
var thumbPlayersSize=3;


//****************************************THUBNAILS
function onLoadThumb(dataResponse) {
	$("thumbs0").update(dataResponse.responseText);
}

function loadThumbImages(categoryId,sCategoryId,page){
 	_URL_="load_images.php?categoryId=" + categoryId + "&sCategoryId=" + sCategoryId + "&page=" + page;  	 
	var ajax = new Ajax.Request( _URL_, {
								method: 'get',
								onComplete: onLoadThumb
								});
}

//****************************************PLAYERSWF
function changeBg(img){
	$("bgImg").value=img;
	$("backNone").checked=false;
	bgimg=img;
    document.getElementById("myPlayer").loadBg(bgimg);
}

function setColor1(){
	$("backNone").checked=true;	
	setBg();
	setColors();
	}
	
function setColors(){
	document.getElementById("myPlayer").setColors("0x"+$("imputColor1").value,"0x"+$("imputColor2").value,"0x"+$("imputColor3").value,"0x"+$("imputColor4").value);
}

function setVolume(value){
	document.getElementById("myPlayer").setVolume(value);
}

function setBg(){
	if($("backFixed").checked){
		backfixed=1;		
		backPositionH=$("backPositionH").value;
		backPositionV=$("backPositionV").value;
		 }
	else{
		backfixed=0;
		backPositionH="center";
		backPositionV="center";
	} 
	backNone=(($("backNone").checked)?"1":"0");
	document.getElementById("myPlayer").setBg(backfixed,backPositionH,backPositionV,backNone);   
}

function setAutoplay(){
	autoplay=(($("autoplay").checked)?"true":"false");
	document.getElementById("myPlayer").setAutoplay(autoplay);
}

function setShuffle(){
	shuffle=(($("shuffle").checked)?"1":"0");
	document.getElementById("myPlayer").setShuffle(shuffle);
}

//mode=1: change
//mode=2:update
function loadPlayer(playerSel,mode){
	if(mode==1){
		$("playerSel").value=playerSel;
		$("imputColor1").value=playerColor1[playerSel-1];
		$("imputColor2").value=playerColor2[playerSel-1];
		$("imputColor3").value=playerColor3[playerSel-1];
		$("imputColor4").value=playerColor4[playerSel-1];
		$("imputColor1").style.background="#"+playerColor1[playerSel-1];
		$("imputColor2").style.background="#"+playerColor2[playerSel-1];
		$("imputColor3").style.background="#"+playerColor3[playerSel-1];
		$("imputColor4").style.background="#"+playerColor4[playerSel-1];
	}
	
	params= "bgImg="+$("bgImg").value;
	params+="&backFixed=" + (($("backFixed").checked)?"1":"0");
	params+="&backNone=" + (($("backNone").checked)?"1":"0");
	params+="&backPositionV="+$("backPositionV").value;
	params+="&backPositionH="+$("backPositionH").value;
	params+="&color1=0x"+$("imputColor1").value;
	params+="&color2=0x"+$("imputColor2").value;
	params+="&color3=0x"+$("imputColor3").value;
	params+="&color4=0x"+$("imputColor4").value;
	params+="&playlistId="+$("playlistId").value;
	params+="&tmpFileId="+$("tmpFileId").value;	
		
	var dvr = $$('div.rowPlayList');
	if(dvr.length>0)
		params+="&tmpFile=xml_tmp/playlist" + $("tmpFileId").value + ".xml";
	
	var so = new SWFObject("players/"+playerSel+".swf", "myPlayer", playersWidth[(playerSel-1)],playersHeight[(playerSel-1)], "9", "");
	so.addParam("flashvars", params);
	so.addParam("wmode", "transparent");
	so.write("preview_player");		
	
	$("preview_title").update(playersName[playerSel-1]);
}

function show_customtab(opt){
	$("custom_opt"+customTab_sel).hide();
	$("bnav"+customTab_sel).removeClassName("btnCustomizeSel");
	$("custom_opt"+opt).appear();
	$("bnav"+opt).addClassName("btnCustomizeSel");
	customTab_sel=opt;	
	}

//****************************************SEARCH
function goSearch(){
	if($("q").value!="")
		location.href="music.php?q="+$("q").value;
	}
	

function doSearchMp3(){
	searchMp3($("q2").value,1);
	return false;
	}

function searchMp3(q,page){
	$('srchResult').style.display = 'none';
	$('srchLoad').style.display = 'block';
	
	var url = 'web/search.php';
	var pars = 'q='+q+'&page='+page;

	var myAjax = new Ajax.Updater({success: 'srchResult'}, url, {	method: 'get', parameters: pars, onComplete: searchComplete, onFailure: errFunc	});
						
					
	function searchComplete(){
		$('srchLoad').style.display = 'none';		
		
		drag_enable=true;		
		if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
		 	var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
		 	if (ieversion<=6)
				drag_enable=false;
		 }
	 	
		 if(drag_enable){
			$('srchResult').appear();
			var dvr = $$('div.rowResult1');
			for(i=0;i<dvr.length;i++){
				new Draggable(dvr[i].id, 
								{revert:true, ghosting: true,
								reverteffect:function(element, top_offset, left_offset){
											new Effect.Move(element, 
													{x: -left_offset, y: -top_offset, duration:0.05,
													afterFinish: function(obj) {new Effect.Opacity(obj.element, {duration:0.1, from:0, to:1});}
													});
									},
								endeffect: function(element) {
									new Effect.Opacity(element, {duration:0.05, from:1, to:0});
								 }
								})
			}
			var dvr = $$('div.rowResult2');
			for(i=0;i<dvr.length;i++){
				new Draggable(dvr[i].id, 
								{revert:true, ghosting: true,
								reverteffect:function(element, top_offset, left_offset){
											new Effect.Move(element, 
													{x: -left_offset, y: -top_offset, duration:0.05,
													afterFinish: function(obj) {new Effect.Opacity(obj.element, {duration:0.1, from:0, to:1});}
													});
									},
								endeffect: function(element) {
									new Effect.Opacity(element, {duration:0.05, from:1, to:0});
								 }
								})
			}
		 }
		 else
		 	$('srchResult').show();
		
	}

	function errFunc(error){
		location.href="error.php";
	}							
}

//****************************************PLAYLIST
function onDropSong(element){
	id=element.id.substring(9);
	addSong($("id"+id).value,$("location"+id).value,$("title"+id).value,$("siteLocation"+id).value,$("type"+id).value);
}

function makePlay(row, style, path, type){
	var dvr = $$('div.previewMp3');
	for(i=0;i<dvr.length;i++){
		if (i != row){
			dvr[i].innerHTML = "";
			dvr[i].hide();
		} else {
			dvr[i].innerHTML = '<embed src="players/preview.swf" style="" menu="false" quality="best" flashvars="path='+path+'&type='+type+'&autoplay=true&style='+style+'" scale="noscale" bgcolor="#ffffff" width="150" height="25" name="keymo-colorpicker" align="middle" wmode="transparent" allowScriptAccess="allways" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
			dvr[i].show();
		}
	}
}

function addSong(row, path, title, site, type){	
	addingSong(row, path, title, site, type)
	$("msgError").update();
	updatePlayerlist(1);	
}

function addingSong(row, path, title, site, type){
	var div1 = new Element('div', {'class': 'rowPlayList','id': 'rowList' + numRowPlayList});	
	var mp3title = new Element('input', { name: 'title' + numRowPlayList, type: 'hidden', value: title,'id': 'rowPLTitle' + numRowPlayList});
	var mp3path = new Element('input', { name: 'path' + numRowPlayList, type: 'hidden', value: path,'id': 'rowPLPath' + numRowPlayList});
	var mp3type = new Element('input', { name: 'type' + numRowPlayList, type: 'hidden', value: type,'id': 'rowPLType' + numRowPlayList});
	var mp3Row = new Element('input', { name: 'row' + numRowPlayList, type: 'hidden', value: type,'id': 'row' + numRowPlayList});
	title = decodeURIComponent(title);
	title = title.replace(/\+/g,' ');
	html='<div class="rowPlayListTxt"><div class="rowPlayListTitle" title="'+title+'">'+title+'</div><div class="rowPlayListSite">' + site + '</div></div><div class="rowPlayListBtns"><a href="javascript:removeSong(' + numRowPlayList + ');" class="btnRemove"><img src="images/site/spacer.gif"/></a></div>';
	$('edplaylist_rows').appendChild(div1);
	div1.innerHTML=html;
	div1.appendChild(mp3title);
	div1.appendChild(mp3path);
	div1.appendChild(mp3type);
	div1.appendChild(mp3Row);
	Sortable.create('edplaylist_rows',{tag:'div', containment:'edplaylist_rows', constraint: false, only:'rowPlayList', onChange:updatePlayerlist});
	numRowPlayList++;
}

function removeSong(row){
	$('edplaylist_rows').removeChild($('rowList' + row));
	updatePlayerlist(1);
}

//mode undefined: update player
//mode 1: update player
//mode 2: skip update player
function updatePlayerlist(mode){
	var url = 'web/save_playlist.php';		
	var pars = 'action=A&tmpFileId='+$("tmpFileId").value+"&"+$("form_playlist_rows").serialize();

	function checkComplete(dataResponse){
		retorno = dataResponse.responseText.evalJSON();
		if(retorno.returnValue){
			
			if($('myPlayer')!=undefined){				
				var dvr = $$('div.rowPlayList');
				if(dvr.length=0)
					document.getElementById("myPlayer").updatePlayer("xml_playlist/playlist0.xml",(Math.random() * 100000));
				else{
					if(mode!=2)				
						document.getElementById("myPlayer").updatePlayer("xml_tmp/playlist" + $("tmpFileId").value + ".xml",(Math.random() * 100000));
					else
						loadPlayer($("playerSel").value,2);
				}
			}
		}
		else{
			$('srchResult').update("error");			
			}
	}
	
	function errFunc(){
		location.href="error.php";
	}
	
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});
}

function parseUri (str) {
	var	o   = parseUri.options,
		m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
		uri = {},
		i   = 14;

	while (i--) uri[o.key[i]] = m[i] || "";

	uri[o.q.name] = {};
	uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
		if ($1) uri[o.q.name][$1] = $2;
	});

	return uri;
};

parseUri.options = {
	strictMode: false,
	key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
	q:   {
		name:   "queryKey",
		parser: /(?:^|&)([^&=]*)=?([^&]*)/g
	},
	parser: {
		strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
		loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
	}
};


function getPlaylist(playlistId,opc){
	    if(opc==1)
			var url = "xml_playlist/playlist" + playlistId + '.xml?killcache='+(Math.random() * 100000);        
		else
			var url = "xml_tmp/playlist" + playlistId + '.xml?killcache='+(Math.random() * 100000);        
        var myAjax = new Ajax.Request( url, { method: 'get', onComplete: renderResultsXML });
    }


function renderResultsXML(responseXML) {	
	var xml  = responseXML.responseXML.documentElement;
	for (i = 0; i < xml.getElementsByTagName('track').length; i++){		
		var item = xml.getElementsByTagName('track')[i];
		var title = item.getElementsByTagName('title')[0].firstChild.data;
		var path = item.getElementsByTagName('location')[0].firstChild.data;		
		var type = item.getElementsByTagName('type')[0].firstChild.data;
		var site = "";
		if(type=="youtube")
			site="youtube.com";
		else{
			result = parseUri (path);
			site=result['authority'];
			}
		addingSong(1, path, title, site, type)
	}
	updatePlayerlist(2);	
}

//****************************************FORMS
arr_reqFields=Array();

function Check_date(fecha){
	var maxYear = 2100; // Aņo maximo valido;
	var err = 0;	
	var dateMask = /^(\d{1,2})\/(\d{1,2})\/(\d\d\d\d)$/; 
	
	if (fecha.search(dateMask)!=-1) {
		aFecha = fecha.split("/");
		// errores de tipeo
		if (aFecha[0]<1 || aFecha[0]>12) err = 1;
		if (aFecha[1]<1 || aFecha[1]>31) err = 1;
		if (aFecha[2]<0 || aFecha[2]>=maxYear) err = 1;
		// meses terminados en 30
		if (aFecha[0]==4 || aFecha[0]==6 || aFecha[0]==9 || aFecha[0]==11){
			if (aFecha[1]==31) err=1
		}

		// febrero
		if (aFecha[0]==2){
			// feb
			var g=parseInt(aFecha[2]/4)
			if (isNaN(g)) {
				err=1
			}
			if (aFecha[1]>29) err=1;
			if (aFecha[1]==29 && ((aFecha[2]/4)!=parseInt(aFecha[2]/4))) err=1
		}
		
	} else { err=1 }
	if (err == 1) {
		return false;
	} else {
		return true;
	}
}

function esEmail(valor){
	var emailMask = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
	if (valor.search(emailMask)!=-1) 
		return true
	else
		return false;
}



function esPassword(field){
	/*var passwordMask =/^(?=.*\d)(?=.*[a-z])\w{6,}$/;
	if ($(field).value.search(passwordMask)!=-1) 
		return true
	else{
		if($(field).value.length < 6) {
			showError(field,"Must be at least six characters long");	
		}
		else{
			showError(field,"Must contain at least one digit/lowercase letter");
		}
		return false;
	}*/
if($(field).value.length < 6) {
			showError(field,"Must be at least six characters long");
return false;	
		}
else
return true;	

}

function extension(str_filename){
	var i = str_filename.length;
	var slicer = String(slicer)
	var ext = String('')
	do{ 
		slicer = str_filename.slice(i-1,i);
		ext = slicer+ext
		i--
	} 
	while(slicer != '.' && i > 1)
	
	ext = ext.toLowerCase();
	return(ext);
}


function clearErrorDate(){
	if(!$("birthday_month").present())
		$("birthday_month").addClassName("error");
	else
		$("birthday_month").removeClassName("error");
	if(!$("birthday_day").present())
		$("birthday_day").addClassName("error");
	else
		$("birthday_day").removeClassName("error");
	if(!$("birthday_year").present())
		$("birthday_year").addClassName("error");
	else
		$("birthday_year").removeClassName("error");
	if(($("birthday_year").present())&&($("birthday_day").present())&&($("birthday_month").present())){
		$("birthday_span").removeClassName("error");
		$("birthday_labelmsg").update("");
	}
	if((!$("birthday_year").present())&&(!$("birthday_day").present())&&(!$("birthday_month").present())){
		$("birthday_span").removeClassName("error");
		$("birthday_month").removeClassName("error");
		$("birthday_day").removeClassName("error");
		$("birthday_year").removeClassName("error");
		$("birthday_labelmsg").update("");
	}
}

function showErrorDate(field,msg){
	if(!$("birthday_month").present())
		$("birthday_month").addClassName("error");
	if(!$("birthday_day").present())
		$("birthday_day").addClassName("error");
	if(!$("birthday_year").present())
		$("birthday_year").addClassName("error");
	$("birthday_span").addClassName("error");
	$("birthday_labelmsg").update(msg);
}

function showError(field,msg){
	$(field).addClassName("error");
	$(field+"_span").addClassName("error");
	$(field+"_labelmsg").update(msg);
	}
	
function clearError(field){
	$(field).removeClassName("error");
	$(field+"_span").removeClassName("error");
	$(field+"_labelmsg").update("");
}

function clearError2(field){
	$(field).removeClassName("error");
	$(field+"_labelmsg").update("");
}

function checkReq(){
	for(i=0,error=false;i<arr_reqFields.length;i++){
		if(!$(arr_reqFields[i]).present()){			
			showError(arr_reqFields[i],"Field required.");
			error=true;	
		}
		else{
			clearError(arr_reqFields[i])
			}
	}
	return error;
}

function resfresh_captcha(type){
	$("img_captcha").src="web/captcha.php?type="+type+"&ramdon="+(Math.random() * 100000) ;
}

function checkContact(){
	arr_reqFields=Array("name","email","captcha");
	
	error=checkReq();
	
	if(($("email").present())&&(!esEmail($("email").value))){
		showError("email","Invalid E-mail address.")
		error=true;
	}
	
	if(!$("message").present()){
		$("message").addClassName("error");
		$("message_labelmsg").update("Field required.");
	}
	
	if(!error){
		var url = 'web/send_contact.php';		
		var pars = $("form_contact").serialize();
		
		function checkComplete(dataResponse){
			retorno = dataResponse.responseText.evalJSON();
			if(retorno.returnValue){				
				$("msgForgot").hide();
				$("fieldsContact").hide();
				$('btn_submit').hide();
				$("msgSended").appear();
				}		
			else{
				$(retorno.fieldError).addClassName("error");
				$(retorno.fieldError+"_span").addClassName("error");
				if(retorno.fieldError=="captcha")
					$(retorno.fieldError+"_labelmsg").update("Invalid code");

			}
				
		}
		
		function errFunc(){
			location.href="error.php";
		}
		
		new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
		
	}
}			

//****************************************SIGNUP
function checkSignup(){	
	arr_reqFields=Array("email","password","repassword","name","gender","captcha");
	
	error=checkReq();
	
	if($("birthday_month").present()||$("birthday_day").present()||$("birthday_year").present()){
		if(!Check_date($("birthday_month").value+"/"+$("birthday_day").value+"/"+$("birthday_year").value)){
			showErrorDate("birthday","Invalid date.");
			error=true;
		}
	}
		
	if(($("email").present())&&(!esEmail($("email").value))){
		showError("email","Invalid E-mail address.")
		error=true;
	}
	if(($("password").present())&&(!esPassword("password"))){
		error=true;
	}
	if(($("repassword").present())&&(!esPassword("repassword"))){
		error=true;
	}
	
	if(($("password").present())&&($("repassword").present())&&($("password").value!=$("repassword").value)){
		showError("repassword","Please verify your password again.")
		error=true;
		}
	
	if(!error)
		checkCaptcha_signup()		
}

function checkCaptcha_signup(){
	var url = 'web/check_captcha.php';
	var pars = 'type=signup&captcha='+$("captcha").value;

	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:handlerFunc, onFailure:errFunc});
	
	function handlerFunc(dataResponse){
		retorno = dataResponse.responseText.evalJSON();		
		if(retorno.returnValue)
			checkDuplicate_signup();
		else{
			$("captcha").addClassName("error");
			$("captcha_span").addClassName("error");
			$("captcha_labelmsg").update("Invalid code");
			}
	}
	
	function errFunc(){
		location.href="error.php";
	}
}

function checkDuplicate_signup(){
	var url = 'web/save_user.php';
	var pars = 'action=C&email='+$("email").value;

	function checkComplete(dataResponse){
		var retorno = dataResponse.responseText.evalJSON();
		if(retorno.returnValue){
			saveSignup();
			}
		else{
			$("email").addClassName("error");
			$("email_span").addClassName("error");
			$("email_labelmsg").update("Email is already in our system.");
			}
	}
	
	function errFunc(){
		location.href="error.php";
	}
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});
}

function saveSignup(){
	var url = 'web/save_user.php';
	var pars = "action=A&"+$("form_join").serialize();

	$("msgProcessing").update("Saving...");
	$("btn_save").hide();
		
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:saveComplete, onFailure:errFunc});										
	
	function saveComplete(dataResponse){
		var retorno = dataResponse.responseText.evalJSON();
		if(retorno.returnValue){
			if($("platformId").value==""){
				pending=Cookie.get("pending");
				if(pending)
					recoverPlayer();
				else
					location.href="signup_ok.php";
			}
			else
				insertProfile(retorno.userId)
		}
		else{
			location.href="error.php";
		}
	}
	
	function errFunc(){
		location.href="error.php";
	}
}

//****************************************LOGIN
var Cookie = {
  set: function(name, value, daysToExpire) {
    var expire = '';
    if (daysToExpire != undefined) {
      var d = new Date();
      d.setTime(d.getTime() + (86400000 * parseFloat(daysToExpire)));
      expire = '; expires=' + d.toGMTString();
    }
    return (document.cookie = escape(name) + '=' + escape(value || '') + expire);
  },
  get: function(name) {
    var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + escape(name) + '=([^;\\s]*)'));
    return (cookie ? unescape(cookie[2]) : null);
  },
  erase: function(name) {
    var cookie = Cookie.get(name) || true;
    Cookie.set(name, '', -1);
    return cookie;
  },
  accept: function() {
    if (typeof navigator.cookieEnabled == 'boolean') {
      return navigator.cookieEnabled;
    }
    Cookie.set('_test', '1');
    return (Cookie.erase('_test') === '1');
  }
};

function remenberMe(){
	if(!$("rememberme").checked){
		$("email").value="";
		$("password").value="";
		$("email").focus();
		}
	}
	
function checkLogin(){
	arr_reqFields=Array("email","password");
	
	error=checkReq();
	
	if(($("email").present())&&(!esEmail($("email").value))){
		showError("email","Invalid E-mail address.")
		error=true;
	}
	
	var url = 'web/check_login.php';
	var rememberme="false";
	if($("rememberme").checked)
		rememberme="true";
	var pars = 'email='+$("email").value+"&password="+$("password").value+"&rememberme="+rememberme;
		
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
	
	function checkComplete(dataResponse){		
		retorno = dataResponse.responseText.evalJSON();
		if(retorno.returnValue){
			pending=Cookie.get("pending");
			if(pending)
				recoverPlayer();
			else
				location.href="account_main.php";
			}
		else
			{
			$("password").addClassName("error");
			$("password_span").addClassName("error");
			$("password_labelmsg").update("Invalid login information");
			}
	}
	
	function errFunc(){
		location.href="error.php";
	}
}

//****************************************USERS
function checkForgot(){
	arr_reqFields=Array("email","captcha");
	
	error=checkReq();
	
	if(($("email").present())&&(!esEmail($("email").value))){
		showError("email","Invalid E-mail address.")
		error=true;
	}
	
	if(!error){
		var url = 'web/check_forgot.php';		
		var pars = 'email='+$("email").value+"&captcha="+$("captcha").value;
		
		function checkComplete(dataResponse){
			retorno = dataResponse.responseText.evalJSON();
			if(retorno.returnValue){				
				$("msgForgot").hide();
				$("fieldsForgot").hide();
				$('btn_submit').hide();
				$("msgSended").appear();
				}		
			else{
				$(retorno.fieldError).addClassName("error");
				$(retorno.fieldError+"_span").addClassName("error");
				if(retorno.fieldError=="email")
					$(retorno.fieldError+"_labelmsg").update("Email doesn't exist");
				else
					$(retorno.fieldError+"_labelmsg").update("Invalid code");
			}
				
		}
		
		function errFunc(){
			location.href="error.php";
		}
		
		new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
		
	}
}

function checkUpdateProfile(){
	arr_reqFields=Array("name","gender");
	
	error=checkReq();
	
	/*if(!$("birthday_month").present()||!$("birthday_day").present()||!$("birthday_year").present()){
		showErrorDate("birthday","Fields required.");
		error=true;
	}
	else{
		if(!Check_date($("birthday_month").value+"/"+$("birthday_day").value+"/"+$("birthday_year").value))
			showErrorDate("birthday","Invalid date.");
		}*/
	if($("birthday_month").present()||$("birthday_day").present()||$("birthday_year").present()){
		if(!Check_date($("birthday_month").value+"/"+$("birthday_day").value+"/"+$("birthday_year").value)){
			showErrorDate("birthday","Invalid date.");
			error=true;
		}
	}
	
	if(!error){
		var url = 'web/save_user.php';		
		var pars = 'action=U&'+$("form_edinfo").serialize();
		
		$("msgProcessing").update("Updating...");
		$("btn_save").hide();
		
		function checkComplete(dataResponse){
			retorno = dataResponse.responseText.evalJSON();
			if(retorno.returnValue){
				$("msgProcessing").update("Profile Has Been Updated!");
				$("btn_save").show();
				}		
			else{
				showError("password0","Current password mismatch the stored password.")
			}
				
		}
		
		function errFunc(){
			location.href="error.php";
		}
		
		new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
		
	}
}

function checkUpdatePass(){
	arr_reqFields=Array("password0","password1","repassword");
	
	error=checkReq();	
	
	if(($("password1").present())&&(!esPassword("password1"))){
		error=true;
	}
	if(($("repassword").present())&&(!esPassword("repassword"))){
		error=true;
	}	
	if((!error)&&$("password1").value!=$("repassword").value){
		showError("password1","Password must match.");
		return false;
	}
	
	if(!error){
		var url = 'web/save_user.php';		
		var pars = 'action=P&password0='+$("password0").value+"&password="+$("password1").value+"&userId="+$("userId").value;
		
		function checkComplete(dataResponse){
			retorno = dataResponse.responseText.evalJSON();
			if(retorno.returnValue){
				$("password0").value="";
				$("password1").value="";
				$("repassword").value="";
				$("msgUpdatePass").show();
				}		
			else{
				showError("password0","Current password mismatch the stored password.")
			}
				
		}
		
		function errFunc(){
			location.href="error.php";
		}
		
		new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
		
	}
}

function checkChangeEmail(){
	arr_reqFields=Array("email1");
	
	error=checkReq();
	
	if(($("email1").present())&&(!esEmail($("email1").value))){
		showError("email1","Invalid E-mail address.")
		error=true;
	}
	
	if(!error){
		var url = 'web/save_user.php';		
		var pars = 'action=E&email='+$("email1").value+"&userId="+$("userId").value;
		
		function checkComplete(dataResponse){
			retorno = dataResponse.responseText.evalJSON();
			if(retorno.returnValue){				
				location.href="login.php?refresh=true";
				}		
			else{
				showError("email","E-mail address repetida.")
			}
				
		}
		
		function errFunc(){
			location.href="error.php";
		}
		
		new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
		
	}
}

//****************************************PLAYER
function recoverPlayer(){
		pending=Cookie.get("pending");	
		name=Cookie.get("name");	
		songs=Cookie.get("songs");	
		playerSel=Cookie.get("playerSel");	
		tmpFileId=Cookie.get("tmpFileId");			
		
		var url = 'web/save_player.php';		
		var pars = 'action=R&name=' + name + '&songs=' + songs + '&playerSel=' + playerSel + '&tmpFileId=' + tmpFileId + '&pending=true';

		function checkComplete(dataResponse){
			retorno = dataResponse.responseText.evalJSON();
			if(retorno.returnValue){
				location.href="show_code.php?playerId="+retorno.playerId;
				}		
			else{
				if(retorno.returnError=="nolog")
					location.href="login.php";
			}
				
		}
		
		function errFunc(){
			location.href="error.php";
		}
		
		new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
}

function checkSavePlayer(){
	arr_reqFields=Array("name");	
	error=checkReq();
	
	if(!error){
		var dvr = $$('div.rowPlayList');
			if(dvr.length==0){
				$("msgError").update("No song selected");
				return;
				}
	}
	
	if(!error){
		$("btn_save").hide();
		$("saveLoading").show();
		if($('myPlayer')!=undefined){
			if(!$("autoplay").checked)
				document.getElementById("myPlayer").setAutoplay(0);  
		}
			
		var url = 'web/save_player.php';		
		var pars = 'name=' + $("name").value + '&songs=' + dvr.length + '&' + $("form_options").serialize();

		function checkComplete(dataResponse){
			retorno = dataResponse.responseText.evalJSON();
			if(retorno.returnValue){
				$("playlistId").value = retorno.playlistId;
				$("playerId").value = retorno.playerId;
				if($("platformId").value=="")
					$("form_options").submit();
				else
					if($("action").value=="A")
						insertInstall();
					else
						updateInstall($("userId").value);
				}		
			else{
				if(retorno.returnError=="nolog"){
					if($("platformId").value=="")
						location.href="login.php";
					else
						showLogin_app();						
				}
			}
				
		}
		
		function errFunc(){
			location.href="error.php";
		}
		
		new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
		
	}
}

function checkSaveMusic(){
	arr_reqFields=Array("name");	
	error=checkReq();
	
	if(!error){
		var dvr = $$('div.rowPlayList');
			if(dvr.length==0){
				$("msgError").update("No song selected");
				return;
				}
	}
	
	if(!error){
		$("form_edplaylist").submit();
	}
}


function showBtnsEdAjax(id){
	hideBtnsEdAjax();	
	html="&nbsp;<a href=\"javascript:updateListname("+id+");\" title=\"Save\"><img src=\"images/site/ico_mini_tilde.png\"></a> <a href=\"javascript:hideBtnsEdAjax();\" title=\"Cancel\"><img src=\"images/site/ico_mini_x.png\"></a>";	
	$("btnEdAj"+id).update(html).appear();
	}

function hideBtnsEdAjax(){
	var dvr = $$('span.btnsEdAj');
		for(i=0;i<dvr.length;i++){	
			dvr[i].hide();
		}
	}
	
function updateListname(id){
	if(!$("name"+id).present()){
		return false;
		}
	
	function checkComplete(dataResponse){
		retorno = dataResponse.responseText.evalJSON();
		if(retorno.returnValue){
			$("btnEdAj"+id).update("Updated").appear();
			}		
		else{
			location.href="error.php";
		}
			
	}
	
	function errFunc(){
		location.href="error.php";
	}
	
	$("btnEdAj"+id).value = "Saving...";
	
	var url = 'web/save_playlist.php';		
	var pars = 'action=N&name=' + $("name"+id).value + "&playerId=" + id;
	
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
		
}


function saveStar(event) {
  id=event.memo.identity.substr(11);
  section=event.memo.identity.substr(8,3);
  new Ajax.Request('web/save_star.php', {
    parameters: "rate=" + event.memo.average + "&playerId=" + id,
    onComplete: onSaveStar}
  );
  
  function onSaveStar(dataResponse){
	  retorno = dataResponse.responseText.evalJSON();
	  if(!retorno.returnValue)
	  	location.href="error.php";
	  else{
	   	 $("average_"+section+id).show();
		 $("rate_"+section+id).update(retorno.rate);
		 $("votes_"+section+id).update(retorno.votes);
	  }
  }
  
}

//****************************************APPS
function installApp(playerId,platformId,profile){	

	var url = 'web/save_install.php';		
	var pars = 'action=A&platformId=' + platformId + '&profile=' + profile + '&playerId=' + playerId;

	function checkComplete(dataResponse){
		retorno = dataResponse.responseText.evalJSON();
		if(retorno.returnValue){
			switch(platformId){
				case 1:{ //myspace
					if(profile==0)
						$("form_code").action="http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=114625";						
					else
						$("form_code").action="http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=114625&appParams={\"mode\":\"install\"}";					
					break;
					}
				case 2:{ //facebook
					$("form_code").action="http://apps.new.facebook.com/flashymp-three/index.php?mode=install";
					break;
					}
				case 3:{ //friendster
					$("form_code").action="http://widgets.friendster.com/4508dc2a0e0d093ae5957d23f941dfde&appParams={\"mode\":\"install\"}";
					break;
					}
				case 4:{ //hi5
					$("form_code").action="http://116848798.sandbox.hi5.com/friend/apps/entry/www.flashymp3.com/apps/hi5/application.xml?appParams={\"mode\":\"install\"}";
					break;
					}
				}
				$("form_code").submit();
			}		
		else{
			location.href="error.php";
		}			
	}
	
	function errFunc(){
		location.href="error.php";
	}
	
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});	
}

function checkLoginApp(){
	arr_reqFields=Array("email","password");
	
	error=checkReq();
	
	if(($("email").present())&&(!esEmail($("email").value))){
		showError("email","Invalid E-mail address.")
		error=true;
	}
	
	var url = 'apps/check_login.php';
	var pars = 'email='+$("email").value+"&password="+$("password").value+"&rememberme=0";
		
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
	
	function checkComplete(dataResponse){		
		retorno = dataResponse.responseText.evalJSON();
		if(retorno.returnValue){
			insertProfile(retorno.userId);
			}
		else
			{
			$("password").addClassName("error");
			$("password_span").addClassName("error");
			$("password_labelmsg").update("Invalid login information");
			}
	}
	
	function errFunc(){
		location.href="error.php";
	}
}

function insertProfile(userId){
	var url = 'apps/save_profile.php';
	var pars = 'platformId='+$("platformId").value+"&profile="+$("profile").value+"&userId="+userId;
		
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
	
	function checkComplete(dataResponse){		
		retorno = dataResponse.responseText.evalJSON();
		if(retorno.returnValue){
			updateInstall(userId);
			}
		else{
			location.href="error.php";
			}
	}
	
	function errFunc(){
		location.href="error.php";
	}
}

function updateInstall(userId){
	var url = 'apps/update_install.php';
	var pars = 'platformId='+$("platformId").value+"&profile="+$("profile").value+"&userId="+userId;
		
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
	
	function checkComplete(dataResponse){		
		retorno = dataResponse.responseText;
		if(retorno!="false"){
			if($("platformId").value==2)
					redirect_ok();
			else
				$("mainContent").update(retorno);
			}
	}
	
	function errFunc(){
		location.href="error.php";
	}
}

function insertInstall(){
	var url = 'apps/insert_install.php';
	var pars = 'platformId='+$("platformId").value+"&profile="+$("profile").value+"&playerId="+$("playerId").value;
		
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
	
	function checkComplete(dataResponse){		
		retorno = dataResponse.responseText;
		if(retorno!="false"){
			if($("platformId").value==2)
					redirect_ok();
			else
				$("mainContent").update(retorno);
			}
	}
	
	function errFunc(){
		location.href="error.php";
	}
}


function showForgot_App(){
	var url = 'apps/show_forgot.php';
	var pars = 'platformId='+$("platformId").value+"&profile="+$("profile").value;
	
	new Ajax.Request(url, {method:'post', postBody:pars,onSuccess:checkComplete, onFailure:errFunc});										
	
	function checkComplete(dataResponse){		
		retorno = dataResponse.responseText;
		if(retorno!="false"){
			$("mainContent").update(retorno);
			}
	}
	
	function errFunc(){
		location.href="error.php";
	}
}

function showSignup_App(){
	var url = 'apps/show_signup.php';
	var pars = 'platformId='+$("platformId").value+"&profile="+$("profile").value;
		
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});									
	
	function checkComplete(dataResponse){		
		retorno = dataResponse.responseText;
		if(retorno!="false"){
			$("mainContent").update(retorno);
			}
	}
	
	function errFunc(){
		location.href="error.php";
	}
}

function showLogin_app(){
	var url = 'apps/show_login.php';
	var pars = 'platformId='+$("platformId").value+"&profile="+$("profile").value;
		
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});									
	
	function checkComplete(dataResponse){		
		retorno = dataResponse.responseText;
		if(retorno!="false"){
			$("mainContent").update(retorno);
			}
	}
	
	function errFunc(){
		location.href="error.php";
	}
}

function gotoProfile(platformId,profile){
		switch(platformId) {
			case 1:{
				top.location.href='http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&friendid='+profile;
				break;
				}
			case 2:{
				top.location.href="http://www.new.facebook.com/profile.php?id="+profile;
				break;
				}
			case 3:{
				top.location.href="http://profiles.friendster.com/user.php";
				break;
				}
			case 4:{
				top.location.href="http://sandbox.hi5.com/friend/profile/displayProfile.do?userid"+profile;
				break;
				}
		}
}

function showCustomize(platformId,profile){
		switch(platformId) {
			case "1":
			case 1:{
				top.location.href='http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=114625&appvers=dev';
				break;
				}
			case "2":
			case 2:{
				top.location.href="http://apps.new.facebook.com/flashymp-three/index.php";
				break;
				}
			case "3":
			case 3:{
				location.href="index_friendster.php?profile="+profile;
				break;
				}
			case "4":
			case 4:{
				location.href="index_hi5.php?profile="+profile;
				}
		}
}

function skip_login(){
	var url = 'apps/save_profile.php';
	var pars = 'platformId='+$("platformId").value+"&profile="+$("profile").value+"&userId=1";
		
	new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});										
	
	function checkComplete(dataResponse){		
		retorno = dataResponse.responseText.evalJSON();
		if(retorno.returnValue){
			showCustomize(retorno.platformId,retorno.profile);
			}
		else{
			location.href="error.php";
			}
	}

	function errFunc(){
		location.href="error.php";
	}
}

function redirect_ok(){
	top.location.href="http://apps.new.facebook.com/flashymp-three/update_ok.php";
	}