﻿//Requiere JQuery;

function Utilities(){};

//---------------------------
//Coloca un border a un control,
//Param id: id del elemento al que se le aplicara el border
//Param color: color border, del elemento
//---------------------------


Utilities.prototype.setColorBorder = function (id,color)
{
	var result = false;	
	   var obj = $("#"+id);

	if (obj != null) {
		obj.css("borderColor",color);// style.borderColor = color;
		result= true;
	}       	
	return result;
}
//---------------------------
//Muestra el mensaje de error en el elemento html que concuerde en ID con la 
//variable contentErrorID.
//regresa true si le coloco el error y false si no se pudo mostrar.
//---------------------------
Utilities.prototype.RenderError = function(contentErrorID,messageID, messageText)
{
    var result = false;
	try
	{		
		if (contentErrorID.length > 0 &&  messageID.length > 0 && arguments.length==3) 
		{									
			var containText = $("#"+messageID).html();
			var newLI = document.createElement("LI");						
			
			newLI.innerHTML=messageText;
			$("#"+messageID).append(newLI);	
						
			$("#"+contentErrorID).css("display","block");
			result = true;
		}	
		else if(contentErrorID.length>0 && arguments.length==4 && messageID.length>=0)
		{
			$("#"+messageID).html("");
			$("#"+contentErrorID).css("display","none");			
		}
	}
	catch(e){alert(e);}	
	return result;
} 


//---------------------------
//<Summary>
//  Verifica si la lista de campos cumple o no con el formato
//  especificado. Y coloca el mensaje de error correspondiente.
//</Summary>
//<Param name='params'></Param>
//---------------------------
Utilities.prototype.CheckGeneralFormat= function(params)
{
	var result = true;
	var flagRegExp;
	try{		
		if(params!=null){
			var title = new String();
			var messages = new String();
			var flagError = true;			
			
			for(var id=0; id<params.ids.length;id++){
				if(params.ids[id].idCtrl!=null && params.ids[id].divError!=null && 
				params.ids[id].messageID!=null && params.ids[id].RegularExp!=null)
				{					
					var objborder;					
					var obj = $("#"+params.ids[id].idCtrl);
					
					if(obj!=null)
					{
						var validate = obj.val().match(params.ids[id].RegularExp);					    	
						
						if (validate==null || validate ==false)// || validate == params.ids[id].IsEmpty) {
						{
						    flagRegExp=false;
						    
                            if(params.ids[id].messageID.length>0 || params.ids[id].messageID!=null)
                            {
                                var ulError = $("#"+params.ids[id].messageID);
                                if(flagError)
                                {
                                    ulError.html("");
									flagError=false;
                                }
                                if(ulError!= 'undefined' || ulError!=null)
                                {
									//alert(params.ids[id].CanShowThisMessage);
                                    var isError = Utilities.prototype.RenderError(params.ids[id].divError,params.ids[id].messageID,params.messageText); //myTrips.RenderError(params.ids[id].divError,params.ids[id].messageID,params.ids[id].messageText);
                                    if(isError) 
                                    { 
                                        $("#"+params.ids[id].divError).css("display","block"); 
                                        Utilities.prototype.setColorBorder(params.ids[id].idCtrl,"#FDD341");                                       
                                    }
                                    else
                                    {                                         
                                        Utilities.prototype.setColorBorder(params.ids[id].idCtrl,'#FDD341');								
                                    }
                                }
                            }							
							else 
				            {
				                Utilities.prototype.setColorBorder(params.ids[id].idCtrl,'');								
				            }	
							flagRegExp =false;	
						}
						else
						{							
							Utilities.prototype.setColorBorder(params.ids[id].idCtrl,'');							
						}
					}
					else 
					{
					    Utilities.prototype.setColorBorder(params.ids[id].idCtrl,'');
					    flagRegExp = false;
					}					
				}
				result = flagRegExp;				
			}			
		}
	}
	catch(e){ alert(e);}	
	return result;
}


//---------------------------
//<Summary>Verifica si la lista de campos cumple o no con el formato especificado.</Summary>
//<Param name='params'>Nombre de la estructura Json que contiene las reglas de validación de los campos</Param>
//---------------------------
Utilities.prototype.IsValidGeneralFormat= function(params)
{
	var result = true;
	var flagRegExp;
	try{		
		if(params!=null){
			var title = new String();
			var messages = new String();
			var flagError = true;			
			
			for(var id=0; id<params.ids.length;id++){
				if(params.ids[id].idCtrl!=null && params.ids[id].divError!=null && 
				params.ids[id].messageID!=null && params.ids[id].RegularExp!=null)
				{					
					var objborder;					
					var obj = $("#"+params.ids[id].idCtrl);
					
					if(obj!=null)
					{
						var validate = obj.val().match(params.ids[id].RegularExp);					    	
						
						if (validate==null || validate ==false)
						{
						    flagRegExp=false;						    
                            var ulError = $("#"+params.ids[id].messageID);
                            
                            if(flagError)
                            {
                                ulError.html("");
								flagError=false;
                            }
                            if(arguments.length>=2) flagRegExp=Utilities.prototype.setColorBorder(params.ids[id].idCtrl,arguments[1]);
                            
							flagRegExp =false;	
						}
						else
						{							
							Utilities.prototype.setColorBorder(params.ids[id].idCtrl,'');							
						}
					}
					else 
					{
					    Utilities.prototype.setColorBorder(params.ids[id].idCtrl,'');
					    flagRegExp = false;
					}					
				}
				result = flagRegExp;				
			}			
		}
	}
	catch(e){ alert(e); }	
	return result;
}

//<Summary>
// Utilizada para la renderización de objetos sobre las lista desplegables
// y listas en el explorador internet explorer 6.
//</Summary>
//<Param name='upTagID'>id del objeto html que tiene que sobreponer sobre la lista desplegable</Param>
//<Param name='divToCreate'>nombre del div que se creara para contener la lista desplegable a ocultar</Param>
//<Param name='selectID'>id de la lista desplegable que se ocultada</Param>
//<Param name='apply'>indica si se debe aplicar un z-index menor cuando se utiliza ie7</Param>
Utilities.prototype.SetIE6Iframe = function(upTagID, divToCreate, selectID, apply)
{
	if($.browser.msie && /6.0/.test(navigator.userAgent))
	{
		Utilities.prototype.SubSetIE6Iframe(upTagID, divToCreate, selectID);
		$('#'+selectID).css('z-index','-1');
	}
	else if($.browser.msie && /7.0/.test(navigator.userAgent) && apply )
	{		
		$('#'+selectID).css('z-index','-1');
	}
	else if($.browser.msie && /8.0/.test(navigator.userAgent) && apply ) {}
}
//<Summary>
// Utilizada para la renderización de objetos sobre las lista desplegables
// y listas en el explorador internet explorer 6 y 7
//</Summary>
Utilities.prototype.SubSetIE6Iframe = function(upTagID, divToCreate, selectID)
{
    var div = document.createElement("DIV");    
    var attr = document.createAttribute('id');    
    attr.nodeValue = divToCreate;
    div.setAttributeNode(attr);    
    attr = document.createAttribute('class');
    attr.nodeValue = 'wrapper'; 
    div.setAttributeNode(attr);
    document.getElementById(selectID).appendChild(div);	
    $('#'+upTagID).bgiframe();
}

