﻿/* helpers.js */
post = function(url, params, callback, type) {
	params = (params == "" ? "{}" : params)
	$.ajax({
		type: "POST",
		url: url,
		data: params,
		contentType: "application/json; charset=utf-8",
		dataType: type,
		success: callback
	});
}

serializer = function(form, fields) {
	var serialized = new Array();
	for (x in fields) {
		field = addslashes($(form + ' input[name=' + fields[x] + ']').val());
		if (field == null)
			field = addslashes($(form + ' select[name=' + fields[x] + ']').val());
		serialized.push("'" + fields[x] + "' : '" + field + "'");
	}
	return '{' + serialized.join(',') + '}';
}

function stripslashes(str) {
	str = str.replace(/\\'/g, '\'');
	str = str.replace(/\\"/g, '"');
	str = str.replace(/\\0/g, '\0');
	str = str.replace(/\\\\/g, '\\');
	return str;
}
function addslashes(str) {
	str = str.replace(/\\/g, '\\\\');
	str = str.replace(/\'/g, '\\\'');
	str = str.replace(/\"/g, '\\"');
	str = str.replace(/\0/g, '\\0');
	return str;
}

/* qtip_validation_helper.js */

var invalidFields = new Array();
var formName = "";

setErrorMessage = function(field, msg, form) {
	form = (form == null) ? formName : form;
	field = $(form + ' input[name=' + field + ']');
	invalidFields.push(field)

	$(field).qtip({
		content: msg,
		show: {
			ready: true
		},
		hide: { when: { event: 'focus'} },
		style: {
			border: {
				width: 2,
				radius: 5
			},
			textAlign: 'center',
			tip: true,
			name: 'cream'
		},
		position: {
			corner: {
				tooltip: 'leftMiddle',
				target: 'rightMiddle'
			}
		}
	});
	$(field).css('background-color', 'rgb(251, 247, 170)')
            .parent()
            .find('em')
            .html('');

}

setErrorMessages = function(messages, form) {
	for (m in messages)
		setErrorMessage(m, messages[m], form)
}

cleanValidationMessages = function() {
	while (invalidFields.length > 0) {
		field = invalidFields.shift()

		try { $(field).qtip("destroy") }
		catch (e) { /*do nothing*/ }

		$(field).css('background-color', 'white')
	}
}

/* login.js */
// todo: refatorar: colocar reflection

$(document).ready(function() {
    $('input').parent().find('span').change(function() { alert('Ahaaaa!') })
    $('#form_login').submit(formLoginSubmit)
    $('#form_signin').submit(formSigninSubmit)
    if($('#form_signin2 input[name=rg]').length==1)
        $('#form_signin2').submit(formSigninSubmit2PF)
    else
        $('#form_signin2').submit(formSigninSubmit2PJ)
});

formLoginSubmit = function() {
     var fields = ['email', 'senha']
     var serial = serializer('#form_login', fields)
     
    $('#img_continuar_login').hide();
    $('#img_loading_login').show();
    post('/login.aspx/LoginValidator', serial, functionLoginSubmitHandler, 'json');
    return false;
}

functionLoginSubmitHandler = function(data) {
    data = data.d;

    if (data.IsValid) {
        $('#form_login').unbind('submit', formLoginSubmit)
        $('#form_login').submit();
    }
    else {
        $('#img_continuar_login').show();
        $('#img_loading_login').hide();
        var m = data.Messages
        cleanValidationMessages()
        setErrorMessages(m,'#form_login')
    }
}

formSigninSubmit = function() {
    var fields = ['cgc', 'cep']
    var serial = serializer('#form_signin',fields)
    
    $('#img_continuar_signin').hide();
    $('#img_loading_signin').show();
    post('/login.aspx/Step1Validator', serial, formSigninSubmitHandler, 'json');
    return false;
}

formSigninSubmitHandler = function(data) {
    data = data.d;
    
    if (data.IsValid) {
        $('#form_signin').unbind('submit', formSigninSubmit)
        $('#form_signin').submit();
    }
    else {
        var m = data.Messages;
        cleanValidationMessages();
        setErrorMessages(m, '#form_signin')
        $('#img_continuar_signin').show();
        $('#img_loading_signin').hide();
    }
}

formSigninSubmit2PF = function() {
    var fields = ['nome', 'email', 'senha',
                  'endereco', 'numero', 'bairro',
                  'telefone1ddd', 'telefone1numero']
    var serial = serializer('#form_signin2', fields)

    $('#img_continuar_signin2').hide();
    $('#img_loading_signin2').show();
    post('/login.aspx/Step2ValidatorPF', serial, formSigninSubmit2PFHandler, 'json')
    return false;
}

formSigninSubmit2PFHandler = function(data) {
    data = data.d;
    if (data.IsValid)
        $('#form_signin2').unbind('submit', formSigninSubmit2PF).submit()
    else {
        var m = data.Messages;
        cleanValidationMessages();
        setErrorMessages(m, '#form_signin2')
        $('#img_continuar_signin2').show();
        $('#img_loading_signin2').hide();
    }
}

formSigninSubmit2PJ = function() {
    var fields = ['razao_social','nome','email',
                  'senha', 'endereco', 'numero',
                  'bairro', 'telefone1ddd', 'telefone1numero']
    var serial = serializer('#form_signin2', fields)
    $('#img_continuar_signin2').hide();
    $('#img_loading_signin2').show();
    post('/login.aspx/Step2ValidatorPJ', serial, formSigninSubmit2PJHandler, 'json')
    
    return false;
}

formSigninSubmit2PJHandler = function(data) {
    data = data.d
    
    if (data.IsValid)
        $('#form_signin2').unbind('submit', formSigninSubmit2PJ).submit()
    else {
        var m = data.Messages
        cleanValidationMessages()
        setErrorMessages(m, '#form_signin2')
        $('#img_continuar_signin2').show();
        $('#img_loading_signin2').hide();       
    }
}
