String.prototype.hasText=function(){
		return this.replace(/^\s+|\s+$/g, '').length >0;
}


String.prototype.isEmail=function(){
		var regex = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		return regex.test(this);	   		
}

	
	
	function get(what)
	{
		if(what=="screenshots")
		{
			new Ajax.Updater('ContentDiv', 'screenshots.html', {
				  method: 'get',
  				parameters: { lang: lang },
  				onSuccess: function(transport) {
  					getScreenDisplayer();  						
  				},
  				onComplete:getCarousel
  			});
		
			
			}
		else
		{
			var url= "about.php";
			switch(what)
			{
				case 'about':
					url= "about.php";
					break;
				
				case 'goodies':
					url= "goodies.php";
					break;
			case 'ranking':
					url= "ranking.php";
				break;
			case 'default':
					url= "about.php";
				break;
			}
			
			
			new Ajax.Updater('ContentDiv', url, {
				method: 'get',
  				parameters: { lang: lang }
			});
			
			
		}
	}

	

	
	function getGame(lng)
	{
		switch(lng)
		{
			case 'es':
			var dl_link= "https://verified.gameloft.com/juegos-para-movil/wonder-blocks/buy.html?wc=es";
			break;
		
			case 'fr':
			var dl_link= "https://verified.gameloft.com/jeux-mobile/wonder-blocks/buy.html?wc=fr";
			break;
		
			case 'it':
			var dl_link= "https://verified.gameloft.com/giochi-per-cellulare/wonder-blocks/buy.html?wc=it";
			break;
		
			case 'de':
			var dl_link= "https://verified.gameloft.com/handyspiele/wonder-blocks/buy.html?wc=de";
			break;
		
			case 'uk':
			var dl_link= "https://verified.gameloft.com/mobile-games/wonder-blocks/buy.html?wc=co.uk";
			break;
			default:
			var dl_link= "https://verified.gameloft.com/mobile-games/wonder-blocks/buy.html?wc=documents";
			break;
		}
		window.location = dl_link;
	}
	
	function checkEmail(stdin)
	{
		
	   	if(!$(stdin.id).value.isEmail()&& !$(stdin.id).value.empty())
	   	{
	   		
	   		$(stdin.id).value=invalid_email;
	   		$(stdin.id).activate();
	   		
	   		 
	   	} 	
	   	return true;
	}	
	
	
	function ValidateRecommendationForm()
	{
	
		var phone=$('challengerphone');
		var f1= $('friend1');
		var f2= $('friend2');
		var f3= $('friend3');
		var playflag=false;
		var emailFlag=false;
		var phone=$('challengerphone');
		
		
		
		
		friends.f1='';
		friends.f2='';
		friends.f3='';
		
		
		/*
		 * if email field has text content and is a valid email address
		 */
		if($('friend1').value.hasText())		
		{
			if( $('friend1').value.isEmail())
			{
				if($('friend1').value==$('friend2').value||$('friend1').value==$('friend3').value)
				{
					emailFlag=true;
					 $('friend1').value='';
					 
				}	
							
			}
			else
			{
				$('friend1').value=invalid_email;	
				return $('friend1').activate();
			}
			
		}
		
		if($('friend2').value.hasText())		
		{
			if( $('friend2').value.isEmail())
			{
				if($('friend2').value==$('friend1').value||$('friend2').value==$('friend3').value)
				{
					emailFlag=true;
					$('friend2').value='';
				}				
			}
			else
			{
				$('friend2').value=invalid_email;	
				return $('friend2').activate();
			}
			
		}
		
		
		if($('friend3').value.hasText())		
		{
			if( $('friend3').value.isEmail())
			{
				if($('friend3').value==$('friend2').value||$('friend3').value==$('friend1').value)
				{
					emailFlag=true;
					$('friend3').value='';
				}
				
			}
			else
			{
				$('friend3').value=invalid_email;	
				return $('friend3').activate();
			}
			
		}
		

		if(emailFlag)
		{
			alert(removed_duplicates);
		}
		
		
		
		

		
		// if all three fields are blank 
		if(!$('friend1').value.hasText() &&!$('friend2').value.hasText() && !$('friend3').value.hasText() )
		{
			return alert(please_fill_at_least_one_mail);
		}
		
		
		//////////////////////////////////////////////////////////
		// we avoid to duplicate arguments                      //
		// if one element is blank , we pop it out of the array //
		var args= [$('friend1').value,$('friend2').value,$('friend3').value].reject(function(n) { return 0 == n.length;}).uniq() ;
		//////////////////////////////////////////////////////////
		
		
		var url='checkUsers.php';
		new Ajax.Request(url, {
				method: 'post',
				parameters:{
					lang: lang,
  					friendemails:args.join(","),
  					phone:phone.value,
  					msg:$('msg').value
  					
  					
  				},
  				onSuccess: function(transport) {
  					var resp = transport.responseText.evalJSON();
  					if(resp.error_code!="0")
  					{
						alert(resp.error_msg);
					}
				},	
				onComplete:function(){
						getRank(phone.value);
					}
  				});
			
			
			
		
		
		
	}
	
	

function friendSearch()
	{
		var url='usr_exists.php';
		
		new Ajax.Request(url, {
			method: 'get',
			parameters:{ 
  				lang: lang,
  				phone:$('friend').value
  			},
  			onSuccess: function(trans){
  					
  					var ob = trans.responseText.evalJSON();
					
					if(ob.err_code=="EMPTY_RESPONSE")
					{
						usrflag=false;
						$('friend').value=user_does_not_exists;
						$('friend').activate();
					}
					if(ob.err_code=="OK_RESPONSE")
					{
						
						usrflag=true;
					}
  				
  				},
			onComplete:friendsearchCallback
  				
  		});
		
	}
	
	function friendsearchCallback()
	{
		
		if(usrflag==true)
		{
			
			new Ajax.Updater('quiz2', 'ranking_user.php', {
						method: 'get',
  						parameters:{ 
  						lang: lang,
  						phone2: $('friend').value
  						}});	
			$('quiz2').show();
			
			
			usrflag=false;
		}		
	}
	
	function getRank(numbers)
	{
	
		new Ajax.Updater('ContentDiv', 'ranking_user.php', {
			method: 'get',
  			parameters:{ 
  				lang: lang,
  				phone: numbers
  				}});	
	}
	
	
	function getQuiz(numbers)
	{
		new Ajax.Updater('ContentDiv', 'quizz.php', {
			method: 'get',
  			parameters:{ 
  				lang: lang,
  				phone2: numbers
  				}});	
	}
	
	function getChallenge(numbers)
	{
		new Ajax.Updater('ContentDiv', 'challenge.php', {
			method: 'get',
  			parameters:{ 
  				lang: lang,
  				phone: numbers
  				}});	
	}
	
	
	
	
	





	function loadDemo()
	{
		 playflag=false;
		document.getElementById('playdemo').style['visibility']="hidden";	
		var so = new SWFObject("demo.swf", "mobile", "240", "320", "8", "#336699");
		so.addParam("quality", "high");
		so.addParam("wmode", "opaque");
		so.write("mobile2");
		
	}
	
	
	

	
	
	function endgame(score)
	{
		
		$('playdemo').hide();
		
		new Ajax.Request('del_cookie.php',{method: 'get'});
		
		
		if(typeof res.phone=="undefined")
		{
			new Ajax.Updater('ContentDiv', 'registration.php', {
				method: 'get',
  				parameters:{ 
  					lang: lang,
  					score:score
  				}
  			});
		}
		else
		{
			var url='post.php';
			new Ajax.Request(url, {
			
  				parameters:{ 
  					lang: lang,
  					score:score,
  					phone2:res.phone
  				},
  				onSuccess: function(transport) {
  					var obj = transport.responseText.evalJSON();
  					
					
					if (obj.error_code == "REG_OK_INSERT_BUT") 
					{
						/* already registered user use main registration form to update his score */
						
					}
					if (obj.error_code == "REG_OK_INSERT") 
					{
							/* all ok  */
					}
						
			
  				},
  				onComplete:function()
  				{
  					/* go to ranking_user */
  					new Ajax.Updater('ContentDiv', 'ranking_user.php', {
						method: 'get',
  						parameters:{ 
  						lang: lang,
  						phone:res.phone
  						}});	
  				}
  			});
		
		
			
			
		}
		
		
		/* we take out the demo and place the splash image */
		getScreenDisplayer();
			
	}


	
	function getScreenDisplayer()
	{
				
				randomName = String(parseInt(Math.random()*10000));
				var so = new SWFObject("phone_image.swf", "contenedor", "240", "320", "8", "#336699"); 
				so.addParam("quality", "high"); 
				so.addParam("scale", "exactfit"); 
				so.addParam("wmode", "transparent"); 
				so.addVariable("swfConnectionName", randomName); 
				so.addVariable("firstImage", "images/default/splash.gif");
				so.write("mobile2"); 

	}
	
		
	
	
		
		
	
	function getCarousel()
	{
		
		 	 
		var so = new SWFObject("images/"+lang2+"/screenshots.swf", "div_carousel1", "587", "408", "8", "#000000"); 
		so.addParam("scale", "noscale"); 
		so.addParam("quality", "high"); 
		so.addParam("wmode", "transparent"); 
		so.addVariable("swfConnectionName", randomName); 
		so.addVariable("targetXml", "screenshots_xml.php?lang="+lang2+"&id=1"); 
		so.addVariable("bgImage", "images/background_screenshots.jpg"); 
		so.addVariable("thumbWidth", "96"); 
		so.addVariable("thumbHeight", "65"); 
		so.addVariable("circleRadiusX", "140"); 
		so.addVariable("circleRadiusY", "15"); 
		so.addVariable("zFactor", "0.3"); 
		so.addVariable("speedFactor", "0.025"); 
		so.addVariable("reflectionAlpha", "25"); 
		so.write("div_carousel1"); 	
		
	}





    /**
     * registration class
     */
	
	
	/**
	* constructor
	*/
	reg = function()
	{
		this._init();
	}
	
	/**
	* initialization
	*/	
	reg.prototype._init=function()
	{
		
		this.email = $('email').value;
		this.name = $('name').value;
		this.phone = $('phone').value;
		this.country = $('country').value;
		this.score = $('score').value;
		
			
	}


	/**
	* validateEmail
	* returns true or false if email string is on valid  email format
	*/	
	reg.prototype.validateEmail=function()
	{
		
		return this.email.isEmail(); 
	}	



/**
	* constructor
	*/
	reg2 = function()
	{
		this._init();
	}
	
	/**
	* initialization
	*/	
	reg2.prototype._init=function()
	{
		this.phone2 = $('phone2').value;
		
	}


	function sendRegistration(scr)
	{
		 res = new reg;
		
		/* validate email */
		
		if (!res.validateEmail()) 
		{
			alert(invalid_email); 	
			$('email').activate();
			return false;
		}

		/* is name set and nonempty ?*/		
		if(!(res.name.hasText() ))
		{
			alert(invalid_name); 	
			$('name').activate();
				return false;
		}
		
		/* is phone set and nonempty ?*/		
		if(!(res.phone.hasText()))
		{
			alert(invalid_phone ); 	
			$('phone').activate();
				return false;
		}
		
		/*country */
		if(res.country==choose_country)
		{
			alert(invalid_country); 	
			$('country').activate();
			return false;
		}
		
		
		var url='post.php';
		  
		new Ajax.Request(url, {
			parameters:{ 
  				lang: lang,
  				score:scr,
  				name:res.name,
  				country: res.country,
  				phone: res.phone,
  				email:res.email
  			},
  			onSuccess: function(transport) {
  				var obj = transport.responseText.evalJSON();
  				
				
				if (obj.error_code == "REG_OK_INSERT_BUT") 
				{
					/* already registered user use main registration form to update his score */
					
				}
				if (obj.error_code == "REG_OK_INSERT") 
				{
						/* all ok  */
				}
					
		
  			},
  			onComplete:function()
  			{
  				/* go to ranking_user */
  				new Ajax.Updater('ContentDiv', 'ranking_user.php', {
					method: 'get',
  					parameters:{ 
  					lang: lang,
  					phone:res.phone
  					}});	
  			}
  		});
 	
		 
			
	}

function sendRegistration2(scr)
	{
		 res = new reg2;
		
		/* is phone set and nonempty ?*/		
		if(!(res.phone2.hasText()))
		{
			alert(invalid_phone ); 	
			$('phone2').activate();
				return false;
		}
		
		var url='post.php';
		 var logged=0;
		new Ajax.Request(url, {
			parameters:{ 
  				lang: lang,
  				score:scr,
  				phone2: res.phone2

  			},
  			onSuccess: function(transport) {
  				var obj = transport.responseText.evalJSON();
  				
				
				if (obj.error_code == "REG_OK_INSERT_BUT") 
				{
					/* already registered user use main registration form to update his score */
					logged=1;
					
				}
				if (obj.error_code == "REG_OK_INSERT") 
				{
						/* all ok  */
						logged=1;
				}
					
		
  			},
  			onComplete:function()
  			{
  				if(logged==1){
  				/* go to ranking_user */
  				new Ajax.Updater('ContentDiv', 'ranking_user.php', {
					method: 'get',
  					parameters:{ 
  					lang: lang,
  					phone:res.phone2
  					}});	
				}
				else
				{
					return alert(user_does_not_exists);	
				}
  			}
  		});
 	
		 
			
	}


	
	function doQuiz()
	{
		
		
		var quizObj = $('quizform').serialize(true);
		 
		if((typeof quizObj.purpose)=="undefined" ||(typeof quizObj.purpose2)=="undefined" ||(typeof quizObj.purpose3)=="undefined" )
		{
			return alert(please_complete_all_questions);
		}
		
		
		var url='post.php';
  		
  		new Ajax.Request(url, {
  			parameters:{ 
  				q1: quizObj.purpose,
  				q2: quizObj.purpose2,
  				q3: quizObj.purpose3,
  				phone2:$('quizphone').value
  			},
  					onSuccess: function(transport) {
  						var obj = transport.responseText.evalJSON();
  						
  						if (obj.error_code == "QUIZ_OK_INSERT") 
						{
							/* all ok  player doubles demo score */
							alert(perfect_quiz_grats)
						}
						else
						{
							/* quiz not perfect player gets pitty points */
							alert(quiz_grats)
						}
						
					},
  					onComplete:function()
  					{
  						/* go to ranking_user */
  						new Ajax.Updater('ContentDiv', 'ranking_user.php', {
							method: 'get',
  							parameters:{ 
  								lang: lang,
  								phone:$('quizphone').value
  							}});	
  					}
  				});	
			

		 
	}
