

BSC.util.date = function(e) {
	this.dt = e.dt;
	
	this.format = function() {
		var ano = this.dt.getFullYear();
		var mes = (this.dt.getMonth()+1) < 10 ? "0" + (this.dt.getMonth()+1) : "" + (this.dt.getMonth()+1);
		var dia = this.dt.getDate() < 10 ? "0" + this.dt.getDate() : "" + this.dt.getDate();
		return ano + "-" + mes + "-" + dia; 
	}
	
	this.sub = function(nd) {
		var numMs = nd * 86400000;
		return new BSC.util.date({dt:new Date(this.dt.getTime() - numMs)});
	}
}

BSC.util.date.formatString = function(sdt) {
	var dia = sdt.substring(0,2);
	var mes = sdt.substring(3,5);
	var ano = sdt.substring(6,10);
	
	return ano + "-" + mes + "-" + dia;
}

BSC.util.date.getDateRangeFromDaysAgo = function(nd) {
	var today = new BSC.util.date({dt:new Date()});
	var daysAgo = today.sub(nd);
	return BSC.util.date.fastDateRange(daysAgo.format(),today.format()); 
}

BSC.util.date.fastDateRange = function(dt1, dt2) {
	return "range(" + dt1 + "," + dt2 + ")";
}

BSC.util.date.formatDate = function(sdt) {
	var newDate = "";
    for(i=0; sdt.length>i ;i++){
        newDate = newDate + sdt.substring(i,i+1);
        if (i == 1 || i == 3) newDate = newDate + "/";
    }
    return newDate;
}
BSC.util.date.formatMask = function(inputDate) {
	$(inputDate).keypress(function(e){
		if(!(47 < e.which && e.which < 58) && e.which!=0 && e.charCode!=0){
			return false;
		}
	});
	$(inputDate).keyup(function(e){
        var posCursor = BSC.util.field.getPositionCursor($(this).get(0));
        var fieldLength = $(this).val().length;
       
        var newDate = $(this).val().replace(/\//g,"");
        $(this).val(BSC.util.date.formatDate(newDate));
           
        if(fieldLength==posCursor) BSC.util.field.setPositionCursor($(this).get(0),posCursor+1);
        else BSC.util.field.setPositionCursor($(this).get(0),posCursor);
    });
}

BSC.util.dateForm = {}; 
BSC.util.dateForm.setDateNavigator = function(e,ev) {
	var dateStart = e.form.dateStart.value;
	var dateStartFormatada = BSC.util.date.formatString(dateStart);
	var dateEnd = e.form.dateEnd.value;
	var dateEndFormatada = BSC.util.date.formatString(dateEnd);
	var elementId = e.form.elementId.value;
	var stateControl = e.form.stateControl.value;
	
	var regDate = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;
	if( !regDate.test(dateStart) || !regDate.test(dateEnd) ){
		BSC.util.date.error();
		return false;
	}
	
	$(e).attr("bsc_filter_name","docdatetime");
	$(e).attr("bsc_element_name",dateStart + " à " + dateEnd);
	$(e).attr("bsc_crumb_name","Data");
	$(e).attr("bsc_filter_value","range("+dateStartFormatada+","+dateEndFormatada+")");
	$(e).attr("bsc_crumb_type","fastExpression");
	$(e).attr("bsc_navElement_id",elementId);
	$(e).attr("bsc_call_type",BSC.constants.customFormCallType);
	$(e).attr("bsc_state_control",stateControl);
	$(e).attr("bsc_navigator_unique","true");

	BSC.actionListener(e,ev);
}
BSC.util.dateForm.setFieldNavigator = function(form){
	$(form).find(":input").not(":hidden").each(function(index,value){		
        $(this).keyup(function(e){
           if($(this).attr("maxlength") == $(this).val().length && BSC.util.field.getPositionCursor($(this).get(0)) == $(this).val().length){		   		
                $(form).find(":input").not(":hidden").eq(index+1).focus();
            }
        });
   });
}

BSC.util.date.check = function(date, e){
	var e = e || event;
	var k = e.keyCode || e.which;

	if(k == 9)return true;

	if(k >= 48 && k <= 57){
		if(date.value.length == 10)return false;
			if(date.value.length == 2 || date.value.length == 5)date.value = date.value + "/";
			return true;
	}else if(k == 8 || k == 37 || k == 38 || k == 39 || k == 40){
		return true;
	}

	return false;
}

BSC.util.date.error = function(){
	alert("Data incorreta!");
}

BSC.util.field = {};
BSC.util.field.getPositionCursor = function(field){
	var posCursor = 0;
    if (document.selection) { //IE
        var Sel = document.selection.createRange();
        Sel.moveStart ('character', -field.value.length);
        posCursor = Sel.text.length;
    }else if (field.selectionStart || field.selectionStart == '0'){ // Firefox
        posCursor = field.selectionStart;
    }
    return (posCursor);
}

BSC.util.field.setPositionCursor = function(field, pos){
  	if(document.selection) {
        var range = field.createTextRange();
        range.collapse(true);
        range.moveStart('character', pos);
        range.select();
    }else{
        field.selectionStart = pos;
        field.selectionEnd = pos;
    }
}