function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; 
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; 
	n=n.substring(0,p);
  }	
  
  if ( !(x=d[n]) && d.all) 
  	 x=d.all[n]; 
  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

// window pop up function
function popWindow(url, myWidth, myHeight) {
	var winWidth, winHeight;
	if (myWidth) {
		winWidth = myWidth;
	} else {
		winWidth = 478;
	}
	
	if (myHeight) {
		winHeight = myHeight;
	} else {
		winHeight = 480;
	}
	
	var optionListing = "HEIGHT=" + winHeight + ",WIDTH=" + winWidth + ",innerHeight=480,innerWidth=462,channelmode=0,dependent=0,directories=0,fullscreen=0,location=0,menubar=0,resizable=1,scrollbars=1,status=0,toolbar=0,screenX=10,screenY=20"
	remote = window.open(url,"sb_popup",optionListing);
	if (remote != null)  {
		remote.focus();
	} // end if
}

function popWindowLarge(url) {
	var optionListing = "HEIGHT=500,WIDTH=660,innerHeight=500,innerWidth=660,channelmode=0,dependent=0,directories=0,fullscreen=0,location=0,menubar=0,resizable=1,scrollbars=1,status=0,toolbar=0,screenX=10,screenY=20"
	remote = window.open(url,"sb_popup",optionListing);
	if (remote != null)  {
		remote.focus();
	} // end if
}

// window pop up function
function popWindowFull(url, myWidth, myHeight) {
	var winWidth, winHeight;
	if (myWidth) {
		winWidth = myWidth;
	} else {
		winWidth = 750;
	}
	
	if (myHeight) {
		winHeight = myHeight;
	} else {
		winHeight = 550;
	}
	
	var optionListing = "HEIGHT=" + winHeight + ",WIDTH=" + winWidth + ",innerHeight="+(winHeight-2)+",innerWidth="+(winWidth-2)+",channelmode=0,dependent=0,directories=0,fullscreen=0,location=1,menubar=1,resizable=1,scrollbars=1,status=1,toolbar=1,screenX=10,screenY=20"
	remote = window.open(url,"_blank",optionListing);
	if (remote != null)  {
		remote.focus();
	} // end if
}

//did it by winit 20071220
//change formatstyle EU to Spanish.
// mm dd, yyyy -> dd/mm/yyyy
function getUsToSpanishDate(strDate){
		var strSeparatorArray = new Array("-"," ","/",".");
		for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
			if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
				strDateArray = strDate.split(strSeparatorArray[intElementNr]);
				if (strDateArray.length != 3) {
					err = 1;
					return false;
				}
				else {
					strDay = strDateArray[1].substring(0,2);
					strMonth = strDateArray[0];
					strYear = strDateArray[2];
				}
			}
		}
		return strDay + "/" + getMonth(strMonth) + "/" + strYear;
}

//Obtain number month 
function getMonth(strMonth){

	var strMonthArray = new Array(12);
	strMonthArray[0] = "Jan";
	strMonthArray[1] = "Feb";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Apr";
	strMonthArray[4] = "May";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Aug";
	strMonthArray[8] = "Sep";
	strMonthArray[9] = "Oct";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dec";
	
	for (i = 0;i<12;i++) {
		if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
			return i+1;
		}
	}		
}
//end
function sb_validateForm() { //v1.0 adaptada por Gustavo Mateos(gmateos@amadeusnet.com.ar)
  	var i,p,q,nm,test,num,min,max,errors='',args=sb_validateForm.arguments;
  	for (i=0; i<(args.length-2); i+=3) { 
	
		test=args[i+2]; 
		val=MM_findObj(args[i]);
		
		if (val) { 
	
			var temp_nm=val.name;
			temp_nm=args[i];
			nm = eval(temp_nm+'_label'); 
			
			// GET VALUES FOR RADIO BUTTONS AND CHECKBOXES
			if (val.length > 0 && (val.type!="select-one")){
				if ((val[0].type == "radio") || (val[0].type == "checkbox")) {
					theValue = "";
					for (j=0; j<val.length; j++) {
						if (val[j].checked) {theValue = val[j].value;}
					}
					val = theValue;
				}
			// GET VALUES FOR EVERYTHING ELSE
			} else {
				val = val.value;
			}
			
			if (val != "") {
    	  		if (test.indexOf('isEmail')!=-1) { 
					p=val.indexOf('@');
					q=val.lastIndexOf('.');
					if (p<1 || q>=(val.length-2) || ((p+1) >= q)) {
						errors+='- '+nm+' '+emailError+'\n';
     				}
				
				} else if (test.indexOf('isNotSpecial')!=-1) { 
					sPattern = /[^\w .,'"&`-]/;
					if (val.search(sPattern) != -1) {
						errors+='- '+nm+' '+specialCharError+'\n';
     				}
				} else if (test.indexOf('isNoSpaceNotSpecial')!=-1) { 
					sPattern = /[^\w]/;
					if (val.search(sPattern) != -1) {
						errors+='- '+nm+' '+spaceSpecialCharError+'\n';
     				}
				} else if (test.indexOf('isPhone')!=-1) { 
					sPattern = /[^\d()\. -]/;
					if (val.search(sPattern) != -1) {
						errors+='- '+nm+' '+numericError+'\n';
                                        }
				} else if (test.indexOf('isTime')!=-1) { 
					if ( !chktime(val) ) {
						errors+='- '+nm+' '+invalidTimeError+'\n';
                                        }
				} else if (test.indexOf('isDate')!=-1) { 
					if ( !chkdate(val) ) {
						errors+='- '+nm+' '+invalidDateError+'\n';
     				}
					// in Date Range	(ej:  inDateRange(31/08/2004,31/12/2005)
				} else if (test.indexOf('inDateRange(') != -1) { 
						//add by winit 20071220
						var hoy;
						//end
						p=test.indexOf(',');
						p1=test.indexOf(',',p+1);
        	  			//SOLUCION AL FORMATO NORTE AMERICANO WINIT 20071220
        	  			if (p1 > -1) {
	        	  			min=getUsToSpanishDate(test.substring(12,p1)); 
							p2=test.indexOf(')');
	          				max =getUsToSpanishDate(test.substring(p1+1,p2));
	          				if (val.indexOf(',') > -1){
	          					val = getUsToSpanishDate(val);
	          				}
	          				hoy =val;
	          				//max=test.substring(p1+1,p2);        	  				
        	  			}else{
	        	  			min=test.substring(12,p); 
							p2=test.indexOf(')');
	          				max=test.substring(p+1,p2);
	          				hoy = val;
        	  			}
         				if (compararFechas(hoy,max) == 1)  // fecha > max
						   errors+='- '+nm+' '+notInValidDateRange+'\n';
         				if (compararFechas(hoy,min) == -1)  // fecha < min
						   errors+='- '+nm+' '+notInValidDateRange+'\n';
				// isEqual - permite comparar igualdad con otro campo del form
				//  Sint?xis: isEqual(campo)
				} else if (test.indexOf('isEqual(') != -1) { 
						p=test.indexOf(')');
        	  			var otherFieldName=test.substring(8,p); 
						var otherField=MM_findObj(otherFieldName);
          				var otherValue=otherField.value;
         				if (val != otherValue) {
						   	otherFieldLabel = eval(otherFieldName+'_label'); 						
         					errors+='- '+nm+notEqualToField+' ' +otherFieldLabel+'.\n';
    					}
				} else if ((test!='R') && (test.indexOf('Rif')==-1)) { 
					num = parseFloat(val);
       				if (isNaN(val)) {
       					errors+='- '+nm+' '+numericError+'\n';
	   				}
					
					// date - day
					if (test.indexOf('isDay') != -1) { 
        	  			min=1; 
          				max=31;
         				if (num<min || max<num) {
         					errors+='- '+nm+' '+dayError+'\n';
    					}
					// date - month
					} else if (test.indexOf('isMonth') != -1) { 
        	  			min=1; 
          				max=12;
         				if (num<min || max<num) {
         					errors+='- '+nm+' '+monthError+'\n';
    					}
					// date - year
					} else if (test.indexOf('isBirthYear') != -1) { 
        	  			min=1900; 
          				max=2000;
         				if (num<min || max<num) {
         					errors+='- '+nm+' '+birthYearError+'\n';
    					}	
					// in Range	
					} else if (test.indexOf('inRange') != -1) { 
						p=test.indexOf(':');
        	  			min=test.substring(8,p); 
          				max=test.substring(p+1);
         				if (num<min || max<num) {
         					errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    					}
					} // end if in range
    			} // end if 
			// conditional validation.  only validate if specified field has specified value
			} else if(test.indexOf('Rif')==0) { 
			
				p=test.indexOf(':');
				conditionItem=test.substring(3,p); 
				conditionValue=test.substring(p+1); // value of conditional form field that enables validation
				conditionElse = "";
				p=conditionValue.indexOf(':');
				
				if (p != -1) {
					conditionElse = conditionValue.substring(p+1);
					conditionValue = conditionValue.substring(0,p); 
				}
				
				conditionItem=MM_findObj(conditionItem);
				// GET VALUES FOR RADIO BUTTONS AND CHECKBOXES
				if (conditionItem.length > 0 && (conditionItem.type!="select-one")){
					if ((conditionItem[0].type == "radio") || (conditionItem[0].type == "checkbox")) {
						theValue = "";
						for (j=0; j<conditionItem.length; j++) {
							if (conditionItem[j].checked) {theValue = conditionItem[j].value;}
						}
						conditionItem = theValue;
					}
				} else { // GET VALUES FOR EVERYTHING ELSE
					conditionItem = conditionItem.value;
				}
				
				// get value of "Else" field if one is specified.  if this field is not empty, the current field can be empty
				if (conditionElse != "") {
					conditionElse=MM_findObj(conditionElse);
					
					// GET VALUES FOR RADIO BUTTONS AND CHECKBOXES
					if (conditionElse.length > 0 && (conditionElse.type!="select-one")){
						if ((conditionElse[0].type == "radio") || (conditionElse[0].type == "checkbox")) {
							theValue = "";
							for (j=0; j<conditionElse.length; j++) {
								if (conditionElse[j].checked) {theValue = conditionElse[j].value;}
							}
							conditionElse = theValue;
						}
					} else { // GET VALUES FOR EVERYTHING ELSE
						conditionElse = conditionElse.value;
					}
				}
						
				if ((conditionItem == conditionValue) && (conditionElse == "")) {
					errors += '- '+nm+' '+nullError+'.\n'; 
				}
    		} else if ((test.charAt(0) == 'R') && (test != 'RisNotSpecial')) {
    			errors += '- '+nm+' '+nullError+'.\n'; 
			} // end if value != ""
		} // end if val
  	} // end for loop
  	if (errors) {
  		alert(validationMessage+'\n'+errors);
	}
	
  document.MM_returnValue = (errors == '');
}



// Returns the entire query string passed to the current page.
function getQueryString(){ 
        zquery = parent.location.search; 
        zquery = zquery.substring(1,zquery.length); 
        return (zquery); 
} 

// Parses a query string 'queryString' for the variable 'queryName'
// and returns the value associated with that name.
function parseQuery (queryString, queryName) {
	startIndex = queryString.indexOf(queryName);
	if (startIndex == -1) {
		return "";
	}
	
	startIndex = queryString.indexOf("=", startIndex) + 1;
	endIndex = queryString.indexOf("&", startIndex);
	if (endIndex == -1) {
		endIndex = queryString.length;
	}
	return queryString.substring(startIndex, endIndex);
}

function jumpPage(url) {
	if ((url != "none") && (url != "")) {
		// Escape the value of the parameter
		if (url.indexOf("=") > -1) {
			paramName = url.substring(0, url.indexOf("=")+1);
			varName = escape(url.substring(url.indexOf("=") + 1, url.length));
			url =  paramName + varName;
		}
		location.href=url;
	}
}

function changeIframe (baseUrl, defaultPage, iframeNameParam) {
	var iframeName = "externalContent";
	if ((typeof iframeNameParam != 'undefined') && (iframeNameParam != "")) {
		iframeName = iframeNameParam;
	}
	
	if (baseUrl == "") {
		baseUrl = location.host;
	} 
	
	var queryString = getQueryString();
	var queryName = "subpage";
	var subpage;
	var startIndex = queryString.indexOf(queryName);
	if (startIndex == -1) {
		subpage = "";
	} else {	
		startIndex = queryString.indexOf("=", startIndex) + 1;
		endIndex = queryString.length;
		subpage = queryString.substring(startIndex, endIndex);
	}				
	
	//alert("subpage = " + subpage);
	if (subpage == "") {
		subpage = defaultPage;
	}
	
	iFrameObj = getObj(iframeName);
	iFrameObj.src= "http://" + baseUrl + subpage;
}

// protects all links on the page, except those with certain specified styles
function protectLinks(loggedIn) {
	if (!loggedIn) {
		linkCount = document.links.length;
		for (i=0; i < linkCount; i++) {
			currClass = document.links[i].className;
		 	if ((currClass != "popupDivButton") && (currClass != "popupDivLink") && (currClass != "pageFooter") && (currClass != "pageHeader") && (currClass != "pageTopNav") && (currClass != "accountLink") && (currClass != "footerLink") && (currClass != "footerUtilityLink") && (currClass != "headerAudience") && (currClass != "pageUtilitesLink") && (currClass != "popupFooterLink") && (currClass != "linkNotProtected") && (currClass != "accountMastheadLink")) {
				if (mBrowser.isNS && !mBrowser.isNS4) {
					document.links[i].addEventListener ("click", popupDiv, true);
				} else if (mBrowser.isIE){
					document.links[i].onclick = function() {return popupDiv();};
				}
			}
		}
	} 
} 
 
// function to pop a Div and block the link that was clicked
// currently only supports IE, NS6+, and Mozilla 
function popupDiv (e) {
	divId = "signinDiv";
	divObj = MM_findObj(divId);

	if (mBrowser.isNS && !mBrowser.isNS4) {
		positionedElement = e.target;
		xPosition = positionedElement.offsetLeft;
		yPosition = positionedElement.offsetTop;
		divObj.style.top = e.pageY;
		divObj.style.left = e.pageX + 10;
		e.cancelBubble = true;
		e.preventDefault();
	} else if (mBrowser.isIE){
		divObj.style.left = event.clientX + document.body.scrollLeft + 10;
		divObj.style.top = event.clientY + document.body.scrollTop;
	}
	
	MM_showHideLayers(divId, '', 'show');
	return false;
 }

function Trim(s) {
	while (s.substring(0,1) == ' ') {
		s = s.substring(1,s.length);
	}
	while (s.substring(s.length-1,s.length) == ' ') {
		s = s.substring(0,s.length-1);
	}
	return s;
}
 
// Writes out the subsection navigation
function sb_writeSubsectionNav () {
	var sHTML = "";
	var currentLocation = location.href;
	currentLocation = currentLocation.slice(currentLocation.lastIndexOf("/")+1);
	currentSection = -1;
	currentIndex = -1;
	
	//alert("currentIndex = "+currentIndex);
	
	for (i=0; (i<subsection.length) && (currentSection < 0); i++) {
		for (j=0; (j<subsection[i].length) && (currentIndex < 0); j++) {
			if (subsection[i][j].indexOf(currentLocation) != -1) {
				//alert ("index found at "+j+" - "+i);
				currentIndex = j;
				currentSection = i;
			}
		}
	}
	
	sHTML += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
	sHTML += "<tr>";
	sHTML += "<td><img src=\"/img/s.gif\" width=\"1\" height=\"10\" alt=\"\"/></td>";
	sHTML += "<td  align=\"center\" valign=\"middle\" class=\"prevNext\" height=\"10\" nowrap>";
	
	if ((currentIndex-1) < 0) {
		sHTML += "<img src=\"/img/s.gif\" width=\"2\" height=\"1\" alt=\"\" /><span class=\"prevNextArrow\">&lt;</span><img src=\"/img/s.gif\" width=\"5\" height=\"1\" alt=\"\" />" + prevText ;
	} else {
		sHTML += "<img src=\"/img/s.gif\" width=\"2\" height=\"1\" alt=\"\" /><span class=\"prevNextArrow\">&lt;</span><img src=\"/img/s.gif\" width=\"5\" height=\"1\" alt=\"\" /><a href=\""  + subsection[currentSection][currentIndex-1] + "\" class=\"prevNextLink\">" + prevText + "</a>";
	}
	
	if (subsectionIndex == "") {
		sHTML += "<img src=\"/img/s.gif\" width=\"4\" height=\"1\" alt=\"\" />|<img src=\"/img/s.gif\" width=\"5\" height=\"1\" alt=\"\" />";
		sHTML += "Index";
		sHTML += "<img src=\"/img/s.gif\" width=\"4\" height=\"1\" alt=\"\" />|<img src=\"/img/s.gif\" width=\"5\" height=\"1\" alt=\"\" />";
	} else {
		sHTML += "<img src=\"/img/s.gif\" width=\"4\" height=\"1\" alt=\"\" />|<img src=\"/img/s.gif\" width=\"5\" height=\"1\" alt=\"\" />";
		sHTML += "<a href=\"" + subsectionIndex + "\" class=\"prevNextLink\">" + indexText + "</a>";
		sHTML += "<img src=\"/img/s.gif\" width=\"4\" height=\"1\" alt=\"\" />|<img src=\"/img/s.gif\" width=\"5\" height=\"1\" alt=\"\" />";
	}

	if ( (currentIndex < 0) || (currentIndex > (subsection[currentSection].length - 2)) ) {	
		sHTML += nextText + "<img src=\"/img/s.gif\" width=\"4\" height=\"1\" alt=\"\" /><span class=\"prevNextArrow\">&gt;</span><img src=\"/img/s.gif\" width=\"3\" height=\"1\" alt=\"\" />";
	} else {
		sHTML += "<a href=\"" + subsection[currentSection][currentIndex+1] +  "\" class=\"prevNextLink\">" + nextText + "</a><img src=\"/img/s.gif\" width=\"4\" height=\"1\" alt=\"\" /><span class=\"prevNextArrow\">&gt;</span><img src=\"/img/s.gif\" width=\"3\" height=\"1\" alt=\"\" />";
	}	
	sHTML += "</td>";
	sHTML += "</tr>";
	sHTML += "</table>";

	//alert(sHTML);
	document.write(sHTML);
}

// ............................................................................ 

/* 
Validador de Fechas  
Original:  Mike Welagen (welagenm@hotmail.com) 
*/
function checkdate(objName) {
var datefield = objName;
if (chkdate(objName.value) == false) {
   datefield.select();
   alert(invalidDateError);
   datefield.focus();
   return false;
} else {
  return true;
}
}

//...........................................................................................
// Estas rutinas utilizan una variable global strDateStyle que determina el formato
// de fecha a utilizar, los valores posibles son: "US" (Formato EEUU) o "EU" (FORMATO europeo)
// si no se especifica se utiliza el fomato europeo.
function chkdate(strDate) {
// si la variable global no est? configurada asume formato europeo			
if (strDatestyle=="")
   strDatestyle="EU";
var strDateArray;
var strDay;
var strMonth;
var strYear;
var intday;
var intMonth;
var intYear;
var booFound = false;
//var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
var err = 0;
var strMonthArray = new Array(12);
strMonthArray[0] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";
//strDate = datefield.value;
if (strDate.length < 1) {
return true;
}
for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
strDateArray = strDate.split(strSeparatorArray[intElementNr]);
if (strDateArray.length != 3) {
err = 1;
return false;
}
else {
strDay = strDateArray[0];
strMonth = strDateArray[1];
strYear = strDateArray[2];
}
booFound = true;
   }
}
if (booFound == false) {
   if (strDate.length>5) {
   	  strDay = strDate.substr(0, 2);
	  strMonth = strDate.substr(2, 2);
	  strYear = strDate.substr(4);
   } else {
   	 err = 1;
	 return false;
   }
}
if (strYear.length == 2) {
strYear = '20' + strYear;
}
// US style
if (strDatestyle == "US") {
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
}
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
err = 2;
return false;
}
intMonth = parseInt(strMonth, 10);
if (isNaN(intMonth)) {
for (i = 0;i<12;i++) {
if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
intMonth = i+1;
strMonth = strMonthArray[i];
i = 12;
   }
}
if (isNaN(intMonth)) {
err = 3;
return false;
   }
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
}
}
else {
if (intday > 28) {
err = 10;
return false;
}
}
}
return true;
}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}	

/*
....................................................................................................								   
parseStringToDate - Convierte un string en un objeto tipo Date  -->
Por Gustavo Mateos. Basada en la funci?n escrita por Mike Welagen (welagenm@hotmail.com)
....................................................................................................								   
*/
//var strDatestyle = "US"; //United States date style
var strDatestyle = "EU";  //European date style
// Convierte un String en un objeto Date
function parseStringToDate(strDate) {
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "Jan";
	strMonthArray[1] = "Feb";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Apr";
	strMonthArray[4] = "May";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Aug";
	strMonthArray[8] = "Sep";
	strMonthArray[9] = "Oct";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dec";
	if (strDate.length < 1) {
		return true;
	}	
	// si la variable global no est? configurada asume formato europeo			
	if (strDatestyle=="")
	   strDatestyle="EU";
	   
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 3) {
				err = 1;
				return false;
			}
			else {
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
			booFound = true;
		}
	}
	if (booFound == false) {
		if (strDate.length>5) {
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
	   }
	}
	if (strYear.length == 2) {
		strYear = '20' + strYear;
	}
	// US style
	if (strDatestyle == "US" ) {
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) {
		err = 2;
		return false;
	}
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		for (i = 0;i<12;i++) {
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
		if (isNaN(intMonth)) {
			err = 3;
			return false;
	   }
	}
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) {
		err = 4;
		return false;
	}
	if (intMonth>12 || intMonth<1) {
		err = 5;
		return false;
	}
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
		err = 6;
		return false;
	}
		if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
		err = 7;
		return false;
	}
		if (intMonth == 2) {
		if (intday < 1) {
		err = 8;
		return false;
	}
		if (LeapYear(intYear) == true) {
			if (intday > 29) {
				err = 9;
				return false;
			}
		}
		else {
			if (intday > 28) {
				err = 10;
				return false;
			}
		}
	}
	if (strDatestyle == "US") {
		var fecha = new Date(strMonthArray[intMonth-1]+", "+intday+" " + strYear);
	}
	else {
	dia = String(intday);
	mes = String(intMonth);
	if (dia.length < 2)
	        dia = "0" + dia;
	if (mes.length < 2)
	        mes = "0" + mes;
	
	fecha = new Date(strYear, mes, dia);
	}
	return fecha;
}
//....................................................................................................								   
// Compara dos fechas (la variable global strDatestyle indica el formato a utilizar)
// Devuelve :
//        1 si fecha1 > fecha2
//        0 si las fechas son iguales
//       -1 si fecha1 < fecha2							   
function compararFechas(fecha1, fecha2) {
	var f1 = parseStringToDate(fecha1);
	var f2 = parseStringToDate(fecha2);			  
	if (f1.getTime() > f2.getTime()){
	   return 1;
	}else if (f1.getTime() == f2.getTime()){
	   return 0;
	}else if (f1.getTime() < f2.getTime()){
	   return -1;
	}
}

//....................................................................................................								   
// Validaci?n de campos tipo "Hora"
// Checks if time is in HH:MM:SS AM/PM format.
// The seconds and AM/PM are optional.
//....................................................................................................								   
function  chktime(timeStr) {
    var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;

    var matchArray = timeStr.match(timePat);
    if (matchArray == null) {
        //alert("La Hora tiene un formato incorrecto. Formato valido: hh:mm:ss");
        return false;
    }
    hour = matchArray[1];
    minute = matchArray[2];
    second = matchArray[4];
    ampm = matchArray[6];

    if (second=="") { second = "00"; }
    if (ampm=="") { ampm = null ; }

    if (ampm != null && (ampm.equals("PM") || ampm.equals("pm"))) 
	hour = hour + 12;

    if (hour < 0  || hour > 23) {
        //alert("La hora debe estar entre 0 y 23.");
        return false;
    } 
    if (minute<0 || minute > 59) {
        //alert ("Los minutos deben estar entre 0 y 59.");
        return false;
    }
    if (second != null && (second < 0 || second > 59)) {
        //alert ("Los segundos deben estar entre 0 y 59.");
        return false;
    }

    hour = String(hour);
    minute = String(minute);
    second = String(second);
    if (hour.length < 2)
	hour = "0" + hour;
    if (minute.length < 2)
	minute = "0" + minute;
    if (second.length < 2)
	second = "0" + second; 
    
    return true;
}
