var numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
var p_dias = ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'];
var p_meses = ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Augosto','Septiembre','Octubre','Noviembre','Diciembre'];
var p_formato = 'yy-mm-dd';
$.datepicker.setDefaults({ dateFormat: p_formato, dayNamesMin : p_dias, monthNames: p_meses });

function number(id)
{
   var div = $('#' + id);
   div.keypress(function(e){
        key = String.fromCharCode(e.charCode || e.keyCode);
        if($.inArray(key, numbers) == -1)
        {
            e.preventDefault();
        }
   });
}



function autoPhone(id)
{
   var div = $('#' + id);
   div.keypress(function(e){
        key = String.fromCharCode(e.charCode || e.keyCode);
        value = $(this).val();
        size = value.length;

        if($.inArray(key, numbers) > -1)
        {
          if(size == 3)
             $(this).val("("+value+") ");

          if(size == 9)
             $(this).val(value+"-");
        }
        else
            e.preventDefault();

   });
}

function autoDate(id)
{
   var div = $('#' + id);
   div.keypress(function(e){
        key = String.fromCharCode(e.charCode || e.keyCode);
        value = $(this).val();
        size = value.length;
        
        if($.inArray(key, numbers) > -1)
        {
          if(size == 2 || size == 5)
             $(this).val(value+"-");

        }
        else
            e.preventDefault();
	    
   });
}
function autoTime(id)
{
   var div = $('#' + id);
   div.keypress(function(e){
        key = String.fromCharCode(e.charCode || e.keyCode);
        value = $(this).val();
        size = value.length;
        
        if($.inArray(key, numbers) > -1)
        {
          if(size == 2)
               $(this).val(value+":");
        }
        else
            e.preventDefault();
   });
}

function set_options(eid, data)
{
	var element = $('eid');
	
	if(element != null)
	{
	  element.find('option').remove();
	  type = typeof(data);
	  
	  if(data == null || type != 'object')
	  {
	     data = Array();
	     data[-1] = "SIN OPCIONES";
      }
	  
      for (var i in data)
      {
           option = $('<option></option>').text(i).val(data[i]);
		   element.append(option);
      }
	}
	else
	    alert("Error: " + eid + " ID not in DOM.");
}

function error_exists()
{
	var c = 0;
	var errors = $(".error");
	var txt = "";
	
	errors.each(function(){
		   txt = $(this).text();
		   if(txt.length > 0)
		       c++;
    });
    
    return (c > 0) ? true : false;
}

function go2(dir)
{
     document.location.href = dir;
}

function clean_errors()
{
	var errors = $(".error");
	errors.each(function(){
		   $(this).text("");
           $(this).hide();
    });
}

function set_div(eid, value)
{
  var element = $('#'+eid);
  var type = element.attr('type') + "";

  if(type == "undefined")
  {
      element.html(value);
  }
  else
  {
      element.val(value);
  }
}

function print_json(json)
{
   var ps = $.parseJSON(json);

   for(i = 0; i < ps.errors.length; i++)
   {
        div = ps.errors[i].div;
	error = ps.errors[i].error;
		
        $('#'+div).show();
        set_div(div, error);
   }
}

function get_vars(frm)
{
    var fr1 = document.forms[frm];
    var n_elm = 0;
    var rt = "";
    var frm_elm;
    var evalue = "";

    if(fr1)
    {
         frm_elm = fr1.elements;
         n_elm = frm_elm.length;

         for(i = 0; i < n_elm; i++)
         {
              evalue = (frm_elm[i].type == 'checkbox') ? ((frm_elm[i].checked) ? 1 : 0) : frm_elm[i].value;
              rt += frm_elm[i].name+"="+$.base64Encode(evalue.toString());

              if(i < (n_elm-1))
	            rt += "&";
         }
    }

    return rt;
}

function clean_form(frm)
{
    var fr1 = document.forms[frm];
    var n_elm = 0;
    var frm_elm;
    var element = "";

    if(fr1)
    {
         frm_elm = fr1.elements;
         n_elm = frm_elm.length;

         for(i = 0; i < n_elm; i++)
         {
             element = frm_elm[i];

             if(element.title != 'static')
             {
                if(element.type == 'checkbox')
                   element.checked = false;  

                if(element.type == 'text' || element.type == 'textarea' || element.type == 'password' || element.type == 'hidden')
                   element.value = "";

                /*if(element.type == 'select-one')
                   element.value = 1;*/
             }
         }
    }
}


function strip_tags(st)
{
     return st.replace(/<\/?[^>]+>/gi, '');
}

function strip_quotes(val)
{
  val = val.replace("'", "");
  val = val.replace("\"", "");
  return val;
}

function get(path, data, type)
{
       var rt = "";
       type = (type == null) ? "POST" : type;
       $.ajax({
         async: false,
         url: path,
         data: data,
         type: type,
         error: function(object, error){ alert("Error: " + error); },
         success: function(new_data){ rt = new_data; }
       });
       return rt;
}

function ajax(path, data, div, type, load)
{
       div = $('#'+div);
       type = (type == null) ? "POST" : type;
       $.ajax({
         url: path,
         type: type,
         data: data,
         beforeSend: function(objeto){ if(load == null){ $("#m-cargando").dialog('open'); } },
         error: function(object, error){ div.text("Error: " + error); $("#m-cargando").dialog('close'); },
         success: function(new_data){ $("#m-cargando").dialog('close'); div.html(new_data); }
       });
}


function request(path, form, div, show, function_callback)
{
      clean_errors();
      div = $('#'+div);
      var type = get_value('type', form);

       $.ajax({
         url: path,
         type: "POST",
         dataType: "text",
         data: get_vars(form),
         beforeSend: function(object){ $("#m-cargando").dialog('open'); },
         error: function(object, error){ div.text("Error: No se encontro la pagina"); setMessage(div.attr("id"), show); $("#m-cargando").dialog('close'); },
         success: function(data)
         {
	    $("#m-cargando").dialog('close');
            print_json(data);
            setMessage(div.attr("id"), show);

            if(!error_exists()) 
            { 
                if(type == "insert") { clean_form(form); }
                if(function_callback != null) { function_callback.call(); } 
                  
            }  

         }
       });
}

function setMessage(dv, show)
{
     if(show)
     {

     var dv = $.trim(dv).toString();
     var obj = $('#'+dv);
     var val = parseInt(obj.text());

     obj.removeClass('box_true');
     obj.removeClass('box_false');

     if(dv.indexOf("alta") != -1)
     {
          obj.show('highlight');
          if(val == 1)
          {
              obj.addClass('box_true');
              obj.text('Registro agregado correctamente.');
          }
          else
          {
              obj.addClass('box_false');
              obj.text('Error al agregar el registro.');
          }
     }
     else if(dv.indexOf("edita") != -1)
     {
          obj.show('highlight');
          if(val == 1)
          {
              obj.addClass('box_true');
              obj.text('Registro actualizado correctamente.');
          }
          else
          {
              obj.addClass('box_false');
              obj.text('Error al actualizar el registro.');
          }
     }

     setTimeout(function(){ obj.hide('highlight'); }, 5000);
     }
}

function get_value (val, frm)
{
   var fr1 = document.forms[frm];
   var elm = "";
   var rt = "";

   if(fr1)
   {
        elm = fr1.elements[val];
        if(elm)
            rt = elm.value;
   }
    else
        alert("Error: Formulario no valido.");

   return rt;
}



function image_change(img_name, img_dir)
{
  var new_src = img_dir + '?' + get_time();
  $('#' + img_name).attr('src', new_src);
}

function get_time()
{
   var date = new Date();
   return date.getTime();
}

function set_json(data)
{
	data = $.parseJSON(data);
	for(var k in data)
	{
		   $('#'+k).val(data[k]);
	}
}


function json2html(data)
{
        rt = '';
	for(var k in data)
	{
            k_f = ucwords(k.replace('_', ' '));
            rt += '<span class="json_html">' + k_f + '</span>: ' + data[k] + '<br>';
	}
        return rt;
}

function ucwords(str) 
{
    return (str + '').replace(/^(.)|\s(.)/g, function ($1) {
        return $1.toUpperCase();
    });
}

////////////////////////////////////////////////////
// Upload Functions                               //
// Upload funcion require Jquery 1.4.2 or later   //
// and jquery ui 1.8.2 or later                   //
////////////////////////////////////////////////////

function setTrigger(trigger_id, dialog_id) 
{         
      var Trigger = function (){
            trigger = $(trigger_id);
            val = parseInt(trigger.val());
            if(val == 1)
            { 
                 $(dialog_id).dialog('close');
                 trigger.val('');
            }
       }
       setInterval(Trigger, 500);
}

function autoUpload(id, action, options)
{
   upload_input = $('#'+id);
   c = $.trim(upload_input.attr('attr'));
   body = $('body');

   body.append('<input type="hidden" id="upload_trigger_'+c+'" />');
   body.append('<form style="display:none;" id="upload_form_'+c+'" target="upload_frame_'+c+'" action="'+action+'" method="POST" enctype="multipart/form-data"></form>');
   body.append('<iframe id="upload_frame_'+c+'" name="upload_frame_'+c+'" src="'+action+'" height="0" frameborder="0"></form>');
   body.append('<div id="upload_message_ok_'+c+'" title="Cargando Archivo"><p align="center" style="font:bold 15px Verdana;">Cargando...</p></div>');
   $('#upload_message_ok_'+c).dialog({ autoOpen: false, modal: true });

   $('#upload_form_' + c).append('<input type="hidden" name="trigger" value="upload_trigger_'+c+'" />');
   for(var i in options)
   {
         $('#upload_form_' + c).append('<input type="hidden" name="'+i+'" value="'+options[i]+'" />');
   }

  upload_input.change(function(){ 
            attr = parseInt($(this).attr('attr'));
            this_element = $(this);
            this_form = $('#upload_form_' + attr);
            this_parent = this_element.parent();
            this_element.appendTo(this_form);
            this_form.submit();
            $('#upload_message_ok_' + attr).dialog('open');
            this_element.appendTo(this_parent);   
  });

  up_trigger = '#upload_trigger_'+c;
  up_message = '#upload_message_ok_'+c;

  setTrigger(up_trigger, up_message); 
}

////////////////////////////////////////////////////
// End Upload Functions                           //
////////////////////////////////////////////////////


function getLower(_source)
{
   r = $.trim($('#' + _source).val()).toLowerCase();
   return r;
}

function show_thumb(area, image_source, path_image)
{

img_image = getLower(image_source);
$('#' + area).wTooltip({ 
           content: '<img src="'+path_image+img_image+'" border="0">', 
           style: false, 
           className: 'tooltip_image',
           callBefore: function(tooltip, node, setts) { 
                         if(getLower(image_source) == '') 
                         {
                            $(tooltip).removeClass('tooltip_image');
                            $(tooltip).addClass('tooltip_hide');
                         }
                         else
                         {
                            $(tooltip).addClass('tooltip_image');
                            $(tooltip).removeClass('tooltip_hide');
                         }

                         act_image =  $(tooltip).find('img').attr('src');
                         new_image = path_image + getLower(image_source); 

                         if(act_image != new_image)
                         {
                            $(tooltip).html('<img src="'+new_image+'" border="0">');
                            img_image = getLower(image_source);
                         }  
           } 
});

}


function nl2br (str, is_xhtml) {

    var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '' : '<br>';
 
    return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
}

function str_replace (search, replace, subject, count) {

    var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
            f = [].concat(search),
            r = [].concat(replace),
            s = subject,
            ra = r instanceof Array, sa = s instanceof Array;
    s = [].concat(s);
    if (count) {
        this.window[count] = 0;
    }
 
    for (i=0, sl=s.length; i < sl; i++) {
        if (s[i] === '') {
            continue;
        }
        for (j=0, fl=f.length; j < fl; j++) {
            temp = s[i]+'';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp).split(f[j]).join(repl);
            if (count && s[i] !== temp) {
                this.window[count] += (temp.length-s[i].length)/f[j].length;}
        }
    }
    return sa ? s : s[0];
}


function setInTextArea(tag, field) 
{
    var myField = document.getElementById(field);
    tag = ' ' + tag + ' ';

    if (myField && myField.type == 'textarea') 
    {

    	if(document.selection) 
        {
    		myField.focus();
    		sel = document.selection.createRange();
    		sel.text = tag;
    		myField.focus();
    	}
    	else if(myField.selectionStart || myField.selectionStart == '0') 
        {
    		var startPos = myField.selectionStart;
    		var endPos = myField.selectionEnd;
    		var cursorPos = endPos;
    		myField.value = myField.value.substring(0, startPos) + tag + myField.value.substring(endPos, myField.value.length);
    		cursorPos += tag.length;
    		myField.focus();
    		myField.selectionStart = cursorPos;
    		myField.selectionEnd = cursorPos;
    	}
    	else 
        {
    		myField.value += tag;
    		myField.focus();
    	}

    } 
    else 
    {
    		return false;
    }
}

function returnText(element)
{
        element = $.trim(element);
        $e = $('#'+element);
 
        if($e)
        {
           var text = $e.val();
           $e.focus(function(){
                val = $.trim($(this).val());
                if(val == '' || val == text)
                {
                    $(this).val('');
                }
           });

           $e.blur(function(){
                val = $.trim($(this).val());
                if(val == '')
                {
                    $(this).val(text)
                }
           });
        }
}

function generatePass() 
{
   var chars = 'azertyupqsdfghjkmwxcvbn23456789AZERTYUPQSDFGHJKMWXCVBN';
   var pass = '';

   for(i=0;i<10;i++)
   {
       var wpos = Math.round(Math.random()*chars.length);
       pass += chars.substring(wpos,wpos+1);
   }
   return pass;
}

