//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
                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 });
	}
}