var vers;  
navi=navigator.appName;  
vers=navigator.appVersion.substring(0,3); 
if(navi == "Netscape") {
	if(vers >= "5.0")	{
		document.write("<style>body{margin-top: 0px;margin-right: 0px;margin-left: 0px;background-color: #FFFFFF;}</style>");
	} else {
		document.write("<style>body{margin-top: -100px; margin-left: 0pt; margin-right: 0px;background-color: #FFFFFF;}</style>");
	}
}
if(navi == "Microsoft Internet Explorer") {
	document.write("<style>body{margin-top: 0px;margin-right: 0px;margin-left: 0px;background-color: #FFFFFF;}</style>");
}

//determines if the browser is IE3
function CheckBrowserType() {
	if (navigator.appVersion.substring(0,3) == '2.0') {
		var len = location.href.length;
		if (location.href.substring(len-9,len-2) != 'browser') {
			if (location.href.substring(len-4,len) == '.jsp')
				location.href += "?browser=3";
			else
				location.href += "&browser=3";
		}
	}
}

//custom split function since IE3 does not support the javascript split
function split(sString,sChar) {
	var aTemp = new Array();
	if (! sString)
		return aTemp;
	var count = 0;
	if (sChar == '') {
		count = sString.length;
		for (var i=0; i < count; i++) {
			aTemp[i] = sString.charAt(i);
		}
	} else {
		var currIndex = 0;
		var prevIndex = 0;
		var charLen = sChar.length;
		while (currIndex != -1) {
			currIndex = sString.indexOf(sChar,prevIndex);
			if (currIndex == -1)
				break;
			aTemp[count] = sString.substring(prevIndex,currIndex);
			prevIndex = currIndex + charLen;
			count++;
		}
		aTemp[count] = sString.substring(prevIndex,sString.length);
	}
	return aTemp;
}

function FixCookieDate (date) {
	var base = new Date(0); // dawn of (Unix) time - should be 0
 var skew = base.getTime();  // Except on the Mac
 if (skew > 0)
 	date.setTime (date.getTime() - skew);
}

function SetCookie (name,value) {
	var expires= new Date();
	FixCookieDate(expires); // 24 hrs from now 
 	expires.setTime(expires.getTime() + (24 * 60 * 60 * 1000));
	document.cookie = name + "=" + escape (value) +    "; expires=" + expires.toGMTString() +  "; path=/";  // '; domain= www.comercecenter.com';
}

// Sample function to spawn a pop-up window
function win_opener(url) {
	var winopen=open(url,"newWindow","height=300,width=300,toolbar=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0");
}

// getFullYear function for 1.1 compatibility - returns four digit year
function getFullYear(d) {
	var y = d.getYear();
  if (y < 1000) y+= 1900;
  	return y;
}

// given a select box, selects the given item
function SelectOption(sSelectBox,selectString) {
	oSelect = eval(sSelectBox);
  for (var i = 0; i <= oSelect.length; i++) {
  	if (oSelect[i].value.toUpperCase() == selectString.toUpperCase()) {
    	oSelect[i].selected = 1;
      break;
    }
  }
}

// checks to see if field is blank
function isBlank(sField) {
	for (var i = 0; i < sField.length; i++) {
  	var c = sField.charAt(i);
    if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
	}
  return true;
}

// replaces non-URL safe charaters with encoding
function filter(sValue) {
	var aChars = sValue.split('');
  var len = aChars.length;
  for (var i=0; i< len; i++) {
  	if (aChars[i] == "$") {
    	aChars[i] == "&#036;";
    } else if (aChars[i] ==  "\"") {
	  	aChars[i] = "&quot;";
    } else if (aChars[i] ==  "\#") {
	  	aChars[i] = "&#035;";
    } else if (aChars[i] ==  "\%") {
	  	aChars[i] = "&#037;";
    } else if (aChars[i] ==  "\&") {
	  	aChars[i] = "&#038;";
    } else if (aChars[i] ==  "\@") {
	  	aChars[i] = "&#064;";
    } else if (aChars[i] ==  ";") {
	  	aChars[i] = "&#059;";
    } else if (aChars[i] ==  "/") {
	  	aChars[i] = "&#047;";
    } else if (aChars[i] ==  "\?") {
	  	aChars[i] = "&#063;";
    } else if (aChars[i] ==  ":") {
	  	aChars[i] = "&#058;";
    } else if (aChars[i] ==  "=") {
	  	aChars[i] = "&#061;";
    } else if (aChars[i] ==  "<") {
	  	aChars[i] = "&lt;";
    } else if (aChars[i] ==  ">") {
	  	aChars[i] = "&gt;";
    } else if (aChars[i] ==  "{") {
	  	aChars[i] = "&#123;";
    } else if (aChars[i] ==  "}") {
	  	aChars[i] = "&#125;";
    } else if (aChars[i] ==  "|") {
	  	aChars[i] = "&#124;";
    } else if (aChars[i] ==  "\\") {
    	aChars[i] = "&#092;";
    } else if (aChars[i] ==  "^") {
	  	aChars[i] = "&#094;";
    } else if (aChars[i] ==  "~") {
	  	aChars[i] = "&#126;";
    } else if (aChars[i] ==  "[") {
	  	aChars[i] = "&#091;";
    } else if (aChars[i] ==  "]") {
	  	aChars[i] = "&#093;";
    } else if (aChars[i] ==  "`") {
	  	aChars[i] = "&#096;";
    }
	}
  var sNewValue = aChars[0];
  for (i=1;i<len;i++) {
  	sNewValue = sNewValue + aChars[i];
  }
  var nStart = 0;
  var nIndex;
  while ((nIndex = sNewValue.indexOf('\n',nStart)) > -1) {
		sNewValue = sNewValue.substring(0,nIndex-1) + "<BR>" + sNewValue.substring(nIndex+1,sNewValue.length);
    nStart = nIndex + 1;
  }
  return sNewValue;
}

// removes invalid search characters
function removeBadChars(sValue) {
	var aChars = split(sValue, '');
  var len = aChars.length;
  for (var i=0; i< len; i++) {
		if(
		(aChars[i] == '$') 
		|| (aChars[i] == '\"') 
		|| (aChars[i] == '\#') 
		||(aChars[i] == '\%') 
		|| (aChars[i] == '\&')
		|| (aChars[i] == '\@') 
		|| (aChars[i] == ';') 
		|| (aChars[i] == '/') 
		|| (aChars[i] == '\?') 
		|| (aChars[i] == ':') 
		|| (aChars[i] == '=') 
		|| (aChars[i] == '<') 
		|| (aChars[i] == '>')
		|| (aChars[i] == '{')
		|| (aChars[i] == '}')
		|| (aChars[i] == '|')
		|| (aChars[i] == '\\')
		|| (aChars[i] == '^')
		|| (aChars[i] == '~')
		|| (aChars[i] == ']')
		|| (aChars[i] == '[')
		|| (aChars[i] == '\'')
		|| (aChars[i] == ',')
		){
			aChars[i] = ' ';
		}
	}
  var sNewValue = aChars[0];
  for (i=1;i<len;i++) {
  	sNewValue = sNewValue + aChars[i];
  }
  return sNewValue;
}

// checks if string is a number - used for Netscape and IE 3
function isNumber(n) {
	//temporarily remove leading zeroes for Netscape 3.0 compatibility
  if (n == 0) return true;
  while (n.charAt(0) == "0") {
  	n = n.substring(1,n.length);
	}
  if ((isNaN (parseInt(n))) || (n != parseInt(n).toString())) {
  	return false;
	} else {
  	return true;
	}
}

function validateForm(pForm) {
	var browse='4.0';
	if (browse == '3.0')
		return true;
	
	var sMessage;
  var sEmptyFields = "";
  var sError = "\n";
  var nLen = pForm.length;
	
  var startDateYear;
  var startDateDay;
  var startDateMonth;
  for (var i=0; i < nLen; i++) {
		var e = pForm.elements[i];
    if ((e.type == "text") || (e.type == "textarea") || (e.type == "password") || (e.type == "hidden")) {
			if (((e.value == null) || (e.value == "") || isBlank(e.value)) && e.required) {
      	if (!e.friendly) e.friendly = e.name;
	  		sEmptyFields += "\n      " + e.friendly;
	  		continue;
      }

      //check length for textareas
			if ( e.type == "textarea") {
      	if ( (e.maxLength) && (e.value.length > e.maxLength) ) {
        	sError += '- El campo ' + e.friendly + ' no puede tener más de ' + e.maxLength + ' caracteres (actualmente tiene ' + e.value.length + ' caracteres).\n';
	      	bError = true;
	   		}
			}

      //check for numeric
      if ((e.numeric) && (! isBlank(e.value))) {
	  		if (! isNumber(e.value)) {
	    		if (!e.friendly) e.friendly = e.name;
          sError += '- El campo ' + e.friendly + ' debe ser un número.\n';
	    		bError = true;
        }
	  		continue;
      }

      //check for valid dates
			if ((e.date) && (! isBlank(e.value))) {
	  		var bError = false;
	  		var aDate = e.value.split('/');
	  		if (aDate.length != 3) {
	    		bError = true;
        } else {
	    		for (var count = 0; count < aDate.length; count++) {
	      		if (((aDate[count].length > 2) && (count != 2)) || 
		 					((aDate[count].length > 4) && (count == 2))) {
							bError = true;
							break;
            }
	      		if (! isNumber(aDate[count])) {
	        		bError = true;
	        		break;
            }
	    		}
      	}
	  		if (! bError) {
	    		var nMonth = aDate[0]*1;
	    		var nDate = aDate[1]*1;
	    		var nYear = aDate[2]*1;
        }
				
	  		var bCheckLeap = false;
        var aNumDays = new Array (31,28,31,30,31,30,31,31,30,31,30,31);
	  		if ((!bError) &&
	     		(!isNaN(nMonth) && nMonth >= 1 && nMonth <= 12) &&
	     		(!isNaN(nDate) && nDate >=1 && nDate <= 31) &&
	     		(!isNaN(nYear) && nYear >=1900)) {
	    		if (((nMonth == 2) && (nYear%4 == 0)) && (!((nYear%100 == 0) && (nYear%400)))) aNumDays[1] = 29;
	    		if (nDate > aNumDays[nMonth-1]) bError = true; 
        } else
					bError = true;
	  		if (bError) {
	    		if (!e.friendly) e.friendly = e.name;
          sError += '- El campo ' + e.friendly + ' no está en el formato de fecha correcto.\n';
        }
   		}

			if ((e.startdate) && (! bError)) {
	  		bError = false;
	  		var date = new Date();
	  		var currYear = date.getYear();
	  		if (currYear < 1000) currYear += 1900;
	  		var currDate = date.getDate();
	  		var currMonth = date.getMonth() + 1;
	  		var date2 = new Date(nYear,(nMonth-1),nDate,23,59,59); //set time to end of day so date check works
	  		if (date2 < date) { 
        	sError += '- La fecha de inicio no puede ser anterior a la fecha de hoy.\n';
        }
	  		startDateYear = nYear;
	  		startDateDay = nDate;
	  		startDateMonth = nMonth;
     	}
			
			if ((e.enddate) && (! bError)) {
	  		bError = false;
	  		var date = new Date(startDateYear,(startDateMonth-1),startDateDay);
	  		var date2 = new Date(nYear,(nMonth-1),nDate);
	  		if (date2 < date) {
        	sError += '- La fecha de término no puede ser anterior a la fecha de inicio.\n';
        }
      }
			continue;
		}
		
    if ((e.type == "select-one") && e.required) {
			if (e.options.length == 1) continue;
      var k = e.selectedIndex;
			if ((k < 0) || (! e.options[k].value)) {
	  		if (!e.friendly) e.friendly = e.name;
	  		sEmptyFields += "\n      " + e.friendly;
        continue;
			}
   	}

    if (e.type == "select-multiple") {
			var k = e.selectedIndex;
			if ((e.required) && (k < 0)) {
	  		if (!e.friendly) e.friendly = e.name;
	  		sEmptyFields += "\n      " + e.friendly;
	  		continue;
      }
			if (k >= 0) {
	  		var nLen2 = e.options.length;
	  		var temp = "";
        for (var n=0;n<nLen2;n++) {
	    		if (e.options[n].selected) {
	      		if (temp) temp = temp + "|" + e.options[n].value;
	      		else temp = e.options[n].value;
          }
        }
	  		var tempString = "pForm." + e.name + "List";
	  		var eList = eval (tempString);
        eList.value = temp; 
      }
   	}
    if ((e.image) && (e.type == "file") && (e.value)) {
			var fileName = e.value;
      var fileType = fileName.substring(fileName.length-3,fileName.length);
			var fileTypeUpper = fileType.toUpperCase();
			if ((fileTypeUpper != "GIF") && (fileTypeUpper != "JPG")) {
      	sError += '- Sólo pueden ser cargadas imágenes en formato GIF y JPG.\n';
      }
   	}
		
    if ((e.file) && (e.type == "file") && (e.value)) {
			var fileName = e.value;
			var aTemp = fileName.split('\\');
			var fileName2 = aTemp[aTemp.length-1];
			var temp = fileName2.indexOf(' ');
			if (temp != -1) {
	  		sError += "- The file name cannot contain spaces.";
      }
   	}
	}
  if (sError == "\n") sError = "";
  if (!sEmptyFields && !sError) return true;
	
  sMessage = 'La forma no puede ser procesada debido a los siguientes errores:\n';
  if (sEmptyFields) {
  	sMessage += '\n- Falta información en los siguientes campos requeridos:' + sEmptyFields + '\n';
  }
  if (sError) {
  	sMessage += sError; 
  }
  alert (sMessage);
  return false;
}

//default start date to todays date
function getStartDateAndEndDate(){
	var f = document.forms[0];
	var oDate = new Date();
	var nMonth = oDate.getMonth() + 1;
	var nYear = getFullYear(oDate);
	var nDay = oDate.getDate();
	
	f.startDate.value = nMonth + "/" + nDay + "/" + nYear;
	
	//default end date to 180 days from todays date
	var nTime = oDate.getTime();
	nTime = nTime + (1000*60*60*24*180);
	oDate = new Date(nTime);
	var nMonth = oDate.getMonth() + 1;
	var nDay = oDate.getDate();
	var nYear = getFullYear(oDate);
	
	f.endDate.value = nMonth + "/" + nDay + "/" + nYear;
}