﻿//Framework de funciones propias
var basepath = "/";

//oculta o muestra un div segun el id
function hide(id,effect) {
	switch(effect){
	    case "slide":
	        Effect.SlideUp(id,{duration:0.5});
	        break;
	    case "fade":
	        Effect.Fade(id,{duration:0.5});
	        break;
	    case "blind":
	        Effect.BlindUp(id,{duration:0.5});
	        break;    
	    default:
	        $(id).style.display = "none";
	        break;
    }
}

function show(id,effect,time) {
	switch(effect){
	    case "slide":
	        Effect.SlideDown(id,{duration:0.5});
	        break;
	    case "fade":
	        Effect.Appear(id,{duration:0.5});
	        break;
	    case "blind":
	        Effect.BlindDown(id,{duration:0.5});
	        break;    
	    default:
	        $(id).style.display = "block";
	        break;
    }
}


//////////////////////////////////////////////////////////////////////////
//funciones genericas para el manejo de las listas
////////////////////////////////////////////////////////////////////////// 
function FindInList(addedId,addedDetail,json){
    for(var i=0;i<json.length;i++){
        if((json[i].id == addedId)||(json[i].detail.replace(/\s/g,'').toLowerCase() == addedDetail.replace(/\s/g,'').toLowerCase())){ return true; }
    } 
    return false;   
}
function AddToList(addedId,addedDetail,json,grid,button,deleteFunction){
    var table = '<table>';
    
    for(var i=0;i<json.length;i++){
        table += '<tr><td>'+json[i].detail+'</td><td><img alt="X" src="'+basepath+'images/delete.gif" onclick="'+deleteFunction+'(\''+i+'\')" style="cursor:pointer" /></td></tr>';
    }    
  
    json.push({id:addedId,detail:addedDetail});
    table += '<tr><td>'+addedDetail+'</td><td><img alt="X" src="'+basepath+'images/delete.gif" onclick="'+deleteFunction+'(\''+i+'\')" style="cursor:pointer" /></td></tr>';
    table +='</table>';
    
    $(grid).innerHTML = table;
    $(button).value = "Add More";
}
function DeleteFromList(pos,json,grid,button,deleteFunction){
    var table = '<table>';
    
    json.splice(pos,1);
    
    for(var i=0;i<json.length;i++){
         table += '<tr><td>'+json[i].detail+'</td><td><img alt="X" src="'+basepath+'images/delete.gif" onclick="'+deleteFunction+'(\''+i+'\')" style="cursor:pointer" /></td></tr>';
    }    
       
    table +='</table>';
    
    $(grid).innerHTML = table;
    if(json.length==0){$(button).value = "Select";}
}
//////////////////////////////////////////////////////////////////////////

//************************************************************************//
// FUNCIONES PARA DROP DOWNS
//************************************************************************//

//Funcion q llena las opciones de el combo de id suministrado
function loadDropDownCombo(cmbID, collection,selectone)
{
    $(cmbID).options.length = 0;
    if(selectone){
    var opcion = new Option(selectone,"");
    $(cmbID).options[$(cmbID).options.length] = opcion;
    }
    for(var i=0;i<collection.length;i++)
    {        
        var item = collection[i];
        
        var opc = new Option(unescape(item.detail), unescape(item.id)); 
        try
        {
            $(cmbID).options[$(cmbID).length] = opc; 
        }
        catch (e){ 
            alert("Error Interno");
        } 
    }
} 

//Funcion q llena las opciones de el combo de id suministrado agrupando
function loadDropDownComboInGroups(cmbID, collection,selectone)
{
    var groupId;
    $(cmbID).innerHTML = "";
    if(selectone){
    var opcion = new Option(selectone,"");
    $(cmbID).options[$(cmbID).options.length] = opcion;
    }
    for(var i=0;i<collection.length;i++)
    {        
        var item = collection[i];
        if(groupId !=  unescape(item.groupId)){
            groupId = item.groupId;
            var group = document.createElement('optgroup');
            group.label = item.groupName;
            
            $(cmbID).appendChild(group);
        }
        var opc = new Option(item.detail, item.id); 
        opc.label = item.detail;//para q se vea la opcion en IE7
        opc.innerHTML = item.detail; //para q se vea la opcion en IE6
        group.appendChild(opc);
    }
} 

//************************************************************************//
// FUNCIONES PARA CHECKBOXES
//************************************************************************//

function loadCheckBoxes(divContainer, collection, selectedValues, eventClick)
{
    var i;
    var chk = "";
    var values = selectedValues.split(',');

    //first remove all existing checkboxes
    while($(divContainer).hasChildNodes()){
        $(divContainer).removeChild($(divContainer).firstChild);
    }

    for(i=0;i<collection.length;i++)
    {
        var item = collection[i];
        var chk = document.createElement("input");
        chk.setAttribute("id",divContainer+item.id);
        chk.setAttribute("name",divContainer+item.id);
        chk.setAttribute("type","checkbox");
        $(divContainer).appendChild(chk);
        chk.setAttribute("onClick",eventClick);
        if(values.indexOf(item.id.toString()) != -1)
        { 
            chk.setAttribute("checked",true);
        }
        
        $(divContainer).appendChild(document.createTextNode(item.detail));
        if(((i+1)>=6) && (((i+1)%6)==0))
        { 
            $(divContainer).appendChild(document.createElement("br"));
        }  
    }
    
}

//************************************************************************//
//  FUNCIONES PARA PARSEAR EL QUERYSTRING
//************************************************************************//
function parseQS(key) {
    hu = window.location.search.substring(1);
    gy = hu.split("&");
    
    for (i=0;i<gy.length;i++) {
        
        ft = gy[i].split("=");
        
        if (ft[0] == key) return ft[1];        
    }
}

//Para parsear querystring de friendly URL's
//function parseFriendlyQS(key) {    
//    var hu = new String();
//    hu = window.location + '';
//    
//    //Obtengo cuantas secciones tengo separadas por -
//    var gy = hu.split("-");
//    secciones = gy.length;
//    
//    for (sec = secciones-1 ; sec >= 0 ; sec--) 
//    {
//        ft = gy[sec];
//        
//        if (ft.split(".").length > 1) {ft = ft.split(".")[0];}
//    
//        if(ft.charAt(0) == key) {return ft.substring(1,ft.length);}
//    }
//}

function parseFriendlyPostQS(url)
{
    url = url + '';
    url = url.split("/");
    var expression = new RegExp("([a-z0-9]+-+[0-9]-+[a-z]+.html)", "gi");
    for(sec = 0; sec <= url.length; sec ++)
    {
        if(expression.test(url[sec]))
        {
            return url[sec];
        }
    }
}

function parseFriendlyQS(url)
{
    url = url + '';
    url = url.split("/");
    var expression = new RegExp("(-+[a-z]+.html)", "gi");
    for(sec = 0; sec <= url.length; sec ++)
    {
        if(expression.test(url[sec]))
        {
            return url[sec];
        }
    }
}

//************************************************************************//
//  FUNCIONES PARA WATERMARK
//************************************************************************//

//var watermarkObj = new Array();
//var watermarkVal = new Array();

function watermark(id, value, setStyle) {
	
	// Obtengo el objeto
	var box = $(id);
	var oldstyle = box.className;
	
	// Si se focusea limpiamos
	box.onfocus = function() {
		if (this.value == value)
		{
		this.value = "";
		this.className = oldstyle;
		}
		
	}
	
	// Autocompletar
	box.onblur = function()
	{
		if (this.value == "") 
		{
		this.value = value;
		this.className = setStyle;
		}
		
	}
	
	// Setea el valor inicial
	if (box.value == "") 
	{
		box.value = value;
		box.className = setStyle;		
	}

	// Se sgregan a arrays => no van en el submit
//	watermarkObj[watermarkObj.length] = id;
//	watermarkVal[watermarkVal.length] = value;
}

//function clearDefaults() {
	
	// funcion para limpiar los campos antes de enviar el formulario											   
//	for (var i = 0; i < watermarkObj.length; i++) {
//		var obj = get(watermarkObj[i]);
//		if (obj.value == watermarkVal[i]) obj.value = "";
//	}

//function setDefaults() {
	
	// funcion para resetear los valores de los controles si estan en blanco, a sus
	// correspondientes watermaks
//	for (var i = 0; i < watermarkObj.length; i++) {
//		var obj = get(watermarkObj[i]);
//		if (obj.value == "")
//		{
//		obj.value = watermarkVal[i];
//		}
//	}
//************************************************************************//
//  FUNCIONES PARA CHEQUEAR MAIL INGRESADO
//************************************************************************//
function checkEmail(str) {
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   return false
	}

    if (str==""){
	    return false
    }
    
    if (str==" "){
	    return false
    }
    
    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	    return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    return false
	 }
	
	 if (str.indexOf(" ")!=-1){
	    return false
	 }
	 
	 return true					
}

//************************************************************************//
//  FUNCIONES PARA CHEQUEAR WEBSITE
//************************************************************************//
function checkWebSite(website)
{
    var regWEB = new RegExp("^(http|https|ftp)\://", "g");
    
    if(!regWEB.test(website))
    {
        website = "http://" + website;
    }
    //alert(website);
    var regular = new RegExp("^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&amp;%\$#\=~])*[^\.\,\)\(\s]$", "g");
    
     if (regular.test(website))
     {
        return true;
     }
     else 
     {
        return false;
     }
}


//************************************************************************//
//  FUNCIONES PARA CHEQUEAR SI UN STRING ES NUMÉRICO
//************************************************************************//
function checkForNumbers(nums)
{
    var regNum = new RegExp("[0-9]", "i");
        
    num = nums.value.split('');
    for(var i=0; i<=num.length; i++)
    {
        if(!regNum.test(num[i]))
        {   
            nums.value = nums.value.replace(num[i], '');
        }
    }
}

function isNumeric(sText)
{
  var ValidChars = "0123456789.";
  var IsNumber=true;
  var Char;
 
  for (i = 0; i < sText.length && IsNumber == true; i++){ 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) IsNumber = false;         
  }
      
   return IsNumber;   
}


//************************************************************************//
//  FUNCIONES PARA CALCULAR EL PROMEDIO
//************************************************************************//
function getAverage()
{
   var items = getAverage.arguments.length
   var sum = 0
   for (i = 0; i < items;i++)
   {
      sum += getAverage.arguments[i]
   }
   return Math.round(sum/items)
}

/****************************************************************************/
// Seteo eventos de la página
//if(window.attachEvent){ window.attachEvent("onload", pageLoad); }
//else if (window.addEventListener){ window.addEventListener("load", pageLoad, false); }
/**************************************************************************/

//************************************************************************//
//  FUNCIONES PARA CREAR TOOLTIPS
//************************************************************************//

//ToolTip con RollOver
function CrearTooltip(tip_id, tip_title, tip_subtitle, tip_cssclass)
{
    var tip_id, tip_title, tip_subtitle, tip_cssclass;
    if(tip_cssclass == '')
    {
        tip_cssclass = 'protoClassic';
    }
    new Tip(tip_id, tip_subtitle, {title : tip_title, className: tip_cssclass, showOn: 'mousemove', hideOn: 'mouseout'});
}

//ToolTip con Boton
function CrearTooltip_close(tip_id, tip_title, tip_subtitle, tip_cssclass)
{
    var tip_id, tip_title, tip_subtitle, tip_cssclass;
    if(tip_cssclass == '')
    {
        tip_cssclass = 'protoClassic';
    }
    
    new Tip(tip_id, tip_subtitle, {title : tip_title, className: tip_cssclass, showOn: 'click', hideOn: {element: 'closeButton', event: 'click' }});
}
/****************************** FIN TOOLTIPS ********************************/

//************************************************************************//
//  FUNCIONES PARA STRINGS                                                //
//************************************************************************//
// Voy disminuyendo la cantidad de caracteres disponibles por ingresar, 
// cuando la cantidad es mayor al max, no le deja escribir mas.

function charactersLeft(obj, id, max){
    var aux;
    
    if(escape(obj.value).length > max){
        $(id).style.color = 'red';
        //aux = obj.value;
        obj.value = obj.value.substring(0, max);
        $(id).value = 0;
    }else{
        $(id).style.color = '#086709';
    }   
            
    $(id).value = (max - escape(obj.value).length) + " characters remaining.";
}

function removeBR(str)
{
    return str.replace(/(<br\/>)/g,'\n');
}

//Funcion para limpiar todos los espacios
function trim(str)
{
    s = str.replace(/^(\s)*/, '');
    s = s.replace(/(\s)*$/, '');
    return s;
}

//Función para eliminar tags HTML, http://, www y etc.
//var re = new RegExp("<[^>]+>", "g");

function deleteInvalidTags(str)
{   
    var strReg = new RegExp("[@]|(http://)|(https://)|(ftp://)|(www.)", "g"); //--> Detecta dir URL  
    str = str.stripTags();//--> Devuelve texto sin tags html
    str = str.replace(strReg, '');
    return str;
}

function convertToIsapi(string)
{
    return string.replace(new RegExp("[^a-zA-Z0-9]", "g"),"-");
}


//************************************************************************//
//  FUNCION PARA VALIDAR STRINGS                                          //
//************************************************************************//

function CheckPalabras(words)
{    
    var arrContent;
    arrContent = words.split(/[\s\n]/);
    
    //all sobre cualquier array itera sobre cada elemento probando la funcion y solo retorna true si ninguna llamada a la funcion retorna false
    //la primera llamada q retorna false corta la ejecucion y retorna false
    var result = arrContent.all(
        function(pal){
            //alert(pal);    
            if(pal.length > 50)
            {
                alert(pal+" excedes allowed length, max is 50 characters");
                return false;
            }
            else
            {
                //regular expression para validar palabras no permitidas
                var reg_exp = /(<a)|(<b>)|(<u>)|(<i>)|(<html)|(<body)|(<img)|(<div)/;
                if(reg_exp.test(pal))
                { 
                    alert("HTML tags are not allowed"); 
                    return false; 
                }
                else { return true; }
            } 
        }
    );
    return result;
}

//************************************************************************
//Parsea url de los videos de Youtube y devuelve el id del video
//************************************************************************
function parseU2Burl(url, key)
{
    var regUrl = new RegExp("([a-z0-9]+\.youtube\.)", "gi");
    
    if(regUrl.test(url))
    {
        var hu = new String();
        var url_hlp = url.split("?");
        hu = url_hlp[1];
        //alert(hu);
        gy = hu.split("&");
        
        for (i=0;i<gy.length;i++) {
            
            ft = gy[i].split("=");
            
            if (ft[0] == key) return ft[1];        
        }
    }
    else
    {
        return url;
    }
}

//************************************************************************//
//  FUNCIONES PARA CHEQUEAR FECHA VALIDA
//************************************************************************//
function checkValidDate(date)
{

    if(date.search(/(((0?[13578]|10|12)([-.\/])(0?[1-9]|[12][0-9]|3[01])([-.\/])(\d{4}))|((0?[469]|11)([-.\/])(0?[1-9]|[12][0-9]|30)([-.\/])(\d{4}))|((0?2)([-.\/])(0?[1-9]|1[0-9]|2[0-8])([-.\/])(\d{4}))|((0?2)(\.|-|\/)(29)([-.\/])([02468][048]00))|((0?2)([-.\/])(29)([-.\/])([13579][26]00))|((0?2)([-.\/])(29)([-.\/])([0-9][0-9][0][48]))|((0?2)([-.\/])(29)([-.\/])([0-9][0-9][2468][048]))|((0?2)([-.\/])(29)([-.\/])([0-9][0-9][13579][26])))/i)==0)
    {
        return true;
    }
    else
    {
        return false;
    }
    
}
