﻿//*********************************************************************************************************
//*                                      Funciones Js de soporte                                          *
//*********************************************************************************************************



//Define la funcion trim para el objeto string
if (typeof String.prototype.trim == "undefined")
{    
	String.prototype.trim = function () 
	{   var s = this.replace(/^\s*/, "");        
		return s.replace(/\s*$/, "");    
	}
}

//Controla el evento keypress para que solo se escriban valores numéricos enteros
function keyPressNumber()
{
    
    keycode = window.event.keyCode;
    if(keycode==45)
        return;
        
    if((keycode<48||keycode>57))
        window.event.keyCode=0;
}

//Controla el evento keypress para que solo se escriban valores numéricos con decimales
function keyPressDecimal()
{
    keycode = window.event.keyCode;
    if(keycode==46)
      window.event.keyCode=44;
    if(keycode==45)
        return;
    if((keycode<48 && keycode!=46 && keycode!=44)||keycode>57)
        window.event.keyCode=0;
}

// Selecciona todos los items de  las listas del formulario.
//Utilizar cuando los items se añaden dinamicamente
function SeleccionAllCombos(select)
{
  var form=document.forms[0];
   if(form)
   {
      for(i=0;i<form.elements.length; i++)
      {
        if(form.elements[i].nodeName.toUpperCase()=="SELECT")
          if(form.elements[i].multiple)
            SeleccionarObjOptionsConReplace(form.elements[i],select);
      }
   }
  
}


//Selecciona todos los elementos de un desplegable reemplazando las comas de los valores de las opciones
function SeleccionarObjOptionsConReplace(cmb,select){
	for(var i=cmb.options.length-1; i>=0 ;i--)
		{
		    cmb.options[i].value = ReplaceCommas(cmb.options[i].value);
		    cmb.options[i].selected=select;
        }
}

//Reemplaza el carater ',' por '[@]' en una cadena
function ReplaceCommas(MyString)
    {return Replace(MyString, ",", "[@]");}

function Replace(MyString, FindThis, ReplaceWithThis)
{    
    if(MyString.length>0)
        while(MyString.indexOf(FindThis) != -1)
            MyString = MyString.replace(FindThis, ReplaceWithThis);

    return MyString;
}

//Elimana todas las opciones de un desplegable
function EliminarAllOptions(combo){
	for(var i=combo.options.length-1; i>=0 ;i--)
			combo.options[i]=null;
}


//Carga los datos pasados en el parámetro res en el desplegable sender, text es es campo de res que se 
// usara como texto de la opcion y value el valor de la opcion 
function loadData(res,sender,text,value)
{
  EliminarAllOptions(sender);
  option=document.createElement("Option");
  option.text='<Ninguno>';
  option.value=-1;
  sender.options.add(option)  
   for(i=0;i<res.length;i++)
   {
        option=document.createElement("Option");
        option.text=eval('res[' + i + '].' + text);
        option.value=eval('res[' + i + '].' + value);
        sender.options.add(option)     
   }
}

// Cambia el valor src de la imagen img  por imgover (evento mouseover) o por imgout (evento mouseout) segun sea
// el evento del raton sobre la misma
function CambiarImagen(img,imgover,imgout)
  {
    if (img)
    {
        img.src=imgout;
        img.onmouseout=function(){this.src=imgout;}
        img.onmouseover=function(){this.src=imgover;}
    }
  }
  
  
  //Devuelve la opcion seleccionada de un desplegable
  function OptionSelected(obj)
  {
    for(i=0;i<obj.options.length;i++)
    {
      if(obj.options[i].selected==true)
        return obj.options[i];
    }
    return null;
  }
  
  
  //Elimina la opcion opt del desplegable combo
  function DeleteOption(combo,opt)
  {
    for(i=0;i<combo.options.length;i++)
    {
      if(opt.value==combo.options[i].value)
      {
        combo.options[i]=null;
        return;
       }
    }
  }
  
  function SelectOption(combo,value)
  {
    for(i=0;i<combo.options.length;i++)
    {
      if(value==combo.options[i].value)
      {
        combo.options[i].selected=true;
        return;
       }
    }
  }
  
  //Inserta la opcion opt en el desplegable combo
  function InsertOption(combo,opt)
  {
    optb=document.createElement('option');
    optb.text=opt.text;
    optb.value=opt.value
    combo.options[combo.options.length]=optb;
  }




function Functions_DdlServiceCategory_onChange(Pre)
{

  obj=$get(Pre +'DdlServiceCategory');
  if(obj.value!="-1")
    PMS.Core.Ajax.WS.WSAjax.getServiceLine(obj.value,Functions_DdlServiceCategory_onChange_Response,null,$get(Pre+'DdlServiceLine'));

  EliminarAllOptions($get(Pre+'DdlServiceLine'));
  EliminarAllOptions($get(Pre+'DdlServiceSegment'));
  EliminarAllOptions($get(Pre+'DdlServiceDetail'));
 
}

function Functions_DdlServiceCategory_onChange_Response(res,sender)
{
  loadData(res,sender,"ItemName","ItemId");
  if(typeof(sender.cargado)=='function')
    sender.cargado(sender);
}


function Functions_DdlServiceLine_onChange(Pre)
{

  obj=$get(Pre +'DdlServiceLine');
  if(obj.value!="-1")
    PMS.Core.Ajax.WS.WSAjax.getServiceSegment(obj.value,Functions_DdlServiceLine_onChange_Response,null,$get(Pre+'DdlServiceSegment'));
  
  EliminarAllOptions($get(Pre+'DdlServiceSegment'));
  EliminarAllOptions($get(Pre+'DdlServiceDetail'));
  
}

function Functions_DdlServiceLine_onChange_Response(res,sender)
{
  loadData(res,sender,"ItemName","ItemId")
  if(typeof(sender.cargado)=='function')
    sender.cargado(sender);
}


function Functions_DdlServiceSegment_onChange(Pre)
{

  obj=$get(Pre +'DdlServiceSegment');
  if(obj.value!="-1")
    PMS.Core.Ajax.WS.WSAjax.getServiceDetail(obj.value,DdlServiceSegment_onChange_Response,null,$get(Pre+'DdlServiceDetail'));
  EliminarAllOptions($get(Pre+'DdlServiceDetail'));
}
function DdlServiceSegment_onChange_Response(res,sender)
{
  loadData(res,sender,"ItemName","ItemId");
  if(typeof(sender.cargado)=='function')
    sender.cargado(sender);
}




function Functions_DdlIndustry_onChange(Pre)
{
  Functions_DdlIndustrySegment=false;
  obj=$get(Pre +'DdlIndustry');
  if(obj.value!="-1")
    PMS.Core.Ajax.WS.WSAjax.getIndustrySegment(obj.value,Functions_DdlIndustry_onChange_Response,null,$get(Pre+'DdlIndustrySegment'));
  
  EliminarAllOptions($get(Pre+'DdlIndustrySegment'));
  EliminarAllOptions($get(Pre+'DdlIndustryDetail'));
}

function Functions_DdlIndustry_onChange_Response(res,sender)
{
  loadData(res,sender,"IndustrySegmentName","IndustrySegmentId")
  if(typeof(sender.cargado)=='function')
    sender.cargado(sender);
}


var Functions_DdlIndustryDetail=false;
function Functions_DdlIndustrySegment_onChange(Pre)
{
  industry=$get(Pre +'DdlIndustry');
  segment=$get(Pre +'DdlIndustrySegment');
  if(segment.value!="-1")
    PMS.Core.Ajax.WS.WSAjax.getIndustryDetail(industry.value,segment.value,Functions_DdlIndustrySegment_onChange_Response,null,$get(Pre+'DdlIndustryDetail'));
  
  EliminarAllOptions($get(Pre+'DdlIndustryDetail'));
}

function Functions_DdlIndustrySegment_onChange_Response(res,sender)
{
  loadData(res,sender,"IndustryDetailName","IndustryDetailId");
  if(typeof(sender.cargado)=='function')
    sender.cargado(sender);
}

function Functions_DdlTipoRegistro_onChange(Pre,Ayudante)
{
  EliminarAllOptions($get(Pre+'DdlEstado'));
  tipoReg=$get(Pre+'DdlTipoRegistro');
  PMS.Kayros.WS.WSKayros.GetEstados(tipoReg.value,Ayudante,Functions_DdlTipoRegistro_onChange_Response,Functions_OnCallbackResponseError,$get(Pre+'DdlEstado'))
}
function Functions_DdlTipoRegistro_onChange_Response(res,sender)
{
 loadData(res,sender,"_ItemName","_ItemId") ;
 sender.options[0]=null;
 sender.onchange();
}

function Functions_DdlEstado_onChange(Pre)
{
  obj=$get(Pre+'ddlMotivo');
  obj.disabled=true,
  EliminarAllOptions(obj);
  if(obj.onchange)
    obj.onchange();
  obj=$get(Pre+'ddlCompetidor');
  obj.disabled=true;
  EliminarAllOptions(obj);
  if(obj.onchange)
    obj.onchange();
  EstadoReg=$get(Pre+'DdlEstado');
  if(EstadoReg.value=='2' || EstadoReg.value=='3') //Cargar motivos de aceptacion o rechazo
   PMS.Kayros.WS.WSKayros.GetMotivos(EstadoReg.value,Functions_DdlEstado_onChange_Response,Functions_OnCallbackResponseError,$get(Pre+'ddlMotivo'))
  if(EstadoReg.value=='3') // Cargar Competidores
    PMS.Kayros.WS.WSKayros.GetCompetidores(Functions_DdlEstado_onChange_Response,Functions_OnCallbackResponseError,$get(Pre+'ddlCompetidor'))
}
function Functions_DdlEstado_onChange_Response(res,sender)
{
  sender.disabled=false;
  loadData(res,sender,"_ItemName","_ItemId") ;
  sender.options[0]=null;
}

function Functions_DdlEstadoCompetidores_onChange_Response(res,sender)
{
  sender.disabled=false;
  loadData(res,sender,"_ItemName","_ItemId") ;
  sender.options[0]=null;
}

function Functions_verificaRol(value,selector,fila)
{
  var __valor=[];
  __valor[0]=value;
  __valor[1]=selector; 
  __valor[2]=fila;  
//  he comentado esta linea porque me daba error
  PMS.Kayros.WS.WSKayros.GetRolUser(__valor[0],Functions_verificaRol_Response,Functions_verificaRol_Error,__valor)
}

function Functions_verificaRol_Error(res,sender)
{
  mes='- No se pudo consultar con el servidor. Inténtelo más tarde'
  sender[1].updateText.value='';
  sender[1].updateValue.value='';
  if(sender[1].SelectionMode=='Multiple')
  {
      sender[2].onclick();
  }
  mess=new msgBox(mes,"Atención, error de selección.",2);
  mess.show();
}


function Functions_verificaRol_Response(res,sender)
{
  //NoAutorizado=0, Ayudante=1
  correcto=true;
  mes='';
  if(res==1)
  {
    mes='No se puede seleccionar un ayudante'
    correcto=false;
  }
  if(!correcto)
  {
  //Provoca la deseleccion de la fila y eliminacion de los datos seleccionados
    sender[2].onclick();
  //llamar a los manejadores onchange
    if(typeof(sender[1].updateValue.onchange)=='function')
    {
      //!!importante: Eliminar luego el valor en el manejador onchange;
      (sender[1]).updateValue.value=sender[0];
      sender[1].updateValue.onchange();
    }
    if(sender[1].updateText.onchange)
      sender[1].updateText.onchange();
      
    
    mess=new msgBox(mes,"Atención, error de selección.",2);
    mess.show();
  }
}

function Functions_ExisteOption(option,options)
{
  for(i=0;i<options.length;i++)
    if(option.value==options[i].value)
      return true;
  return false;
}

function Functions_OnCallbackResponseError(res,sender)
{
  mes="No se pudo conectar con el servidor.<br>Inténtelo más tarde";
  mess=new msgBox(mes,"Atención.",2);
  mess.show();
}
function Functions_GridResultados_onPageIndexChange(sender,e)
{
  if(sender.CurrentPageIndex==e.get_index())
    e.set_cancel(true);
    
}


