/* afs v.2 */

var short_submit = false;
var ajax_err = {};
var click_submit = false;

/***func**/
function control(elem)
{
    if(!elem) elem = 0;

    if(elem) click_submit = false;

    if( short_submit ) return true;

	if( elem != 0)
	{
	var spl = elem.split(':');
	elem = spl[0];
	}

    var errors = {};
    var errors_group = {};
    if(!check) return false;

    if(elem)
    {
	if(!check[elem]) return false;

	for(var key in check[elem]['proofs'])
	{
	    if( typeof(window[key])=='function')
	    {
		if(!eval(key+"('"+elem+"','"+check[elem]['proofs'][key]+"')"))
		{
		    var group_key = check[elem]['group'];
		    if( group_key )
		    {
			errors_group[elem] = key;
		    }
		    else
		    {
			errors[elem] = key;
		    }
		    break;
		}
		else
		{

		}
	    }
	    else
	    {
		alert(' not function '+key+'(key,param)');
	    }
	}

    }
    else
    {

    for(var clef in check)
    {
	for(var key in check[clef]['proofs'])
	{
	    if( typeof(window[key])=='function')
	    {
		if(!eval(key+"('"+clef+"','"+check[clef]['proofs'][key]+"')"))
		{
		    var group_key = check[clef]['group'];
		    if( group_key )
		    {
			errors_group[clef] = key;
 		    }
		    else
		    {
			errors[clef] = key;
		    }
		    break;
		}
		else
		{

		}
	    }
	    else
	    {
		alert(' not function '+key+'(key,param)');
	    }
	}
    }

    } //else

    var flag_group = is_empty_obj(errors_group);

    if( !flag_group )
    {

	for( var i in errors_group)
	{
	    errors[i] = errors_group[i];
	    break;
	}
    }

    if(elem)
    {

	if( errors[elem] )
	{
	    var de_path = check[elem]['defeat'];
	    for(var defeat_func in de_path)
	    {
		if( typeof(window[defeat_func])=='function')
		{
		    eval(defeat_func+"('"+elem+"','"+check[elem]['error_messages'][errors[elem]]+"','"+de_path[defeat_func]+"')");
		}

	    }
	}
	else if( (!check[elem]['group'] || (check[elem]['group'] && flag_group)) )
	{
	    var vic_path = check[elem]['victory'];
	    for(var victory_func in vic_path)
	    {
		if( typeof(window[victory_func])=='function')
		{
		    eval(victory_func+"('"+elem+"','"+vic_path[victory_func]+"')");
		}

	    }
	}

    }
    else
    {

    for(var key in check)
    {
	if( errors[key] )
	{
	    var de_path = check[key]['defeat'];
	    for(var defeat_func in de_path)
	    {
		if( typeof(window[defeat_func])=='function')
		{
		    eval(defeat_func+"('"+key+"','"+check[key]['error_messages'][errors[key]]+"','"+de_path[defeat_func]+"')");
		}

	    }
	}
	else if( (!check[key]['group'] || (check[key]['group'] && flag_group)) )
	{
	    var vic_path = check[key]['victory'];
	    for(var victory_func in vic_path)
	    {
		if( typeof(window[victory_func])=='function')
		{
		    eval(victory_func+"('"+key+"','"+vic_path[victory_func]+"')");
		}

	    }
	}
    }

    } //else

    if( is_empty_obj(errors) )
    {
	return true;
    }
    else
    {
	return false;
    }
}

function is_empty_obj(obj)
{
    for ( var i in obj ) return false;
    return true;
}
function isset(key,param)
{
    var elem_type = $('#'+key).attr('type');
    var elem_val  = $('#'+key).val();
    var not_default_val = false;

    if(elem_type!='checkbox')
    {
	var a_def = param.split(',');
	for(var kk in a_def)
	{
	    if( elem_val==a_def[kk]) { not_default_val=false; break; }
	    not_default_val=true;
	}

	if( elem_val && elem_val != 0 && not_default_val ) return true;
	return false;
    }
    else
    {
	if( $('#'+key+':checked').length>0 ) return true;
	return false;
    }
}

function trimmer(key,param)
{
var s = trim( $('#'+key).val() );
$('#'+key).val(s);
return true;
}

function valid_top_line(key,param)
{
$("#mark_sexuality_gender,#mark_frmLooking").removeClass("mark_error").addClass("mark_ok");

var b_day   = $('#frmDay').val();
var b_month = $('#frmMonth').val();
var b_year  = $('#frmYear').val();

if( b_day!=0 && b_month!=0 && b_year!=0 ) $("#mark_birthday").removeClass("mark_error").addClass("mark_ok");
return true;
}

function min(key,param)
{
    if( $('#'+key).val().length>=param )
    {
	return true;
    }
    else
    {
	return false;
    }
}
function max(key,param)
{
    if( $('#'+key).val().length<=param )
    {
	return true;
    }
    else
    {
	return false;
    }
}
function regexp(key,param)
{
    var str = $('#'+key).val();
    var reg = '^([a-zA-Z0-9_.\\-+])+@(([a-zA-Z0-9\\-])+\\.)+[a-zA-Z0-9]{2,4}$';
    if(str.match(reg))
    {
	return true;
    }
    else
    {
	return false;
    }
}
function all_date_isset(key,param)
{
    var b_day   = $('#frmDay').val();
    var b_month = $('#frmMonth').val();
    var b_year  = $('#frmYear').val();

    if( b_day!=0 && b_month!=0 && b_year!=0 ) return true;
    return false;
}
function regexp_screenname(key,param)
{
    var str = $('#'+key).val();
    var reg = '^([a-zA-Z0-9_/-]){3,20}$';
    if(str.match(reg))
    {
	return true;
    }
    else
    {
	return false;
    }
}

function adult(key,param){
    var b_day   = $('#frmDay').val();
    var b_month = $('#frmMonth').val();
    var b_year  = $('#frmYear').val();
    return check_for_adult(b_day, b_month, b_year);
}

function check_for_adult(b_day, b_month, b_year){
    if( b_day==0 || b_month==0 || b_year==0 ) return false;

    var d = new Date();
    var cur_year  = d.getFullYear();
    var cur_month = d.getMonth()+1;
    var cur_day   = d.getDate();

    var t_year = cur_year-b_year;
    if( t_year>=19 ) return true;
    if( t_year<18) return false;
    if( cur_month>b_month) return true;
    if( cur_month<b_month) return false;
    if( cur_day>=b_day ) return true;
    return false;
}

function red_adult(key,param)
{

    var b_day	= $('#frmDay').val();
    var b_month	= $('#frmMonth').val();
    var b_year	= $('#frmYear').val();

    if( b_day==0 || b_month==0 || b_year==0 ) return -1;

    var d = new Date();
    var cur_year	= d.getFullYear();
    var cur_month	= d.getMonth()+1;
    var cur_day		= d.getDate();

    var t_year = cur_year-b_year;
    if( t_year>=19 ) return true;
    if( t_year<18) return -2;
    if( cur_month>b_month) return true;
    if( cur_month<b_month) return -2;
    if( cur_day>=b_day ) return true;
    return -2;
}
function redline(key,message,param)
{
	$("#mark_"+key).removeClass("mark_ok").addClass("mark_error");
	if( key=='frmEmail' && gl_ajax_process['frmEmail'] ) message = '';
	$("#error_mes_"+key).html(message).removeClass("error_hidden").addClass("error_txt");

	//hide terms
	if( key=='screenname' && (typeof(g_auto_hide_terms) != 'undefined') )
    {
    	var cc = $('#error_mes_screenname.error_txt').text();
    	if( cc.length>5 ) { $('#agree').css({'visibility':'hidden'}) };
    }
}
function greenline(key,param)
{
	 $("#mark_"+key).removeClass("mark_error").addClass("mark_ok");
	 $("#error_mes_"+key).removeClass("error_txt").addClass("error_hidden");
}
function red_birthday(key,message,param)
{
    $("#mark_birthday").removeClass("mark_ok").addClass("mark_error");
    $("#error_mes_birthday").html(message).removeClass("error_hidden").addClass("error_txt");

}
function red_birthday_check(key,message,param)
{
    if( red_adult(1,2)== -2 )
    {
        $("#mark_birthday").removeClass("mark_ok").addClass("mark_error");
        $("#error_mes_birthday").html(message).removeClass("error_hidden").addClass("error_txt");
    }
}
function green_birthday(key,param)
{
    $("#mark_birthday").removeClass("mark_error").addClass("mark_ok");
    $("#error_mes_birthday").removeClass("error_txt").addClass("error_hidden");
}
function terms_bad(key,param)
{
    $("#mark_"+key).removeClass("error_hidden").addClass("terms_error");
}
function terms_ok(key,param)
{
    $("#mark_"+key).removeClass("terms_error").addClass("error_hidden");
}

/***func**/
function check_for_ajax(key,param)
{
    var result;
    var def_email_error = 'Your email address is incorrect.';

    if(!gl_ajax_process[key])
    {
        var s_elem = $("#"+key).val();
        var get_data = {};
        if (click_submit) get_data['type_checking'] = 'submit';
        get_data[key] = s_elem;

        $("#mark_"+key).removeClass("mark_error").removeClass("mark_txt").addClass("mark_ajax");

        gl_ajax_process[key] = true;

        $.get("/check_signup.php",
        get_data,
        function(data){
            if(data=='unique')
            {
                //check_errors(key);
                setTimeout(function(){
                    $("#mark_"+key).removeClass("mark_error").removeClass("mark_ajax").addClass("mark_ok");
                    $("#error_mes_"+key).removeClass("error_txt").addClass("error_hidden");
                    update_loc_results_doc();
                },1);

                if( key=='screenname' && ( typeof(g_auto_hide_terms) != 'undefined') )
                {
                    var cc = $('#error_mes_screenname.error_txt').text();
                    if( cc.length<25 ) $('#agree').css({'visibility':'visible'});
                }

            	result = true;
            	//auto-submit
                setTimeout(function(){ if( click_submit && audit_full())  { short_submit=true; $('#reg-form').trigger('submit');} },100);
            }
            else
            {
            	setTimeout(function(){
                $("#mark_"+key).removeClass("mark_ok").removeClass("mark_ajax").addClass("mark_error");
                if(key=='frmEmail')
                {
                    if(check['frmEmail']['error_messages']['check_for_ajax'][data])
                    {
                        data = check['frmEmail']['error_messages']['check_for_ajax'][data];
                    }
                    else
                    {
                        data = def_email_error;
                    }
                }
                if( ( typeof(g_couple_screens) != 'undefined') && key=='screenname' && data.length>100)
                {
                    var part = data.replace('<br />','');
                    var screens = part.split(',');
                    data = screens[0]+','+screens[1]+','+screens[2];
                }

                $("#error_mes_"+key).html(data).removeClass("error_hidden").addClass("error_txt");
                if(key=='screenname')
                {
                    bind_screenname_variant();
                    var variantScreenname = $(".screenname_variant:first");
                    if(typeof(variantScreenname) != 'undefined') variantScreenname.focus();

                    if( typeof(g_auto_hide_terms) != 'undefined')
                    {
                        var cc = $('#error_mes_screenname.error_txt').text();
                        if( cc.length>25 ) { $('#agree').css({'visibility':'hidden'}) };
                    }
                }

                update_loc_results_doc();
                },1);
                result = false;
            }
        }
        ); //$.get
    }
    else
    {
        result = false;
    }

    setTimeout(function(){ gl_ajax_process[key] = false; },50);
    return result;
}
function check_errors(key)
{
    ajax_err[key] = 1;
}

function bind_screenname_variant()
{
    $("a.screenname_variant").click( function() {
	$('#screenname').attr('value', $(this).html()).trigger('blur');
	$('#error_mes_screenname').removeClass('error_txt'); 
	$('#error_mes_screenname').addClass('error_txt error_hidden');
	$('#mark_screenname').removeClass('mark_error'); 
	$('#mark_screenname').addClass('mark_ok');
    });
}

function update_loc_results_doc()
{
    top_loc = $("#location").offset().top;
    height_loc = $("#location").height();
    new_top = top_loc+height_loc+6;
    $("div.ac_results").css({"top":new_top});
}
function check_list_checkbox(key,param)
{
 var test = $("input[name^='frmLooking']:checked").size();
 if( (test != null) && (test>0) ) return true;
 return false;
}
function trim(str)
{
var res;
res = str.replace(/^\s+/, '');
res = res.replace(/\s+$/, '');
return res;
}
function audit_full()
{
    if(!gl_audit)
    {
        alert('Undefined \'gl_audit\'-array');
        return false;
    }

    var b = 0;
    var a_count = gl_audit.length;

    for(var key in gl_audit)
    {
	if( $('#'+gl_audit[key]).hasClass("mark_ok") )
	{
	    b = b +1;
	}
    }

    t = ( $('#terms:checked').length>0 ) ? 1 : 0;

    if( (a_count==b) && t ) return true;
    return false;
}