//tevabien-ui.js
//v0914

//debug FNs
var annoy = true;
function debug(msg) { if (annoy) { annoy = confirm(msg); }; }

function uiAlert(message) {
    alert(message);
}

function uiStepGo(what, direction) {
    /*	Browse in a series of jStep DIVs, hiding current and revealing previous or next.
    Arguments:
    what: event trigger ('this')
    direction: 
    -1 , "prev" or "back": previous element
    1 or "next": next element
    */
	
    var jStepThis = $(what).parents('.jStep')[0];
    //	var jSteps = $(jStepThis).parents('.jSteps'); //container of all jStep's
    if (direction == -1 || direction == "prev" || direction == "back") {
        var jStepTarget = $(jStepThis).prev('.jStep');
    } else {
        var jStepTarget = $(jStepThis).next('.jStep');
    }
    $(jStepThis).hide();
    $(jStepTarget).show();
}

function uiStepRegistracion(what) {
    var oktogo = true; //avanzar por default

    //pero si hay un formulario, lo validamos primero
    var formObj = $(what).parents('FORM');
    if (formObj.length == 1) { //hay form:
        formObj = formObj[0];
        oktogo = checkForm(formObj); //validamos form, avanzamos si esta OK

        if (oktogo) {//si la validacion esta OK, nos fijamos si es el form de registracion #Registro-Paso1
        	var jStepRegistroObj = $(what).parents('#RegistrationStep1'); //es el form de registracion?
            if (jStepRegistroObj.length == 1) { //es el form de registro, pasamos el control a la registracion x AJAX
            	// trackear evento en google analytics
            	_gaq.push(['_trackEvent', 'Landing', 'Registracion']);
                doRegistracionAJAX(what, formObj);
                oktogo = false; //cancelamos el avance. Lo hará la registración por AJAX.
            } //end es FORM de registro
        } //end nos fijamos si es el form de registracion #Registro-Paso1
    } //end hay FORM

    //solo avanzamos si no hay form, o esta validado
    if (oktogo) {
        uiStepGo(what, 1);
    } //end oktogo

} //end function uiStepRegistracion


function uiFormStatus(obj, status) {
    /*
    Set status for AJAX forms.
    Arguments:
    obj: the DOM element which status is to be set.
    status: 'busy' or 'idle'.
		
		'busy' state applies 'busy' class to FORM, and disables its INPUT elements.
    */
    switch (status) {
        case "busy":
            $(obj).addClass("busy");
            $(obj).contents().find("INPUT").attr("disabled", "disabled");
            break;
        default:
            $(obj).removeClass("busy");
            $(obj).contents().find("INPUT").removeAttr("disabled");
            break;
    }; //end switch status
}





/******
*title hints functions
******/


function addHint(what) {
    if (what.title.indexOf("*") == 0) {
        var titleHint = what.title.substring(1);
        if (what.value == "" || what.value == titleHint) {
            what.value = titleHint;
            $(what).addClass("hint");

            //in "password" inputs, set to "text" to show hint, preserve type in class attribute
            if (what.type == "password") {
                $(what).addClass("password");
                var newObject = changeInputType(what, "text")//returns false for non-ie
            } //end type == "password"

        } //end value==""
    } //end title.indexOf("*")==0
} //end addHint

function rmHint(what) { //only on INPUT.text items
    if ((what.type == "text" || what.type == "textarea")
			&& what.title.indexOf("*") == 0) {
        var titleHint = what.title.substring(1);
        if (what.value == "" || what.value == titleHint) {
            $(what).removeClass('hint');
            what.value = "";

            //re-set password type if appropiate
            if ($(what).hasClass("password")) {
                var newObject = changeInputType(what, "password"); //returns false for non-ie
                if (newObject) { ///IE, element was replaced: reset focus
                    $(newObject).focus();
                    $(newObject).select();
                }
            } //end hasClass("password")

        } //end value == titleHint
    } //end what.title

} //end rmhint

function changeInputType(oldObject, oType) {
    //based on http://arjansnaterse.nl/changing-type-attribute-in-ie
    if (!document.all) {
        oldObject.type = oType;
        return false;
    } else {
        //ie can't change INPUT's type, must create new element
        var newObject = document.createElement('input');
        newObject.type = oType;
        if (oldObject.size) newObject.size = oldObject.size;
        if (oldObject.title) newObject.title = oldObject.title;
        if (oldObject.value) newObject.value = oldObject.value;
        if (oldObject.name) newObject.name = oldObject.name;
        if (oldObject.id) newObject.id = oldObject.id;
        if (oldObject.className) newObject.className = oldObject.className;
        oldObject.parentNode.replaceChild(newObject, oldObject);
        return newObject;
    } //end document.all
}


function showComments(e){
	$(this).closest("ul").children( ".commentHidden" ).addClass('show');
	$(this).closest("li").addClass('hide');
	$("#MainFoot").toggleClass("absoluteIEFix");
	e.preventDefault();
}

response = null;
element = null;
function showCommentsRequest(e){
	e.preventDefault();
	$(this).closest("li").addClass('loading');
	response = '<li class="commentHidden show"><h6><img src="../../Content/silueta34.png" alt="" width="34" height="34" /></h6><p><em>Miguel Angel Torres</em> In quam lectores placerat Investigationes illum. Diam sollemnes nihil lorem claram consectetuer. Eros nam placerat claritas claritatem congue.</p><h5>Hace 2 horas</h5></li><li class="commentHidden show"><h6><a href="#"><img src="../../Content/foto-empresa.png" alt="" width="34" height="34" /></a></h6><p><em><a href="#"></a></em> Adipiscing ut clari suscipit nulla habent. Non ut doming nobis facilisis nunc.</p><h5>Hace 2 horas</h5></li><li class="commentHidden show"><h6><img src="../../Content/silueta34.png" alt="" width="34" height="34" /></h6><p><em>Miguel Angel Torres</em> In quam lectores placerat Investigationes illum. Diam sollemnes nihil lorem claram consectetuer. Eros nam placerat claritas claritatem congue.</p><h5>Hace 2 horas</h5></li><li class="commentHidden show"><h6><a href="#"><img src="../../Content/foto-empresa.png" alt="" width="34" height="34" /></a></h6><p><em><a href="#"></a></em> Adipiscing ut clari suscipit nulla habent. Non ut doming nobis facilisis nunc.</p><h5>Hace 2 horas</h5></li>';
	
	element = this;

	setTimeout( 'showCommentsExecute()', 1500 );
}

function showCommentsExecute(){
	//alert(response);
	$(element).closest("ul").children( "li:first" ).before( response );
	$(element).closest("li").addClass('hide');
	$("#MainFoot").toggleClass("absoluteIEFix");
}


$(document).ready(function() {

    $(".commentHidden").removeClass('show');
    $(".commentMore").removeClass('hide');
    $(".commentMore A").bind('click', showCommentsRequest);
    //add *title hints to form elements

    for (var f = 0; f < document.forms.length; f++) {
        var fs = document.forms[f].elements;
        for (var j = 0; j < fs.length; j++) {
            if ((fs[j]).type == "text" || (fs[j]).type == "password" || (fs[j]).type == "textarea") {
                addHint((fs[j]));
                $(fs[j]).blur(function() { addHint(this); });
                $(fs[j]).focus(function() { rmHint(this); });
            } //end type==text
        } //end j
    } //end f


    // jStepNext & jStepBack : browsing multiple steps

    $(".jStepNext").click(function(event) {
        uiStepRegistracion(this, 1);
        event.preventDefault();
    }); // end jStepNext

    $(".jStepBack").click(function(event) {
        uiStepGo(this, -1);
        event.preventDefault();
    }); // end jStepBack


    // form validation
    $("FORM").submit(function(event) {
        var ok = (checkForm(this));
        if (!ok) { //si falla la validacion, no se envia el FORM
            event.preventDefault();
            return false;
        };
    }); // end form validation

    // popups (balloons) en Tus Datos y Tu Perfil
    $(".balloon").focus(function(event) {
        var trigger = $(this).parents(".popupTrigger");
        var popup = $(trigger).find(".popup");
        popup.show();
    }); // end popup

    $(".balloon").blur(function(event) {
        var trigger = $(this).parents(".popupTrigger");
        var popup = $(trigger).find(".popup");
        popup.hide();
    }); // end popup


    // DATEPICKER: 
    $.datepicker.setDefaults($.extend({ showMonthAfterYear: false }, $.datepicker.regional['']));
    $("#datepicker, #datepickerRenovar").datepicker($.datepicker.regional['es']);


    // WALL: Desplegar boton Ocultar
    $(".dropdownMenu").click(function(event) {
        event.stopPropagation();
        if ($(this).hasClass("desplegado")) {
            $(this).removeClass("desplegado");
        } else {
            $(".dropdownMenu.desplegado").removeClass("desplegado");
            $(this).addClass("desplegado");
            $("html").die("click", closeOpenedMenus);
        }
        $("html").live("click", closeOpenedMenus);
    }); // end dropdownMenu



    // Wall: Comentar.
    $(".commentType TEXTAREA").focus(function(event) {
        var commentType = $(this).parents(".commentType");
        $(commentType).toggleClass("commentTyping");
        $(commentType).removeClass("commentType");
    }); // end dropdownMenu
    //    $(".commentType TEXTAREA").blur(function(event) {
    //        var commentTyping = $(this).parents(".commentTyping");
    //        $(commentTyping).removeClass("commentTyping");
    //        $(commentTyping).toggleClass("commentType");
    //    }); // end dropdownMenu



    // Publicar: LINK
    $(".cargarFoto").click(function(event) {
        event.preventDefault();
        var pop = $(this).parents("body");
        var pop = $(pop).find("#popCargarFoto");
        $(pop).show();
        IEScrollTop();
    });
    $(".cargarVideo").click(function(event) {
        event.preventDefault();
        var pop = $(this).parents("body");
        var pop = $(pop).find("#popCargarVideo");
        $(pop).show();
        IEScrollTop();
    });
    $(".cargarLink").click(function(event) {
        event.preventDefault();
        var pop = $(this).parents("body");
        var pop = $(pop).find("#popCargarLink");
        $(pop).show();
        IEScrollTop();
    });
    $(".reportar").click(function(event) {
        event.preventDefault();
        var pop = $(this).parents("body");
        var pop = $(pop).find("#popReportarIndebido");
        $(pop).show();
        IEScrollTop();
    });
    $(".renovar").click(function(event) {
        event.preventDefault();
        var pop = $(this).parents("body");

        var idOferta = $(this).attr('idoferta');
        $('#idOfertaRenovar').val(idOferta);

        var pop = $(pop).find("#popRenovarPublicacion");
        $(pop).show();
        IEScrollTop();
    });

    $(".popClose").click(function(event) {
        var pop = $(this).parents(".pop");
        $(pop).hide();
        event.preventDefault();
    });

    /* PERFIL: mas info */
    $(".pDescFoot .desplegable").click(function(event) {
        event.preventDefault();
        var pDesc = $(this).parents(".perfilDescripcion");
        var pDescBody = $(pDesc).find(".pDescBody");
        $(pDesc).toggleClass("desplegado");
        if (pDesc.hasClass("desplegado")) {
            $(this).html("ocultar");
        } else {
            $(this).html("ver m&aacute;s");
        }

        $('#MainFoot').removeClass('absoluteIEFix');
        $('#MainFoot').addClass('absoluteIEFix');
    });

    $(".ofDescFoot .desplegable").click(function(event) {
        event.preventDefault();
        var pDesc = $(this).parents(".ofertaDescripcion");
        var pDescBody = $(pDesc).find(".ofDescBody");
        $(pDesc).toggleClass("desplegado");
        if (pDesc.hasClass("desplegado")) {
            $(this).html("ocultar");
        } else {
            $(this).html("ver m&aacute;s");
        }

        $('#MainFoot').removeClass('absoluteIEFix');
        $('#MainFoot').addClass('absoluteIEFix');

    });



    /* PUBLICAR: oferta */
    $(".hereFormOferta").click(function(event) {
        event.preventDefault();
        var inBoxForm = $(this).parents(".boxForm");
        $(inBoxForm).removeClass("inFormAnuncio");
        $(inBoxForm).addClass("inFormOferta");
        $("#MainFoot").toggleClass("absoluteIEFix");

    });
    $(".hereFormAnuncio").click(function(event) {
        event.preventDefault();
        var inBoxForm = $(this).parents(".boxForm");
        $(inBoxForm).removeClass("inFormOferta");
        $(inBoxForm).addClass("inFormAnuncio");
        $("#MainFoot").toggleClass("absoluteIEFix");
    });
    $(".closeBoxForm").click(function(event) {
        $("#MainFoot").removeClass("absoluteIEFix");
        event.preventDefault();
        var inBoxForm = $(this).parents(".boxForm");
        $(inBoxForm).removeClass("inFormOferta");
        $(inBoxForm).removeClass("inFormAnuncio");
        $("#MainFoot").toggleClass("absoluteIEFix");
    });

    $(".closeBoxForm").click(function(event) {
        event.preventDefault();
        var inBoxForm = $(this).parents(".boxForm");
        $(inBoxForm).removeClass("inFormOferta");
        $(inBoxForm).removeClass("inFormAnuncio");
    });



});         // end jQuery $(document).ready




/* form validation */

// function rmHelpValue(t){var v=t.value;if(v.indexOf("@example.com")>-1){t.value="";};}

function checkForm(f) {
    $(f).removeClass("haserrors");
    var oktosend = true; var fs = f.elements;

    for (var i = 0; i < fs.length; i++) {
        if (fs[i].type && fs[i].name) { //solo evaluamos elementos con atributos TYPE y NAME

            var fsi = $(fs[i]);

            //clear HINTs before validation
            if (fs[i].title.indexOf("*") == 0) {
                var hintText = fs[i].title.substring(1);
                if (fs[i].value == hintText) {
                    fs[i].value = "";
                }
            } //end fs[i].title.indexOf("*")==0

            //is required, or need to check if filled?
            var reqelm = fsi.parents(".required");
            if (reqelm.length == 0) {
                reqelm = false;
            } else {
                reqelm = reqelm[0];
            };

            if (reqelm) {

                //get field value
                var ftype = fs[i].type;
                if (ftype == "text" || ftype == "textarea" || ftype == "password") {
                    v = fs[i].value //INPUT:TEXT o TEXTAREA vacios son invalidos
                } else if (ftype == "select-one" || ftype == "select-multiple") {
                    v = fs[i][fs[i].selectedIndex].value //OPTIONS con value = "" son invalidas
                } else if (ftype == "checkbox") {
                    v = fs[i].checked //CHECKBOXES sin tildar son invalidos
                } else {
                    v = "!"//other types, don't check
                }
                var isfilled = isvalid = (v != "");


                //special fields:
                if (fs[i].name && fs[i].name.indexOf("mail") > -1) {
                    ftype = "email";
                    isvalid = isValidField(v, ftype);
                }


                if (!isvalid) {
                    if (oktosend && (ftype.indexOf("mail") > -1 || ftype.indexOf("text") > -1 || ftype.indexOf("select") > -1)) { fs[i].select(); }
                    oktosend = false
                    $(fs[i]).bind('click.rmErrorClass', function() {
                        rmErrorClass(this);
                    });
                    $(fs[i]).bind('keydown.rmErrorClass', function() {
                        rmErrorClass(this);
                    });

                    $(fs[i]).addClass("error");
                    $(reqelm).addClass("error");
                    $(f).addClass("haserrors");

                } //end !isvalid
            } //end reqlem
        } //end filter fs
    } //end for i in fs

    return oktosend;
}

function rmErrorClass(elm) {
    var etag = $(elm).parents(".error");
    var eform = $(elm).parents('FORM');

    $(elm).removeClass("error");
    $(elm).unbind('.rmErrorClass'); //no further clicks will trigger rmErrorClass();

    if (etag) { $(etag).removeClass("error"); };
}

function isValidField(t, k) {
    switch (k) {
        case "email":
            if (t.indexOf("@example.com") > -1) { return false; };
            var emailFilter = /^.+@.+\..{2,}$/;
            var illegalChars = /[\(\)\<\>\,\;\:\\\/\"\[\]]/
            if (!(emailFilter.test(t)) || t.match(illegalChars)) { return (false); } else { return (true); }
            return false;
            //end email case
        default:
            return true;
            //end default case
    } //end switch
}

/*  */
function closeOpenedMenus() {
    $(".dropdownMenu.desplegado").removeClass("desplegado");
    $("html").die("click", closeOpenedMenus);
}

function IEScrollTop() {
	if ($.browser.msie && $.browser.version.substr(0, 1) < 7) {
		$('html, body').animate({ scrollTop: 200 });
	}
}
