// combos
  
  
  function comboSearch()
        {
        //Obtengo los valores de los combos
        var txtLocation
        var txtType
        var txtTopic
        var filterEXP = "1==1";        
        
        var ddLocation=document.getElementById("ctl00_DropDownListLocation");
        
        //Combo location
        if (ddLocation.selectedIndex!=0)
        {
            txtLocation=ddLocation.options[ddLocation.selectedIndex].value; 
            filterEXP+=" && (DataItem.getMember('getCountryDisplayName').Value.toLowerCase().indexOf('"+txtLocation.toLowerCase()+"')>=0)";
        
            if (txtLocation == "Estados Unidos" || txtLocation == "United States")
            {
                filterEXP+=" || (DataItem.getMember('getCountryDisplayName').Value.toLowerCase().indexOf('"+"IDB Headquarters".toLowerCase()+"')>=0))";
            }
        }
        
        var ddType=document.getElementById("ctl00_DropDownListType");
        
        if (ddType.selectedIndex!=0)
        {
            txtType=ddType.options[ddType.selectedIndex].value;
            filterEXP+=" && DataItem.getMember('getTypeValue').Value == '"+txtType.toLowerCase()+"' ";
        }
        
        //Combo topic
         var ddTopic=document.getElementById("ctl00_DropDownListTopic");
        if (ddTopic.selectedIndex!=0)
        {
            txtTopic=ddTopic.options[ddTopic.selectedIndex].value;
            filterEXP+=" && DataItem.getMember('groupsOfTopics').Value.toLowerCase().indexOf('"+txtTopic.toLowerCase()+"')>=0";
        }
        
        
        //Filtro la grilla
                
            GridEvents.filter(filterEXP);
            GridEvents.render();
            showEmptyText(GridEvents.get_recordCount());
            filterEXP="";
         
        }
       
        
        function TextSearch()
        {
        //Obtengo el valor del textbox
        var txtBox
        txtBox=document.getElementById("TextBoxSearch").value;
        
        //Armo la expresión para el filter
        var filterEXP = "1==1"
            filterEXP+=" && ((DataItem.getMember('getShortTitleDisplayName').Value.toLowerCase().indexOf('"+txtBox.toLowerCase()+"')>=0))";
            
       //Filtro la grilla
       
            GridEvents.filter(filterEXP);
            GridEvents.set_currentPageIndex(0);
            GridEvents.render();
            showEmptyText(GridEvents.get_recordCount());
            filterEXP="";
     
        
       }
        
        function calendarFilter(sender,eventArgs)
        {
        var customDays = CalendarEvents.get_customDays(); 
        var selectedDate = CalendarEvents.getSelectedDate();
        var isCustomDay = false;
        for (x=0;x<customDays.CalendarDayArray.length;x++)
            {
            if (selectedDate.toString() == customDays.CalendarDayArray[x].Date.toString())
                {
                isCustomDay = true;
                dia=selectedDate.getDate();
                dia=""+dia;
                if (dia.length<2)
                    {dia="0"+dia};
                    
                mes=selectedDate.getMonth()+1;    
                mes=""+mes;
                if (mes.length<2)
                    {mes="0"+mes};
                anio=""+selectedDate.getFullYear();
                selectedDate=mes+"/"+dia+"/"+anio
                
                filterEXP ="  DataItem.getMember('getShortFormattedStartDate').Value.indexOf('"+selectedDate+"')>=0";
              
                if (!isNotHomePage)
                {
                GridEvents.filter(filterEXP);
                GridEvents.set_currentPageIndex(0);
                GridEvents.render();
                 showEmptyText(GridEvents.get_recordCount());
                //Show default screen
               searchOpened=true; 
               //showDateSearch();
                }
                else
                {
                window.location="default.aspx?calendarFilter="+URLEncode(selectedDate);//filterEXP;
                
                };
               filterEXP="";
                };
            };
        
        }
        
        function clearFilter()
        {
            var ddLocation=document.getElementById("ctl00_DropDownListLocation");
            ddLocation.selectedIndex=0;
            var ddType=document.getElementById("ctl00_DropDownListType");
            ddType.selectedIndex=0;
            var ddTopic=document.getElementById("ctl00_DropDownListTopic");
            ddTopic.selectedIndex=0;
            document.getElementById("TextBoxSearch").value="";
       
           //Filtro la grilla, pero sin nada en el filtro. Una cadena vacía como filtro hace que
           //se pierda el paginado
           TextSearch();     
        }   
        

//CalenDar

//Funciones del calendar
   function GoPrevYear()
    {
    var v = CalendarEvents.VisibleDate;
    var newVisibleDate = new Date(v.getFullYear()-1, v.getMonth(), 1);
    CalendarEvents.SetVisibleDate(newVisibleDate);
    }
    function GoPrevMonth()
    {
    var v = CalendarEvents.VisibleDate;
    var newVisibleDate = new Date(v.getFullYear(), v.getMonth()-1, 1);
    CalendarEvents.SetVisibleDate(newVisibleDate);
    if (!isNotHomePage){
    gridUpdateMonthEvents(newVisibleDate);
    }
    }
    function GoNextMonth()
    {
    var v = CalendarEvents.VisibleDate;
    var newVisibleDate = new Date(v.getFullYear(), v.getMonth()+1, 1);
    CalendarEvents.SetVisibleDate(newVisibleDate);
    if (!isNotHomePage){
        gridUpdateMonthEvents(newVisibleDate);
        }
    }
    function GoNextYear()
    {
    var v = CalendarEvents.VisibleDate;
    var newVisibleDate = new Date(v.getFullYear()+1, v.getMonth(), 1);
    CalendarEvents.SetVisibleDate(newVisibleDate);
    }
    function GoToday()
    {
    var v = CalendarEvents.TodaysDate;
    var newVisibleDate = new Date(v.getFullYear(), v.getMonth(), 1);
    CalendarEvents.SetVisibleDate(newVisibleDate);
    }
    
    function gridUpdateMonthEvents(selectedDate)
    {
        dia=selectedDate.getDate();
            dia=""+dia;
            if (dia.length<2)
                {dia="0"+dia};
        
        mes=selectedDate.getMonth()+1;
            mes=""+mes;
            if (mes.length<2)
                {mes="0"+mes};
        anio=""+selectedDate.getFullYear();
       
        filterEXP = " ( (DataItem.getMember('getShortFormattedStartDate').Value.indexOf('"+mes+"')==0) && (DataItem.getMember('getShortFormattedStartDate').Value.indexOf('"+anio+"')==6))";
        GridEvents.filter(filterEXP);
        GridEvents.set_currentPageIndex(0);
           GridEvents.render();
            showEmptyText(GridEvents.get_recordCount());
           filterEXP="";
    }
   
   function dateSearch(mFrom, dFrom, yFrom, mTo, dTo, yTo)
   {
   
    var ddFromMonth=document.getElementById(mFrom);
    var ddFromDay=document.getElementById(dFrom);
    var ddFromYear=document.getElementById(yFrom);
   
    var ddToMonth=document.getElementById(mTo);
    var ddToDay=document.getElementById(dTo);
    var ddToYear=document.getElementById(yTo);
   
   var dateFromStr = ddFromMonth[ddFromMonth.selectedIndex].value+"/"+ddFromDay[ddFromDay.selectedIndex].value+"/"+ddFromYear[ddFromYear.selectedIndex].value;
   var dateToStr = ddToMonth[ddToMonth.selectedIndex].value+"/"+ddToDay[ddToDay.selectedIndex].value+"/"+ddToYear[ddToYear.selectedIndex].value;
   
    var fromDate =new Date(dateFromStr); 
    var toDate = new Date(dateToStr); 
   
    filterEXP="((new Date(DataItem.getMember('startDate').Value)>= new Date( "+fromDate.getTime()+")) && (new Date(DataItem.getMember('startDate').Value)< new Date( "+toDate.getTime()+")))";
   
   
    GridEvents.filter(filterEXP);
    GridEvents.render();
    showEmptyText(GridEvents.get_recordCount());
  
    filterEXP="";
   }   
        
        
    function showDateSearch()
    {
    if (!searchOpened)
        {
        GridEvents.set_pageSize(12);
        GridEvents.filter("1==1");
        GridEvents.render();
        searchOpened=true;
        }
        else
        {
        //Reformateo la grilla
        GridEvents.set_pageSize(5);
        GridEvents.filter("1==1");
        GridEvents.render(); 
        searchOpened=false;
        }
    }
    
    function gridSelect(sender, eventArgs)
    {
     eventArgs.set_cancel(true);
    }
    

    





// JScript File
var calendarFromOpened = false;
var calendarToOpened = false;

      function PickerFrom_OnDateChange(sender, eventArgs)
      {
        var fromDate = PickerFrom.getSelectedDate();
        var toDate = PickerTo.getSelectedDate();
        CalendarFrom.setSelectedDate(fromDate);
        if (fromDate > toDate)
        {
          PickerTo.setSelectedDate(fromDate);
          CalendarTo.setSelectedDate(fromDate);
        }
      }
      function PickerTo_OnDateChange(sender, eventArgs)
      {
        var fromDate = PickerFrom.getSelectedDate();
        var toDate = PickerTo.getSelectedDate();
        CalendarTo.setSelectedDate(toDate);
        if (fromDate > toDate)
        {
          PickerFrom.setSelectedDate(toDate);
          CalendarFrom.setSelectedDate(toDate);
        }
      }
      function ButtonFrom_OnClick(idM, idD, idY)
      {
//        if (calendarFromOpened)
//        {
//          CalendarFrom.hide();
//          calendarFromOpened=false;
//        }
//        else
//        {
          var ddFromMonth=document.getElementById(idM);
          var ddFromDay=document.getElementById(idD);
          var ddFromYear=document.getElementById(idY);
          
          var dateStr = ddFromMonth[ddFromMonth.selectedIndex].value+"/"+ddFromDay[ddFromDay.selectedIndex].value+"/"+ddFromYear[ddFromYear.selectedIndex].value;
          
          var date = new Date(dateStr);
         
          CalendarFrom.setSelectedDate(date);
          CalendarFrom.show();
          calendarFromOpened=true;
 //       }
      }
      function ButtonTo_OnClick(idM, idD, idY)
      {
//        if (calendarToOpened)
//        {
//          CalendarTo.hide();
//          calendarToOpened=false;
//          alert("abierto");
//        }
//        else
//        {
          var ddToMonth=document.getElementById(idM);
          var ddToDay=document.getElementById(idD);
          var ddToYear=document.getElementById(idY);
          
          var dateStr = ddToMonth[ddToMonth.selectedIndex].value+"/"+ddToDay[ddToDay.selectedIndex].value+"/"+ddToYear[ddToYear.selectedIndex].value;
          
          var date = new Date(dateStr);
          CalendarTo.setSelectedDate(date);
          CalendarTo.show();
          calendarToOpened=true;
//        }
      }
      function ButtonFrom_OnMouseUp()
      {
        if (CalendarFrom.get_popUpShowing())
        {
          event.cancelBubble=true;
          event.returnValue=false;
          return false;
        }
        else
        {
          return true;
        }
      }
      function ButtonTo_OnMouseUp(event)
      {
        if (CalendarTo.get_popUpShowing())
        {
          event.cancelBubble=true;
          event.returnValue=false;
          return false;
        }
        else
        {
          return true;
        }
      }

// ====================================================================
//       URLEncode and URLDecode functions
//
// Copyright Albion Research Ltd. 2002
// http://www.albionresearch.com/
//
// You may copy these functions providing that 
// (a) you leave this copyright notice intact, and 
// (b) if you use these functions on a publicly accessible
//     web site you include a credit somewhere on the web site 
//     with a link back to http://www.albionresearch.com/
//
// If you find or fix any bugs, please let us know at albionresearch.com
//
// SpecialThanks to Neelesh Thakur for being the first to
// report a bug in URLDecode() - now fixed 2003-02-19.
// And thanks to everyone else who has provided comments and suggestions.
// ====================================================================
function URLEncode(url)
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var plaintext = url;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert( "Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for


	return encoded;
};

function URLDecode(url)
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var encoded = url;
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while

   return plaintext;
};

 /* Client-side access to querystring name=value pairs
    Version 1.3
    28 May 2008
	
    License (Simplified BSD):
    http://adamv.com/dev/javascript/qslicense.txt
    */
    function Querystring(qs) { // optionally pass a querystring to parse
	    this.params = {};
    	
	    if (qs == null) qs = location.search.substring(1, location.search.length);
	    if (qs.length == 0) return;

    // Turn <plus> back to <space>
    // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	    qs = qs.replace(/\+/g, ' ');
	    var args = qs.split('&'); // parse out name/value pairs separated via &
    	
    // split out each name=value pair
	    for (var i = 0; i < args.length; i++) {
		    var pair = args[i].split('=');
		    var name = decodeURIComponent(pair[0]);
    		
		    var value = (pair.length==2)
			    ? decodeURIComponent(pair[1])
			    : name;
    		
		    this.params[name] = value;
	    }
    }

    Querystring.prototype.get = function(key, default_) {
	    var value = this.params[key];
	    return (value != null) ? value : default_;
    }

    Querystring.prototype.contains = function(key) {
	    var value = this.params[key];
	    return (value != null);
    }
