﻿/**
* Méthode pour afficher un texte dans un input[type=text] lorsqu'il est vide.
* 
* Paramètres :
*
*    opt = {
*        id:               - Identifiant du champ (ex: .classname input.inputClass, #inpuId)
*        classEmptyTxt:    - Class du texte vide
*        emptyTxt:         - Texte à afficher
*    }
*/
jQuery.fn.setEmptyText = function(opt) {

    input = jQuery(opt.id);
    if (input.val() == "" || input.val() == opt.emptyTxt) input.val(opt.emptyTxt).addClass(opt.classEmptyTxt);

    input
        .focus(function() {
            if (jQuery(this).val() == opt.emptyTxt) jQuery(this).val("");
            jQuery(this).removeClass(opt.classEmptyTxt);
        })
        .blur(function() {
            if (jQuery(this).val() == "") jQuery(this).val(opt.emptyTxt).addClass(opt.classEmptyTxt);
        }
    );

    return this;
};


/**
* Méthode pour supprimer l'affichage d'un texte vide dans un champ input[type=text]
* 
* Paramètres :
*
*    opt = {
*        id:               - Identifiant du champ (ex: .classname input.inputClass, #inpuId)
*        classEmptyTxt:    - Class du texte vide
*        emptyTxt:         - Texte à afficher
*    }
*/
jQuery.fn.removeEmptyText = function(opt) {

    input = jQuery(opt.id);

    // Supprime la classe et le texte vide
    input.removeClass(opt.classEmptyTxt);
    if (opt.emptyTxt != null && input.val() == opt.emptyTxt) input.val("");

    // Supprime l'évènement
    input.unbind("focusin").unbind("focusout");
    return this;
};



/**
* Méthode pour afficher le nom d'une adresse.
*/
jQuery.fn.setCityName = function(lat, lng, contentNameOrFunction) {

    // Variables
    geocoder = new google.maps.Geocoder();
    latLng = new google.maps.LatLng(lat, lng);
    address = latLng.lat() + ", " + latLng.lng();

    // Recherche de l'adresse en fonction de la coordonnée
    geocoder.geocode({ 'latLng': latLng }, function(results, status) {

        if (status == google.maps.GeocoderStatus.OK) {
            if (results[0]) {

                address = results[0].formatted_address;
                split = address.split(", ");
                if (split.length >= 3) {
                    address = split[split.length - 2] + ", " + split[split.length - 1];
                }
            }
        }

        // Affiche l'adresse
        if (typeof (contentNameOrFunction) == "function") contentNameOrFunction(address);
        else jQuery(contentNameOrFunction).text(address);
    });

}



/**
* Méthode pour récupérer le zoom correspond à la précision de la recherche
*
* Paramètres :
*
*    precisionCode = Précision de la recherche
*
* Retourne : Zoom entre (1-19)
*/
jQuery.fn.getGMapZoom = function(precisionCode) {
    zoom = 3;
    switch (precisionCode) {
        case 0: zoom = 4; break;
        case 1: zoom = 5; break;
        case 2: zoom = 10; break;
        case 3: zoom = 12; break;
        case 4: zoom = 13; break;
        case 5: zoom = 15; break;
        case 6: zoom = 16; break;
        case 7: zoom = 17; break;
        case 8: zoom = 17; break;
        case 9: zoom = 18; break;
    }
    return zoom;
}












