//Talentus - Todos los Derechos Reservados.

function esFecha(f){
  var re=/^ *[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4} *$/;
  if(!re.test(f.value)) return false;
  a=f.value.split("/");
  if(a.length!=3) return false;

  if( f.value=="00/00/0000" ) return true;

  y=a[2]*1; //parseInt(a[2]+"");
  m=a[1]*1; //parseInt(a[1]+"");
  d=a[0]*1; //parseInt(a[0]+"");
  if(m<1 || m>12) return false;
  if(d<1 || d>31) return false;
  return true;
}

function esHora(f){
  var re=/^ *[0-9]{1,2}:[0-9]{1,2} *$/;
  if(!re.test(f.value)) return false;
  a=f.value.split(":");
  if(a.length!=2) return false;
  h=a[0]*1;
  m=a[1]*1;
  if( h<0 ||h>23) return false;
  if( m<0 || m>59) return false;
  return true;
}

function esNumero(s){
  var re=/^ *[0-9]+ *$/;
  return re.test(s.value);
}

function esVacio(s){
  var re=/^ *$/;
  return re.test(s.value);
}

function esURL(s){
  var re=/^http:\/\/[^ ]+$/;
  if( re.test(s.value) ) return true;
  var re=/^https:\/\/[^ ]+$/;
  if( re.test(s.value) ) return true;
  var re=/^ftp:\/\/[^ ]+$/;
  if( re.test(s.value) ) return true;
  return false;
}

function validaCampo(f,s,t,n){
  if(f.value.length>s) return( t + ": " + _getJsTranslate( '_ERR_LARGOINVALIDO_' ).replace( "{maxchar}", s  ) );
  if(!n && esVacio(f)) return( t + ": " + _getJsTranslate( '_ERR_CAMPOOBLIGATORIO_' ) );
  return "";
}

function validaNumero(f,s,t,n){
  var msg=validaCampo(f,s,t,n);
  if(msg!="") return msg;
  if(!esVacio(f) && !esNumero(f)) return t + ": " + _getJsTranslate( '_ERR_NUMEROINVALIDO_' );
  return "";
}

function validaURL(f,s,t,n){
  var msg=validaCampo(f,s,t,n);
  if(msg!="") return msg;
  if(!esVacio(f) && !esURL(f)) return t + ": " + _getJsTranslate( '_ERR_URLINVALIDA_' );
  return "";
}

function validaUserid(f,s,t){
  if(f.value.length>s) return( t + ": " + _getJsTranslate( '_ERR_LARGOINVALIDO_' ).replace( "{maxchar}", s  ) );
  if(esVacio(f)) return( t + ": " + _getJsTranslate( '_ERR_CAMPOOBLIGATORIO_' ) );
  var re=/^[a-z0-9][a-z0-9]+$/;
  if(re.test(f.value)) return "";
  return( t + ": " + _getJsTranslate( '_ERR_USERIDINVALIDO_' ) );
}

function validaFecha(f,s,t,n){
  var msg=validaCampo(f,s,t,n);
  if(msg!="") return msg;
  if(!esVacio(f) && !esFecha(f)) return t + ": " + _getJsTranslate( '_ERR_FECHAINVALIDA_' );
  return "";
}

function validaEmail(f,s,t,n){
  var msg=validaCampo(f,s,t,n);
  if(msg!="") return msg;
  //var re=/^ *\w+(\.\w+)*@\w+(\.\w+)+ *$/;
  var re=/^([ñ\w-]+(?:\.[ñ\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
  if(!esVacio(f) && !re.test(f.value)) return t + ": " + _getJsTranslate( '_ERR_EMAILINVALIDO_' );
  return "";
}

function validaHora(f,s,t,n){
  var msg=validaCampo(f,s,t,n);
  if(msg!="") return msg;
  if(!esVacio(f) && !esHora(f)) return t + ": " + _getJsTranslate( '_ERR_HORAINVALIDA_' );
  return "";
}

function validaCombo(f,t){
  if(f.options[ f.selectedIndex ].value==-1)
    return t + ": " + _getJsTranslate( '_ERR_OPCIONNULA_' );
  else
    return "";
}

function validaRadioButton(f,t){
  var i;
  if( !f ) return false;
  if( !f.length )
    if( f.checked ) return "";
    else return t + ": " + _getJsTranslate( '_ERR_OPCIONNULA_' );

  for( i=0; i<f.length; i++ ){
    if( f[i].checked ) return "";
  }
  return t + ": " + _getJsTranslate( '_ERR_OPCIONNULA_' );
}

function validaRut(f,s,t,n){
  var msg=validaCampo(f,s,t,n);
  if(msg!="") return msg;
  var re=/^ *([0-9]{7,8}-[0-9Kk]) *$/
  if(!esVacio(f) && !re.test(f.value)) return t + ": " + _getJsTranslate( '_ERR_RUTINVALIDO_' );
  var rut=f.value.substring( 0, f.value.length-2 );
  var dv=f.value.charAt( f.value.length-1 ).toUpperCase();
  if( rut.length==7 ) rut="0" + rut;
  suma=0
  suma+=(rut.charAt(0))*3;
  suma+=(rut.charAt(1))*2;
  suma+=(rut.charAt(2))*7;
  suma+=(rut.charAt(3))*6;
  suma+=(rut.charAt(4))*5;
  suma+=(rut.charAt(5))*4;
  suma+=(rut.charAt(6))*3;
  suma+=(rut.charAt(7))*2;
  dvr=11-(suma%11);
  if( dvr==10 ) dvr='K';
  else if( dvr==11 ) dvr='0'
  if( !esVacio(f) && dvr!=dv ) return t + ": " + _getJsTranslate( '_ERR_RUTINVALIDO_' );
  return "";
}

function validaImagen(f,s,t,n){
  var msg=validaCampo(f,s,t,n);
  if(msg!="") return msg;
  var re=/^.*\.(gif|png|jpg)$/i;
  if(!esVacio(f) && !re.test(f.value)) return t + ": " + _getJsTranslate( '_ERR_IMAGENINVALIDA_' );
  return "";
}

var currMedia=''
function PlayMedia( id, href ){
  var obj;

  if( currMedia!='' ){
    obj=document.getElementById( 'MC_' + currMedia );
    obj.style.display='none';
    obj.innerHTML="";
    if( currMedia==id ){
      currMedia='';
      return false;
    }
  }
  currMedia='';

  obj=document.getElementById( 'MC_' + id );
  if( !obj ){
    if( href!='' ){
      openDownload( href );
      return true;
    }
    else
      return false;
  }

  currMedia=id;
  setInnerHTML( 'MC_' + id, eval( 'fo_' + id ) );
  obj.style.display='block';

  setSizeInlineImage( id );
  return true;
}

function setInnerHTML( id, html ){
  var obj=document.getElementById( id );
  obj.innerHTML=html;
}

function setSizeInlineImage( id ){
  var div=document.getElementById( 'MC_DIV_' + id );
  if( !div ) return;
  var img=document.getElementById( 'MC_IMG_' + id );
  if( !img ) return;

  var imgW=eval( 'foW_' + id );
  var divW=parseInt(
            ( document.defaultView && document.defaultView.getComputedStyle )
            ? document.defaultView.getComputedStyle( div, '' ).getPropertyValue( "width" )
            : div.currentStyle ? div.currentStyle.width : 0
           );
  if( imgW && divW && imgW>divW )
    img.style.width=divW + 'px';
}

function setClientDimensions( winObj, width, height ){
  var e;
  try{
    if( winObj.window.innerWidth>0 )
      winObj.window.innerWidth=width;
    winObj.window.innerHeight=height;
  }
  catch( e ){
    try{
      if( winObj.document.documentElement.clientWidth>0 )
        winObj.document.documentElement.clientWidth=width;
      winObj.document.documentElement.clientHeight=height;
    }
    catch( e ){
      winObj.document.body.clientWidth=width;
      winObj.document.body.clientHeightheight=height;
    }
  }
}

function openWindow( name, url, left, top, width, height, toolbar, menubar, statusbar, scrollbars, resizable  ){
  if( name==undefined ) return;
  if( url==undefined ) return;

  if( left==undefined || left<0 ) left=10;
  if( top==undefined || top<0 ) top=10;
  if( width==undefined || width<0 ) width=760;
  if( height==undefined || height<0 ) height=480;

  if( toolbar==undefined ) toolbar=true;
  if( menubar==undefined ) menubar=true;
  if( statusbar==undefined ) statusbar=true;
  if( scrollbars==undefined ) scrollbars=true;
  if( resizable==undefined ) resizable=true;

  var features="";
  features+="left=" + left;
  features+=",screenX=" + left;
  features+=",top=" + top;
  features+=",screenY=" + top;
  features+=",width=" + width;
  features+=",height=" + height;
  features+=",toolbar=" + (toolbar ? 1 : 0 );
  features+=",menubar=" + (menubar ? 1 : 0 );
  features+=",status=" + (statusbar ? 1 : 0 );
  features+=",scrollbars=" + (scrollbars ? 1 : 0 );
  features+=",resizable=" + (resizable ? 1 : 0 );
  var win=window.open( url, name, features );
  setClientDimensions( win, width, height );
  win.focus();

  return win;
}

function openExternalURL( url ){
  openWindow( "ExternalURL", url );
  return false;
}

function openDownload( url ){
  document.location=url;
  return false;
}

String.prototype.escapeHTML=function(){
  return(
    this.replace(/&/g,'&amp;').
         replace(/>/g,'&gt;').
         replace(/</g,'&lt;').
         replace(/"/g,'&quot;')
  );
};

String.prototype.escapeURL=function(){
  return(
    this.replace(/&/g,'%26').
         replace(/=/g,'%3D').
         replace(/ /g,'%20')
  );
};

function msgSubmitForm(){
  var msg="<div class='msgSubmitForm'>" + _getJsTranslate( '_TXT_PROCESANDO_' ) + "</div>";
  myDialog( msg, [], function( which ){}, "" );
}

function myDialog( msg, buttons, callback, title ){
  var params=new Object();
  params.callback=callback;
  params.onKeyEvent=window.document.onkeypress;
  params.onClickEvent=window.document.onclick;

  window.document.onkeypress=window.document.onclick=function( e ){ return false; };

  var divContent=document.createElement( 'div' );
  divContent.id="myDialogContainer";

  var divTitle=document.createElement( 'div' );
  divTitle.id="myDialogTitle";
  divTitle.innerHTML=(title==null ? _getJsTranslate( '_TXT_ADVERTENCIA_' ) : title);
  divContent.appendChild( divTitle );

  var divText=document.createElement( 'div' );
  divText.id="myDialogText";
  divText.innerHTML=msg;
  divContent.appendChild( divText );

  var divButtons=document.createElement( 'div' );
  divButtons.id="myDialogButtons";
  for( var i in buttons ){
    var divButton=document.createElement( 'a' );
    divButton.id="MyDialogButton" + i;
    divButton.href="#";
    divButton.onclick=function(){
      window.document.onkeypress=params.onKeyEvent;
      window.document.onclick=params.onClickEvent;
      g_rcModalWindow.close();
      callback( this.id.substr( 14 ) );
      return false;
    }
    divButton.innerHTML=buttons[ i ];
    divButtons.appendChild( divButton );
  }
  divContent.appendChild( divButtons );

  g_rcModalWindow.init();
  g_rcModalWindow.addContent( divContent );
  g_rcModalWindow.open();
}

function myDialogClose( which ){
  var divButton=document.getElementById( "MyDialogButton" +  which );
  if( divButton ) divButton.onclick();
  return false;
}

var g_rcModalWindow=new _rcModalWindow();
function _rcModalWindow(){
  var _self=this;
  this.divIframe=null;
  this.divFondo=null;
  this.divContainer=null;

  this.init=function(){
    if( !_self.divFondo ){
      _self.divIframe=document.getElementById( 'tmplModal-IFrame' );
      _self.divFondo=document.getElementById( 'tmplModalFondo' );
      _self.divContainer=document.getElementById( 'tmplModalContainer' );
    }
    _self.divContainer.innerHTML='';
  }

  this.addContent=function( content ){
    _self.divContainer.appendChild( content );
  }

  this.open=function( eventHandler ){
    if( _self.divIframe ) _self.divIframe.style.display="block";
    _self.divFondo.style.display="block";
    _self.divContainer.style.display="block";
  }

  this.close=function(){
    _self.divFondo.style.display="none";
    _self.divContainer.style.display="none";
    if( _self.divIframe ) _self.divIframe.style.display="none";
    _self.divContainer.innerHTML='';
  }

}

function PideEmocion(){
  var html="<div id='EmotesSelect'>";
  for( emo in __emociones ){
    var gif=__emociones[ emo ];
    if( gif ){
      html+="<a href='#' onclick='__emocion=\"" + emo + "\"; return myDialogClose(0);'";
      if( emo==__emocion ) html+=" class='miEmocion'";
      html+="><img src='" + __theme + "/iconos/emotes/" + gif + "' alt='" + emo + "' \/>" + emo + "<\/a>";
    }
  }
  myDialog( html, [ _getJsTranslate( '_FORM_ACEPTAR_' ) ], function( which ){ GrabaEmocion(); }, _getJsTranslate( '_TXT_CUALEMOCION_' ) );
}

function GrabaEmocion(){
  var elements=new Array();
  elements[ "EMOTE" ]=__emocion;
  g_rcAjax.sendRequest( __raizPlataforma + "/include/ajax/emoteAjaxSave.php", elements, GrabaEmocionChecker );
  MuestraEmocionActual();
}

function GrabaEmocionChecker( status, text, xml ){
  if( status==200 ){
  }
  else{
  }
}

function MuestraEmocionActual(){
  var a=document.getElementById( "info-usuario-emo" );
  if( !a ) return;
  var o=document.getElementById( "info-usuario-emo-img" );
  if( !o ) return;
  var gif=__emociones[ __emocion ];
  if( !gif ) return;
  
  o.src=__theme + "/iconos/emotes/" + gif;
  o.alt=_getJsTranslate( '_TXT_MIEMOCION_' ) + ": " + __emocion;
  a.title=_getJsTranslate( '_TXT_MIEMOCION_' ) + ": " + __emocion;
}

function textAreaWatchSize( id, defMessage ){
  var o=document.getElementById( id );
  if( !o ) return;
  if( o.value==defMessage ) o.value='';
  var interval=window.setInterval( function(){ textAreaFixSize( o ); }, 500 );
  o.onblur=function(){ window.clearInterval( interval ); if( o.value=='' ) o.value=defMessage; textAreaFixSize( o ); }
}

function textAreaFixSize( o ){
  while( o.rows > 1 && o.scrollHeight < o.offsetHeight ) o.rows--;
  while( o.scrollHeight > o.offsetHeight ) o.rows++;
}

function shortCommentForm( sec, ooid, goid, pfx ){
  var o=document.getElementById( pfx + "_shortComment_container" );
  if( !o ) return;

  var defMessage=_getJsTranslate( '_TXT_COMENTAR_' );
  var html="";
  html+="<form id='{pfx}_shortComment_form' class='shortComment_form' method='post' action='dummy.php' onsubmit='return false;'>";
  html+="  <div>";
  html+="    <textarea id='{pfx}_shortComment_input' class='shortComment_input' rows='1' cols='30' onfocus='textAreaWatchSize(\"{pfx}_shortComment_input\",\"{msg}\");'>{msg}</textarea>";
  html+="    <input id='{pfx}_shortComment_send' class='shortComment_send' type='button' value='Grabar' onclick='shortCommentPut(\"{sec}\",{ooid},{goid},\"{pfx}\")' />";
  html+="    <img id='{pfx}_shortComment_ajax' class='shortComment_ajax' src='{theme}/images/tdot.gif' alt='' style='visibility: hidden;' />";
  html+="  </div>";
  html+="</form>";
  html=html.replace( /{pfx}/g, pfx );
  html=html.replace( /{msg}/g, defMessage );
  html=html.replace( /{theme}/g, __theme );
  html=html.replace( /{sec}/g, sec );
  html=html.replace( /{ooid}/g, ooid );
  html=html.replace( /{goid}/g, goid );
  return html;
}

function shortCommentGet( sec, ooid, goid, pfx ){
  var elements=new Array();
  elements[ "PFX" ]=pfx;
  elements[ "DO" ]="get";
  elements[ "SEC" ]=sec;
  elements[ "OOID" ]=ooid;
  elements[ "GOID" ]=goid;
  shortCommentAjax( elements );
}

function shortCommentPut( sec, ooid, goid, pfx ){
  var defMessage=_getJsTranslate( '_TXT_COMENTAR_' );
  var input=document.getElementById( pfx + "_shortComment_input" );
  if( input && input.value!="" && input.value!=defMessage ){
    o=document.getElementById( pfx + "_shortComment_send" );
    o.style.visibility="hidden";
    o=document.getElementById( pfx + "_shortComment_ajax" );
    o.style.visibility="visible";
    var elements=new Array();
    elements[ "PFX" ]=pfx;
    elements[ "DO" ]="put";
    elements[ "SEC" ]=sec;
    elements[ "OOID" ]=ooid;
    elements[ "GOID" ]=goid;
    elements[ "TEXT" ]=input.value;
    shortCommentAjax( elements );
  }
}

function shortCommentDel( sec, ooid, goid, pfx, coid ){
  o=document.getElementById( pfx + "_shortComment_send" );
  o.style.visibility="hidden";
  o=document.getElementById( pfx + "_shortComment_ajax" );
  o.style.visibility="visible";
  var elements=new Array();
  elements[ "PFX" ]=pfx;
  elements[ "DO" ]="del";
  elements[ "SEC" ]=sec;
  elements[ "OOID" ]=ooid;
  elements[ "GOID" ]=goid;
  elements[ "COID" ]=coid;
  shortCommentAjax( elements );
}

function shortCommentAjax( elements ){
  var o=document.getElementById( elements[ "PFX" ] + "_shortComment_container" );
  if( !o ) return;
  g_rcAjax.sendRequest( __raizPlataforma + "/utils/shortComment.php", elements,
                        function( status, text, xml ){
                          if( status==200 ){
                            var e;
                            try{
                              var json=JSON.parse( text );
                              if( json.ooid==elements[ "OOID" ] && json.goid==elements[ "GOID" ] ){
                                var html=shortCommentForm( elements[ "SEC" ], elements[ "OOID" ], elements[ "GOID" ], elements[ "PFX" ] );
                                o.innerHTML=html + json.html;
                              }
                            }
                            catch(e){}
                          }
                        }
                      )
}

function editorMonitor( entries ){
  if( tinyMCE ){
    for( idx in entries ){
      var entry =entries[ idx ];
      var editor=tinyMCE.getInstanceById( entry.name );
      if( editor ){
        var eId=editor.editorId;
        var statusBar= document.getElementById( eId + "_path" );
        if( statusBar ){
          var e;
          try{
            var doc=window.frames[ eId ].document.body.innerHTML; //tinyMCE.getContent( eId );
            var nchars=entry.maxsize - doc.length;
            var msg=_getJsTranslate( '_TXT_CARACTERESDISPONIBLES_' ) + ": " + nchars + " / ";
            var pos=statusBar.innerHTML.indexOf( _getJsTranslate( '_TXT_CARACTERESDISPONIBLES_' ) + ":" );
            if( pos==-1 )
              statusBar.innerHTML= msg + statusBar.innerHTML;
            else{
              var re=new RegExp( _getJsTranslate( '_TXT_CARACTERESDISPONIBLES_' ) + ": -?[0-9]+ \/ " );
              statusBar.innerHTML=statusBar.innerHTML.replace( re, msg );
            }
          }
          catch( e ){}
        }
      }
    }
    setTimeout( function(){ editorMonitor( entries ); }, 1000 );
  }

}

function playSound( file ) {
  var n=file.lastIndexOf( '.' );
  if( n==-1 ) return;
  var ext=file.slice( n + 1 );
  if( ext==-1 ) return;

  var mime;
  if( ext=='mp3' ) mime='audio/mpeg';
  else if( ext=='wav' ) mime='audio/x-wav';
  else if ( ext=='mid' || ext=='midi' ) ext='audio/x-midi';
  else return;
  
  var o=document.getElementById("SoundPlayer")
  if( !o ){
    o=document.createElement( 'span' );
    o.id='SoundPlayer';
    document.body.appendChild( o );
  }

  o.innerHTML='<object type="' + mime + '" data=" ' + file + '" width="1" height="1" style="left: -2000px">' +
              '<param name="src" value="' + file + '" />' +
              '<param name="autoplay" value="true" />' +
              '<param name="autoStart" value="1" />' +
              '</object>';
}
function _getJsTranslate( idx ){
  // como objeto;
  var tr=new String( _MSGJS_[ idx ] );

  // retornamos la traduccion
  return tr;
}
