//######################
// COMMON SIGNUP
//######################
if(typeof changeArrow == 'undefined')
{
function changeArrow(focusLabel) {
    var f = document.getElementById('form_signup_index');
    for(var i=0; i<f.length; i++) {
        var label = document.getElementById(f.elements[i].id + '_label');
        if(!label) label = document.getElementById(f.elements[i].name + '_label');
        if(label) label.className = '';
    }
    document.getElementById(focusLabel + '_label').className = 'mtcArrowOver';
}
}

//######################
// HOME V AJAX
//######################

function homev_init()
{
    if($j.browser.msie) homev_remoteChecker.resetErrors('', true);
    myprofile_initEmptyInputMessage('my_birth_day');
    myprofile_initEmptyInputMessage('my_birth_month');
    myprofile_initEmptyInputMessage('my_birth_year');
    myprofile_initEmptyInputMessage('my_pseudo');
    myprofile_initEmptyInputMessage('my_password');
    myprofile_initEmptyInputMessage('my_email');
}

/**
 * input checker on signup
 */
var homev_ajaxurl = '/ajax/signup/check.php';
var homev_localChecker = 
{
    /**
     * check for input data
     * @param inputList Array of string
     * @return Array of string => boolean
     */
    run: function(inputList)
    {
        var outputList = new Array();
        var inputSize = inputList.length;
        for(var i=0; i<inputSize; i++)
        {
            var item = inputList[i];
            if(typeof this['check'+item] == 'function') 
            {
                outputList[item] = new Array(this['check'+item]());
            }
        }
        return outputList;
    },
    checkKvk: function()
    {
        var my_kvk_value = $j('#my_kvk').val();
        if(my_kvk_value == "")
        {
          my_kvk_value = $j('#my_gender').val() + $j('#my_search_gender').val();
        }
        if(my_kvk_value == "")
        {
            return false;
        }
        return true;
    },
    checkBirthdate: function()
    {
        var my_birth_day_value   = $j('#my_birth_day').val();
        var my_birth_month_value = $j('#my_birth_month').val();
        var my_birth_year_value  = $j('#my_birth_year').val();
        if(isNaN(my_birth_day_value) || my_birth_day_value < 1 || my_birth_day_value > 31)
        {
            return false;
        }
        if(isNaN(my_birth_month_value) || my_birth_month_value < 1 || my_birth_month_value > 12)
        {
            return false;
        }
        if(isNaN(my_birth_year_value) || my_birth_year_value.length != 4)
        {
            return false;
        }
        return true;
    },
    checkPseudo: function()
    {
        var my_pseudo_value = $j('#my_pseudo').val();
        if(my_pseudo_value.length < 4 || my_pseudo_value.length > 20)
        {
            return false;
        }
        /*if(my_pseudo_value.match(/^[a-zA-Z0-9_]+$/g))
        {
            return false;
        }*/
        return true;
    },
    checkPassword: function()
    {
        var my_password_value = $j('#my_password').val();
        if(my_password_value.length < 4 || my_password_value.length > 15)
        {
            return false;
        }
        return true;
    },
    checkEmail: function()
    {
        var my_email_value = $j('#my_email').val();
        if(!my_email_value.match(/^[a-zA-Z0-9_.]+@[a-zA-Z0-9_.]+\.[a-zA-Z0-9_.]+$/g))
        {
            return false;
        }
        return true;
    },
    checkGeo: function()
    {
        return true;
    },
    checkCgu: function()
    {
        return true;
    }
}

var homev_remoteChecker = 
{
    ajaxData: {},

    /**
     * check for input data remotely
     * @param array inputList     list of data to send
     * @param string              url for webservice
     * @param intialParams object to add data to the ajax request (pass {} for empty data)
     * @param string callback     function name. The function takes the xhr element as first argument
     */
    run: function(inputList, url, intialParams, callback)
    {
        this.ajaxData = intialParams;
        var inputSize = inputList.length;
        for(var i=0; i<inputSize; i++)
        {
            var item = inputList[i];
            if(typeof this['prepare'+item] == 'function') {
                this['prepare'+item]();
            }
        }
        $j.ajax({
            type: "POST",
            url:  url,
            data: this.ajaxData,
            dataType: "text",
            complete: callback
        });
    },
    
    showSpeed: "slow",
    hideSpeed: "normal",
    
    _closeErrorBox: function(jqueryElem)
    {
        jqueryElem.slideUp(this.hideSpeed);
    },
    
    _hideErrorBox: function(jqueryElem)
    {
        jqueryElem.hide();
    },
    
    _openErrorBox: function(jqueryElem)
    {
        jqueryElem.slideDown(this.showSpeed);
    },
    _showErrorBox: function(jqueryElem)
    {
        jqueryElem.show();
    },
    
    resetErrors: function(fieldName, quickAll)
    {
        var fieldNames = new Array('Kvk', 'Birthdate', 'Pseudo', 'Password', 'Email', 'Geo', 'Cgu');
        var fieldIds   = new Array('#err_my_kvk', '#err_my_birthdate', '#err_my_pseudo', '#err_my_password', '#err_my_email', '#err_my_geo', '#err_my_cgu');
        var fntiLength = fieldNames.length;
        for(var i=0; i<fntiLength ;i++)
        {
            var o = $j(fieldIds[i]);
            if(fieldName != fieldNames[i] && !quickAll)
            {
                this._closeErrorBox(o);
            }
            else if($j.trim(o.html()) == '')
            {
                this._hideErrorBox(o);
            }
        }
    },
    
    _showErrorClass: function(fieldName)
    {
       	$j('#'+fieldName).addClass('ultError');
       	$j('#'+fieldName+'_label').addClass('ultError');
    },
    _hideErrorClass: function(fieldName)
    {
       	$j('#'+fieldName).removeClass('ultError');
       	$j('#'+fieldName+'_label').removeClass('ultError');
    },

    _callbackCenter: function(xhr, fieldName)
    {
        this.resetErrors(fieldName, false);
        this['callback'+fieldName](xhr);
    },

    prepareKvk: function()
    {
    
        var my_kvk_value = '';
        if ($j('#my_kvk').length > 0)
        	my_kvk_value  = $j('#my_kvk').val();
        else if ( ($j('#my_gender').length > 0) &&($j('#my_search_gender').length > 0))
        	my_kvk_value  = $j('#my_gender').val()+$j('#my_search_gender').val();
        this.ajaxData['my_kvk'] = my_kvk_value;
    },
    callbackKvk: function(xhr)
    {
        var o = $j('#err_my_kvk');
        if (xhr.status == 200)
        {
            this._closeErrorBox(o);
            this._hideErrorClass('my_kvk');
        }
        else{
            this._openErrorBox(o.html(xhr.responseText));
            this._showErrorClass('my_kvk');
        }
    },
    prepareBirthdate: function()
    {
        this.ajaxData['my_birth_day']   = $j('#my_birth_day').val();
        this.ajaxData['my_birth_month'] = $j('#my_birth_month').val();
        this.ajaxData['my_birth_year']  = $j('#my_birth_year').val();
    },
    callbackBirthdate: function(xhr)
    {
        var o = $j('#err_my_birthdate');
        if (xhr.status == 200)
        {
            this._closeErrorBox(o);
            this._hideErrorClass('my_birth_day');
            this._hideErrorClass('my_birth_month');
            this._hideErrorClass('my_birth_year');
        }
        else
        {
            this._openErrorBox(o.html(xhr.responseText));
            this._showErrorClass('my_birth_day');
            this._showErrorClass('my_birth_month');
            this._showErrorClass('my_birth_year');
        }
    },
    
    preparePseudo: function()
    {
        this.ajaxData['my_pseudo']  = $j('#my_pseudo').val();
        var my_zipcode_value = $j('#my_zipcode');
        if(my_zipcode_value.length > 0)
        {
            this.ajaxData['my_zipcode']  = my_zipcode_value.val();
        }
    },
    callbackPseudo: function(xhr)
    {
        var o = $j('#err_my_pseudo');
        if (xhr.status == 200)
        {
            this._closeErrorBox(o);
            this._hideErrorClass('my_pseudo');
        }
        else
        {
            this._openErrorBox(o.html(xhr.responseText));
            this._showErrorClass('my_pseudo');
        }
    },
     
    preparePassword: function()
    {
        this.ajaxData['my_password']  = $j('#my_password').val();
        this.preparePseudo();         
    },
    callbackPassword: function(xhr)
    {
        var o = $j('#err_my_password');
        if (xhr.status == 200)
        {
            this._closeErrorBox(o);
            this._hideErrorClass('my_password');
        }
        else
        {
            this._openErrorBox(o.html(xhr.responseText));
            this._showErrorClass('my_password');
        }
    },
     
    prepareEmail: function()
    {
        if ($j('#my_email').length > 0)
        	this.ajaxData['my_email']  = $j('#my_email').val();
    },
    callbackEmail: function(xhr)
    {
        var o = $j('#err_my_email');
        if (xhr.status == 200)
        {
            this._closeErrorBox(o);
            this._hideErrorClass('my_email');
        }
        else
        {
            this._openErrorBox(o.html(xhr.responseText));
            this._showErrorClass('my_email');
        }
    },
    
    prepareGeo: function()
    {
        this.ajaxData['my_country']  = $j('#my_country').val();
        
        var unsetArea = $j('#my_unset_area');
        if(unsetArea.length > 0)
        {
            this.ajaxData['my_unset_area']  = unsetArea.val();
        }
        var area = $j('#my_area');
        if(area.length > 0)
        {
            this.ajaxData['my_area']  = area.val();
        }
        var zipcode = $j('#my_zipcode');
        if(zipcode.length > 0)
        {
            this.ajaxData['my_zipcode']  = zipcode.val();
        }
        var town = $j('#my_town');
        if(town.length)
        {
            this.ajaxData['my_town']  = town.val();
        }
    },
    callbackGeo: function(xhr)
    {
        var o = $j('#err_my_geo');
        if(xhr.status == 200)
        {
            this._closeErrorBox(o);
        }
        else
        {
            this._openErrorBox(o.html(xhr.responseText));
        }
    },
    
    prepareCgu: function()
    {
        var  o = $j('#my_cgu');
        this.ajaxData['my_cgu'] = (o[0].checked ? '1' : '0');
    },
    callbackCgu: function(xhr)
    {
        var o = $j('#err_my_cgu');
        if (xhr.status == 200)
        {
            this._closeErrorBox(o);
            this._hideErrorClass('my_cgu');
        }
        else
        {
            this._openErrorBox(o.html(xhr.responseText));
            this._showErrorClass('my_cgu');
        }
    }
    
}

/**
 * ALTERNATIVE PSEUDO SELECTOR
 */
function homev_pseudoSelect(pseudoValue)
{
    document.getElementById('my_pseudo').value = pseudoValue;
    var o = $j('#err_my_pseudo');
    homev_remoteChecker._closeErrorBox(o);
    homev_remoteChecker._hideErrorClass('my_pseudo');
}

/**
 * SINGLE INPUT CHECK
 */
var homev_useLocalChecker = false;
function homev_check(fieldName)
{
    // there is only one fieldName but we need an array
    var arr = new Array(fieldName);
    errors = 0;
    if(homev_useLocalChecker)
    {
        // we check locally the field
        var localRet = homev_localChecker.run(arr);
        
        var errors = homev_checkCallbackLocal(arr, localRet);
    }
    
    // we found an error locally, display it and avoid a request
    if(errors > 0)
    {
        $j('#local_err_' + fieldName).show();
    }
    else
    {
        // there were no error locally
        $j('#local_err_' + fieldName).hide();
        // can we check this field independently remotely ?
        if(   (fieldName == 'Kvk')
           || (fieldName == 'Birthdate' 
              && ( 
                 (myprofile_getInputValue('my_birth_day')   != null && myprofile_getInputValue('my_birth_day') != '') ||
                 (myprofile_getInputValue('my_birth_month') != null && myprofile_getInputValue('my_birth_month') != '') ||
                 (myprofile_getInputValue('my_birth_year')  != null && myprofile_getInputValue('my_birth_year') != '')
                 )
              )
           || (fieldName == 'Pseudo' && $j('#my_pseudo').val() != '')
           || (fieldName == 'Password' && $j('#my_password').val() != '')
           || (fieldName == 'Email' && $j('#my_email').val() != '')
           || (fieldName == 'Cgu')
          )
        {
            // yes we can ! check remotely !
            var url = homev_ajaxurl;
            homev_remoteChecker.run(arr, url, {signup: 0, checksingle: fieldName}, function(xhr){homev_remoteChecker._callbackCenter(xhr, fieldName)});
        }
    }
}

function homev_checkCallbackLocal(input, retObject)
{
    errors = 0;
    for(var i=0; i<input.length; i++)
    {
        var infoRet = retObject[input[i]];
        if(infoRet.length == 1)
        {
            if(!infoRet[0])
            {
                errors++;
            }
        }
    }
    return errors;
}

/**
* GLOBAL FORM CHECK
*/
var homev_checkAllAjaxRunning = false;
function homev_checkAll()
{
    // avoid multiple signup requests
    if(homev_checkAllAjaxRunning) return;
    homev_checkAllAjaxRunning = true;
    // preprare all the fieldnames to check 
    var arr = new Array('Kvk', 'Birthdate', 'Pseudo', 'Password', 'Email', 'Geo', 'Cgu' );
    // we check remotely
    var url = homev_ajaxurl;
    homev_remoteChecker.run(arr, url, {signup: 1}, homev_checkAllCallback);   
    $j('body').css('cursor', 'wait');
    $j('#mtcBtnInscription').css('cursor', 'wait');
}

function homev_checkAllCallback(xhr)
{
    $j('body').css('cursor', '');
    $j('#mtcBtnInscription').css('cursor', '');
    // if all went right, we have to redirect
    var my_response = jQuery.trim(xhr.responseText);//TRIM DE LA REPONSE
    if(xhr.status == 200)
    {
        if(my_response == '<!--SIGNUP OK-->')
        {
            homev_finalizeSignup('');
            return;
        }
        else if(my_response.substring(0, 20) == '<!--SIGNUP REDIRECT:')
        {
            // my_response text = "<!--SIGNUP REDIRECT:my_url-->"
            var l = my_response.length;
            var url = my_response.substring(20,l-3); // A la fin de l'url dans le flag on ferme par 3 caracteres (balise -->)
            homev_finalizeSignup(url);
            return;
        }
    }
    // something went wrong, we just have to display all body
    $j('#form_signup_index').html('');
    $j('#form_signup_index').html(my_response);
    //$j('#form_signup_index').replaceWith(my_response);
    homev_init();
    homev_checkAllAjaxRunning = false;
}
 
function homev_finalizeSignup(url)
{
    if (url=='')
      url = $j('#form_signup_index').attr('action');
    window.location.href = url;
}


/**
* GLOBAL FORM CHECK INDEX_COBRAND
*/
var cobrandIndex_checkAllAjaxRunning = false;

function cobrandIndex_check(fieldName)
{
// ne fait rien !!!
//end function
}



function cobrandIndex_checkAll()
{
   $j('#form_cobrand_index').submit();
// ne fait rien !!!
//end function
}

/**
 * autorun from cobranded sites
 * @param _data Array or String
 */
function cobrand_ajax( _data )
{
    $j.ajax(
    {
        type     : "POST",
        url      : homev_ajaxurl,
        data     : _data,
        dataType : "text",
        complete : homev_checkAllCallback
    });
}