var C = {};

var S = {};
S.data = {
    birthday: '',
    name: '',
    pswd: '',
    email: '',
    validateCode: '',
    validateSN: '',
	inviter: ''
};
C.urlParams = {};
C.UrlSearchParse = function( url ){
	var pos = url.indexOf('?');
	if (pos > 0) {
		var params = url.substr(pos + 1);
		len = params.indexOf('#');
		if(len>0) params = params.substr(0, len);
		
		var kv_pairs = params.split("&");
		var kv = [];
		var l = kv_pairs.length;
		for(var i=0; i < l; i++){
			kv = kv_pairs[i].split('=');
			if(kv[0]) C.urlParams[kv[0]] = kv[1];
		}
	}
};
C.inputInviter = function(){
	C.UrlSearchParse(window.location.href);
	try{
		if(C.urlParams['inviter']){
			S.data.inviter =  C.urlParams['inviter'];
		}
	}catch(e){}
};
C.SetAPP = function(){
	setCookie('application', 'sss.promotion_page', '', '/', cookie_domain);
};

C.errTitle = function(err_id, msg){
	var obj = $('#' + err_id);
	var obj_icon = $('#' + err_id + '_chk');
    if (msg) {
		obj.attr("title", msg);
		obj_icon.removeClass("icon_accept");
		obj_icon.addClass("icon_cross");
    }
    else {
        obj.attr("title", '');
		obj_icon.removeClass("icon_cross");
		obj_icon.addClass("icon_accept");
    }
}

C.name = function(){
    var err_id = 'tr_passport';
    var nameValue = $('#txt_passportid').val();
    if (T.isPassportId(nameValue)) {
		if(S.lastCheckName != nameValue){
			C.errTitle(err_id);
		}
    }
    else {
        C.errTitle(err_id, getLang('passport_register_id_check_faild'));
        return;
    }
    S.data.name = nameValue;
    return true;
};
C.password = function(){
    var nameValue = $('#txt_passportid').val();
    var pswdValue = $('#txt_password').val();
    var err_id = 'tr_pswd';
    if (T.isPassword(pswdValue)) {
        C.errTitle(err_id);
    }
    else {
        C.errTitle(err_id, getLang('passport_register_pswd_check_faild'));
        return false;
    }
    if (pswdValue == nameValue) {
        C.errTitle(err_id, getLang('passport_register_pswd_equal_id'));
        return false;
    }
    return true;
};
C.confirmpassword = function(){
    var pswdValue = $('#txt_password').val();
    var confirmPswd = $('#txt_confirmpassword').val();
    var err_id = 'tr_pswd';
    var confirm_err_id = 'tr_pswd_cfm';
    
    if (T.isPassword(confirmPswd)) {
        C.errTitle(confirm_err_id);
    }
    else {
        C.errTitle(confirm_err_id, getLang('passport_register_pswd_check_faild'));
        return false;
    }
    if (pswdValue != confirmPswd) {
        C.errTitle(confirm_err_id, getLang('passport_register_confrimpswd_match_faild'));
        return false;
    }
    S.data.pswd = confirmPswd;
    return true;
};
C.email = function(){
    var emailValue = $('#txt_email').val();
    var err_id = 'tr_email';
    
    if (T.isEmail(emailValue)) {
        C.errTitle(err_id);
    }
    else {
        C.errTitle(err_id, getLang('passport_register_email_check_faild'));
        return false;
    }
    return true;
};
C.confirmemail = function(){
    var emailValue = $('#txt_email').val();
    var err_id = 'tr_email';
    var confirmEmail = $('#txt_confirmemail').val();
    var confirm_err_id = 'tr_email_cfm';
    
    if (T.isEmail(confirmEmail)) {
        C.errTitle(confirm_err_id);
    }
    else {
        C.errTitle(confirm_err_id, getLang('passport_register_email_check_faild'));
        return false;
    }
    if (emailValue != confirmEmail) {
        C.errTitle(confirm_err_id, getLang('passport_register_confirmemail_match_faild'));
        return false;
    }
    S.data.email = confirmEmail;
    return true;
}
C.validCode = function(){
    var codeValue = $('#txt_validatecode').val();
    var err_id = 'tr_valid_code';
    
    if (codeValue != '') {
        C.errTitle(err_id);
    }
    else {
        C.errTitle(err_id, getLang('passport_register_validcode_check_faild'));
        return false;
    }
    S.data.validateCode = codeValue;
    return true;
};
C.eula = function(){
    var eulaCheck = $('#cb_eula').attr('checked');
    var err_id = 'div_err_msg';
    if (eulaCheck) {
        T.error(err_id);
    }
    else {
        T.error(err_id, getLang('passport_register_eula_check_faild'));
        return false;
    }
    return true;
};


C.birthday = function(){
    var year = $('#ddl_year').val();
    var month = Math.ceil($('#ddl_month').val());
    var day = Math.ceil($('#ddl_day').val());
    var err_id = 'tr_birthday';
    if (year == 'Year') {
        C.errTitle(err_id, getLang('birthday_empty_year'));
        return false;
    }
    if (year.length < 4) {
        C.errTitle(err_id, getLang('birthday_year_number_less'));
        return false;
    }
    if (month == 0) {
        C.errTitle(err_id, getLang('birthday_empty_month'));
        return false;
    }
    if (day == 0) {
        C.errTitle(err_id, getLang('birthday_empty_day'));
        return false;
    }
    var monthName = 0;
    switch (month) {
        case 2:
            if (day > 28) {
                if (year % 4) {
                    C.errTitle(err_id, getLang('birthday_invalid_date'));
                    return false;
                }
                else 
                    if (day > 29) {
                        C.errTitle(err_id, getLang('birthday_invalid_date'));
                        return false;
                    }
            }
            break;
        case 4:
            monthName = 'April';
        case 6:
            if (!monthName) {
                monthName = 'June';
            }
        case 9:
            if (!monthName) {
                monthName = 'September';
            }
        case 11:
            if (!monthName) {
                monthName = 'November';
            }
            if (day > 30) {
                C.errTitle(err_id, getLang('birthday_invalid_date'));
                return false;
            }
            break;
    }
    if (year > 1995) {
    
        if (year < 2009) {
            var today = new Date();
            var tmp = new Date();
            tmp.setYear(year);
            tmp.setMonth(month - 1, day);
            var x = today.getTime();
            var y = tmp.getTime();
            if ((x - y) < (13 * 365 + 3) * 86400 * 1000) {
                C.errTitle(err_id, getLang('limit_age_13'));
                return false;
            }
        }
        else {
            C.errTitle(err_id, getLang('limit_age_13'));
            return false;
        }
    }else if(year < 1840){
        C.errTitle(err_id, getLang('limit_age_max'));
        return false;
	}
    
    S.data.birthday = year + '-' + month + '-' + day;
    C.errTitle(err_id);
	return true;
};

S.submitToggle = 0;
S.dataSubmit = function(err_id){
	if(S.submitToggle){
		C.errTitle(err_id, getLang('wait_for_registion_submit'));
		return;
	}
	S.submitToggle = 1;
	C.inputInviter();
	C.SetAPP();
    if ( C.birthday() &&
	C.name() &&
    C.confirmpassword() &&
    C.confirmemail() &&
    C.validCode() &&
    C.eula()) {
        if (S.data.birthday) {
			$('#reg_div_img_loading').show();
            $.ajax({
                type: "POST",
                url: ui_service + "ui_reg.php",
                dataType: 'json',
                data: S.data,
                timeout: 30000,
                success: function(json){
					S.submitToggle = 0;
					$('#reg_div_img_loading').hide();
                    if (json.code === RETURN_CODE.SUCCESS) {
						redirect("/ui_web/dragonica_events/SSS/register_success.html?email=" + S.data.email);
                    }
                    else {
                        T.error(err_id, json.msg);
						var p1 = json.msg.search('Validation Code');
						var p2 = json.msg.search('That email address');
						var p3 = json.msg.search('That Passport ID');
						if(p1 != -1){
							C.errTitle('tr_valid_code', json.msg);
						}else if(p2 != -1){
							C.errTitle('tr_email', json.msg);
						}else if(p3 != -1){
							S.lastCheckName = S.data.name;
							C.errTitle('tr_passport', json.msg);
						}
						
						S.freshImg();
                    }
                },
				error:function(){
					S.submitToggle = 0;
					$('#reg_div_img_loading').hide();
					T.error(err_id, getLang('http_request_faild'));
					S.freshImg();
				}
            });
        }
        else {
			S.submitToggle = 0;
            $('#div_reg').fadeOut('fast', function(){
                $('#div_birthday').fadeIn('fast');
            });
        }
    }else{
		S.submitToggle = 0;
	}
};
S.lastCheckName = '';
S.checkName = function(err_id, _this){
    if (_this) {
        _this.disabled = true;
    }
    if (C.name()) {
		$('#checkname_loading').show();
		S.lastCheckName = S.data.name;
		$.ajax({
			type: "POST",
			url: ui_service + "ui_checkname.php",
			dataType: 'json',
			data: {
				name: S.data.name
			},
			timeout: 30000,
			success: function(json){
				if (_this) {
					_this.disabled = false;
				}
				$('#checkname_loading').hide();
				if (json.code === RETURN_CODE.SUCCESS) {
					C.errTitle(err_id);
					S.lastCheckName = '';
				}else{
					C.errTitle(err_id, json.msg);
				}
			},
			error:function(){
				C.errTitle(err_id, getLang('http_request_faild'));
			}
		});
	}
	else {
		if (_this) {
			_this.disabled = false;
		}
	}
};
S.freshImg = function(){
	var challenge_code = T.GetChallengeCode();
	$('#img_validatecode').attr('src', ui_service + 'ui_get_valid_img.php?challenge=' + challenge_code);
	S.data.validateSN = challenge_code;
};
S.rollBanner = function( idx ){
	$('#s_cont_0').hide();
	$('#box_list > a').each(function(i){
		i = i+1;
		if(idx == i){
			this.className = 's_img_' + i + 'd';
			$('#s_cont_' + i).show();
		}else{
			this.className = 's_img_' + i;
			$('#s_cont_' + i).hide();
		}
	});
};