function function_exists( function_name ) 
{
	if (typeof function_name == 'string')
	{
		return (typeof window[function_name] == 'function');
	} 
	else
	{
		return (function_name instanceof Function);
	}
}

if (!function_exists('btoa')) 
{
	function btoa( data ) 
	{
		var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
		var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';

		do { // pack three octets into four hexets
			o1 = data.charCodeAt(i++);
			o2 = data.charCodeAt(i++);
			o3 = data.charCodeAt(i++);

			bits = o1<<16 | o2<<8 | o3;

			h1 = bits>>18 & 0x3f;
			h2 = bits>>12 & 0x3f;
			h3 = bits>>6 & 0x3f;
			h4 = bits & 0x3f;

			// use hexets to index into b64, and append result to encoded string
			enc += b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
		} while (i < data.length);

		switch( data.length % 3 )
		{
			case 1:
			enc = enc.slice(0, -2) + '==';
			break;
			case 2:
			enc = enc.slice(0, -1) + '=';
			break;
		}

		return enc;
	}
}

if (!function_exists('atob')) 
{
	function atob( data ) 
	{
		var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
		var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';

		do {  // unpack four hexets into three octets using index points in b64
			h1 = b64.indexOf(data.charAt(i++));
			h2 = b64.indexOf(data.charAt(i++));
			h3 = b64.indexOf(data.charAt(i++));
			h4 = b64.indexOf(data.charAt(i++));

			bits = h1<<18 | h2<<12 | h3<<6 | h4;

			o1 = bits>>16 & 0xff;
			o2 = bits>>8 & 0xff;
			o3 = bits & 0xff;

			if (h3 == 64)      enc += String.fromCharCode(o1);
			else if (h4 == 64) enc += String.fromCharCode(o1, o2);
			else               enc += String.fromCharCode(o1, o2, o3);
		} while (i < data.length);

		return enc;
	}
}

function is_email(address) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   if(reg.test(address) == false) {
      return false;
   }
   
   return true;
}

function is_password(password)
{
	var reg = /[^A-Za-z0-9]/;
	//alert(reg.test(password));
	if(reg.test(password) == true) {
      return false;
   }
   
   return true;
}

$(document).ready(function() {
	$("form[name='login_form']").submit(function() {
	
		var email		= $('#email').val();
		var password	= $('#password').val();
		
		$('.error').text('');
		$('.notice').text('');
		
		if( is_email(email) == false)
		{
			$('#js_error').text(' «'+TERMS_WRONG_EMAIL+'»');
			$('#email').focus();
			return false;
		}
		if( password.length < 5 || password.length > 30 || !is_password(password))
		{
			$('#js_error').text(' «'+TERMS_WRONG_PASS_LENGTH+'»');
			$('#password').focus();
			return false;
		}
		
		return true;
	});
	
	
	$("form[name='lost_pass_form']").submit(function() {
	
		var email		= $('#email').val();
		
		$('.error').text('');
		$('.notice').text('');
		
		if( is_email(email) == false)
		{
			$('#js_error').text(' «'+TERMS_WRONG_EMAIL+'»');
			$('#email').focus();
			return false;
		}
		return true;
	});
	
	
	$("form[name='register_form']").submit(function() {
	
		var first_name	= $('#first_name').val();
		var last_name	= $('#last_name').val();
		var email		= $('#email').val();
		var password	= $('#password').val();
		var password_c	= $('#password_c').val();
		
		$('.error').text('');
		$('.notice').text('');
		
		if(first_name.trim()=='' || last_name.trim()=='')
		{
			$('#js_error').text(' «'+TERMS_NAME_ERROR+'»');
			$('#first_name').focus();
			return false;
		}		
		if( is_email(email) == false)
		{
			$('#js_error').text(' «'+TERMS_WRONG_EMAIL+'»');
			$('#email').focus();
			return false;
		}
		if( password.length < 5 || password.length > 30 || !is_password(password))
		{
			$('#js_error').text(' «'+TERMS_WRONG_PASS_LENGTH+'»');
			$('#password').focus();
			return false;
		}
		if(password!=password_c)
		{
			$('#js_error').text(' «'+TERMS_PASS_MISMATCH+'»');
			$('#password_c').focus();
			return false;
		}
		
		return true;
	});
	
	
	$("form[name='change_pass']").submit(function() {
	
		var old_password= $('#old_password').val();
		var password	= $('#password').val();
		var password_c	= $('#password_c').val();
		
		$('.error').text('');
		$('.notice').text('');
		
		if( old_password.length < 5 || old_password.length > 30 || !is_password(old_password))
		{
			$('#js_error').text(' «'+TERMS_WRONG_PASS_LENGTH+'»');
			$('#old_password').focus();
			return false;
		}
		if( password.length < 5 || password.length > 30 || !is_password(password))
		{
			$('#js_error').text(' «'+TERMS_WRONG_PASS_LENGTH+'»');
			$('#password').focus();
			return false;
		}
		if(password!=password_c)
		{
			$('#js_error').text(' «'+TERMS_PASS_MISMATCH+'»');
			$('#password_c').focus();
			return false;
		}
		
		return true;
	});
	
	
	$("form[name='edit_user_data']").submit(function() {
	
		var first_name		= $('#first_name').val();
		var last_name		= $('#last_name').val();
		var user_tel		= $('#user_tel').val();
		var user_address	= $('#user_address').val();
		var user_post_num	= $('#user_post_num').val();
		var user_city		= $('#user_city').val();
		var user_state		= $('#user_state').val();
		
		$('.error').text('');
		$('.notice').text('');
		
		if(first_name.length<2 || last_name.length<2 
			|| user_tel.length<6 || user_tel.length>30 
			|| user_address.length<1 || user_address.length>255
			|| user_post_num.length<4 || user_post_num.length>10
			|| user_city.length<2 || user_city.length>100
			|| user_state.length!=2)
		{
			$('#js_error').text(' «'+TERMS_REQUIRED_FIELDS+'»');
			return false;
		}
		return true;
	});
});

function doAlert(al)
{
	if(al=='start')
	{
		$('#overlay').css('display', 'block');
	}
	if(al=='stop')
	{
		$('#overlay').css('display', 'none');
	}
}

function deletePhoto(photo_id, lang_mark)
{
	$('.error').text('');
	if(confirm(TERMS_PHOTO_DELETE_COMFIRM))
	{
		$.post("engine.php", { action: "DELETE_PHOTO", photo_id: photo_id},
		  function(data){
		    if(data=="OK")
		    {
		    	$('#photo_'+photo_id).hide("slow");
				$('#photo_'+photo_id).empty();
		    }
		    else if(data=="PHOTO_IN_CART")
		    {
		    	$('html, body').animate({scrollTop:0}, 'slow');
		    	$('#js_error').text(' «'+TERMS_PHOTO_IN_CART+'»');
		    }
		    else if(data=="PHOTO_IN_PAST_ORDERS")
		    {
		    	$('html, body').animate({scrollTop:0}, 'slow');
		    	$('#js_error').text(' «'+TERMS_PHOTO_IN_PAST_ORDERS+'»');
		    }
		    else if(data=="RELOAD")
		    {
		    	window.location = 'control_panel.php?lang='+lang_mark+'&show=my_photos';
		    }
		    else  window.location.reload();
		  });
	}
}
