//------------------------------------------
//------------ DYNAMIC FORM POST -----------
//------------------------------------------
function dynamicForm(tgtframe, msg, actionURL, arrName, arrVal) {
    tgtframe.document.writeln("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></meta></head><body style=\"font-family:tahoma,trebuchet ms,verdana,arial,helvetica;font-size:10pt;\">"+msg);
    tgtframe.document.writeln("<form name=\"thisform\" id=\"thisform\" method=\"POST\" action=\""+actionURL+"\">");
    for(var i=0;i<arrName.length;i++) {
        //parse double quotes
        var j=0;
        for(j=arrName[i].length-1;j>=0;j--) {
            if(arrName[i].charAt(j)=="\"") arrName[i] = arrName[i].substring(0, j) + "&quot;" + arrName[i].substring(j+1);
        }
        for(j=arrVal[i].length-1;j>=0;j--) {
            if(arrVal[i].charAt(j)=="\"") arrVal[i] = arrVal[i].substring(0, j) + "&quot;" + arrVal[i].substring(j+1);
        }
        //write
        tgtframe.document.writeln("<input type=\"hidden\" name=\""+arrName[i]+"\" value=\""+arrVal[i]+"\"/>");
    }
    tgtframe.document.writeln("</form><script><!--");
    tgtframe.document.writeln("  setTimeout('self.document.thisform.submit()',1000);");
    tgtframe.document.writeln("//--></script></body></html>");
}

/**
 * Trim string and remove extra whitespaces
 */
function trim(s) {
  var whitespaces=" \f\n\r\t\v";
  s=""+s; //make sure it is a string
  if(s.length==0) return s;
  while (whitespaces.indexOf(s.substring(0,1))>=0) {
    s = s.substring(1,s.length);
    if(s.length==0) return s;
  }
  while (whitespaces.indexOf(s.substring(s.length-1,s.length))>=0) {
    s = s.substring(0,s.length-1);
    if(s.length==0) return s;
  }
  return s;
}

/**
 * Check if valid email address
 */
function isEmail(emailaddr) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (emailaddr.indexOf(".") > 2) && (emailaddr.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(emailaddr) && r2.test(emailaddr));
}

/**
 * Check if valid email address suffix 
 */
function isEmailSuffix(emailsuffix) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (emailsuffix.indexOf(".") > 2) && (emailsuffix.indexOf("@") < 0);
  var r1 = new RegExp("(\\.\\.)|(^\\.)");
  var r2 = new RegExp("^(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(emailsuffix) && r2.test(emailsuffix));
}

/**
 * Checks if valid IP address
 */
function isValidIPAddress(ipaddr) {
   var re = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
   if (re.test(ipaddr)) {
      var parts = ipaddr.split(".");
      if (parseInt(parseFloat(parts[0])) == 0) { return false; }
      for (var i=0; i<parts.length; i++) {
         if (parseInt(parseFloat(parts[i])) > 255) { return false; }
      }
      return true;
   } else {
      return false;
   }
}

/**
 * Checks if valid date, given format YYYY, MM, DD
 */
function isDate(date, format) {
	
	if(date.length!=format.length) return false;

	//get positions
	var pos_year=format.indexOf("YYYY");
	var pos_month=format.indexOf("MM");
	var pos_day=format.indexOf("DD");
	if(pos_year<0 || pos_month<0 || pos_day<0) return false;

	//get strings of year month and day
	var val_year=""+date.substring(pos_year, pos_year+4);
	var val_month=""+date.substring(pos_month, pos_month+2);
	var val_day=""+date.substring(pos_day, pos_day+2);
	if(isNaN(val_year) || isNaN(val_month) || isNaN(val_day)) return false;

	//convert to integer value
	var int_year=parseInt(val_year,10);
	var int_month=parseInt(val_month,10);
	var int_day=parseInt(val_day,10);
	if(isNaN(int_year) || isNaN(int_month) || isNaN(int_day)) return false;
	if(int_month>12 || int_month<=0) return false;
	if(int_day>31 || int_day<=0) return false;

        if(int_month==2 && int_day > (((int_year % 4 == 0) && ( (!(int_year % 100 == 0)) || (int_year % 400 == 0))) ? 29 : 28)) return false;
	if((int_month==4 || int_month==6 || int_month==9 || int_month==11) && int_day>30) return false;
	
	return true;
}

/**
 * Send Mail (to avoid email collecting webbots)
 */
function sendmail(domain, user) {
    document.location.href="mailto:"+user+"@"+domain;
}

/** 
 * Launch URL in a centralized pop up
 */
function launchlink(url, winWidth, winHeight) {
    //get center
    var v1 = ((document.body.clientWidth - winWidth) / 2);
    var v2 = ((document.body.clientHeight - winHeight) / 2);
    if(v1<0) v1=0;
    if(v2<0) v2=0;    
    var options = "width="+winWidth+",height="+winHeight+",left="+v1+",top="+v2+",directories=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes";
	var winLaunchedLink = window.open(url, "LaunchedLink", options);
}
