/************************************************************************************************************

************************************************************************************************************/

// var stato = "c"

function hide(e) {
   o = gid(e)
   o.style.display = 'none';
   o.style.visibility = 'hidden';  
}

function show(e) {
   o = gid(e)
   o.style.display = 'block';
   o.style.visibility = 'visible';
}

function isDefined(type) {
  return type != 'undefined' && type != 'unknown';
}

function gid(id) {
//	return document.getElementById(id);
  	if (isDefined(typeof document.getElementById)) {
	  	if (document.getElementById(id)) {
	     	return document.getElementById(id);
		} else {
			var o = document.getElementsByName(id);
			if (o.length > 0)
				return o[0];
			else
	 			return false;
		}
  	} else if (isDefined(typeof document.all)) {
     	return document.all[id];
  	} else {
    	throw new Error("Can not find a method to locate DOM element.");
    	return false;
  	}
}

// Called as: document.getElementsByRegex("pattern"). 
// Returns an array of all elements matching a given regular expression on id. 
// 'pattern' argument is a regular expression string. 
// 
document['getElementsByRegex'] = function(pattern){ 
   var arrElements = [];   // to accumulate matching elements 
   var re = new RegExp(pattern);   // the regex to match with 
 
   function findRecursively(aNode) { // recursive function to traverse DOM 
      if (!aNode)  
          return; 
      if (aNode.id !== undefined && aNode.id.search(re) != -1) 
          arrElements.push(aNode);  // FOUND ONE! 
      for (var idx in aNode.childNodes) // search children... 
          findRecursively(aNode.childNodes[idx]); 
   }; 
 
   findRecursively(document); // initiate recursive matching 
   return arrElements; // return matching elements 
};

// 
//  Submit form field
//
function submitForms( ajaxObj )
{
	if (!document.getElementsByTagName) return false;
	elementsForms = document.getElementsByTagName("form");
	for (var intCounter = 0; intCounter < elementsForms.length; intCounter++)
	{
		getElements(elementsForms[intCounter], ajaxObj)
	}
}

function getElements(form, ajaxObj ) {

    function GetElemValue(name, value) {
		ajaxObj.setVar(name,value);
    }
	
	var elemArray = form.elements;
    for (var i = 0; i < elemArray.length; i++) {
        var element = elemArray[i];
        var elemType = element.type.toUpperCase();
        var elemName = element.name;
        if (elemName) {
            if (elemType == "TEXT"
                    || elemType == "TEXTAREA"
                    || elemType == "PASSWORD"
					|| elemType == "BUTTON"
					|| elemType == "RESET"
					|| elemType == "SUBMIT"
					|| elemType == "FILE"
					|| elemType == "IMAGE"
                    || elemType == "HIDDEN")
                GetElemValue(elemName, element.value);
            else if (elemType == "CHECKBOX" && element.checked)
                GetElemValue(elemName, 
                    element.value ? element.value : "On");
            else if (elemType == "RADIO" && element.checked)
                GetElemValue(elemName, element.value);
            else if (elemType.indexOf("SELECT") != -1)
                for (var j = 0; j < element.options.length; j++) {
                    var option = element.options[j];
                    if (option.selected)
                        GetElemValue(elemName,
                            option.value ? option.value : option.text);
                }
        }
    }
}


function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function getQuerystring(key, default_)
{
  if (default_==null) default_=""; 
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\#!?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if(qs == null)
    return default_;
  else
    return HTMLDecode(qs[1]);
}

function IEdetect(){
  if (navigator.userAgent.toLowerCase().indexOf("msie") != -1){
    return true;
  }  
}

//Per far COMPARIRE un elemento
function opacity_IN(id,op,duration){
 e = document.getElementById(id);
 e.style.display = 'block';
 e.style.visibility = 'visible';
 
 if(IEdetect()){
   e.style.filter='alpha(opacity='+op*10+')';
 }else{
   e.style.opacity = op/10;
 }
 op++;
 temp = duration/10;
 if(op <= 10){
  setTimeout("opacity_IN('"+id+"',"+op+","+duration+")", temp);
 }
}

//Per far SCOMPARIRE un elemento
function opacity_OUT(id,op,duration){
 e = document.getElementById(id);
 
 if(IEdetect()){
   e.style.filter='alpha(opacity='+op*10+')';
 }else{
   e.style.opacity = op/10;
 }
 op--;
 temp = duration/10;
 if(op >= 0){
  setTimeout("opacity_OUT('"+id+"',"+op+","+duration+")", temp);
  if(op == 0){
   e.style.display = 'none';
   e.style.visibility = 'hidden';  
  }
 }
}
function HTMLDecode(text)
{
	if ( !text )
		return '' ;
	text = text.replace( /&gt;/g, '>' ) ;
	text = text.replace( /&lt;/g, '<' ) ;
	text = text.replace( /&amp;/g, '&' ) ;
	text = text.replace( /&quot;/g, '"' ) ;
 	return decodeURIComponent(text) ;
}
function checkEnter(e){ //e is event object passed from function invocation
	var characterCode // literal character code will be stored in this variable
	if(e && e.which){ //if which property of event object is supported (NN4)
		e = e
		characterCode = e.which //character code is contained in NN4's which property
	} else {
		e = event
		characterCode = e.keyCode //character code is contained in IE's keyCode property
	}
	if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
  		return false;
	} else {
		return true;
	}
}
function XmlGet(xObj, row, fld) {
	var ret
	try {
		ret = xObj[row].getElementsByTagName(fld)[0].firstChild.data;
	} catch (er) {
		ret = null;
	}

	return ret;
}

function isValidObject(objToTest) {
  if (null == objToTest) return false;
  if ("undefined" == typeof(objToTest)) return false;
  return true;
}
/*
function ajaxprocess(el)
{
	var fine = false
	var startprocess = 0
	var endprocess = 0
	var element = el
	function checkStato()
	{		
		if (fine != true) {
			var e = gid(element)
			var op = 1
			if (startprocess != endprocess) op = 0.5
 			if(IEdetect()) {
				e.innerHTML
				e.style.filter="alpha(opacity=" + (op * 100) + ")";
 			} else {
   				e.style.opacity = op;
			}
			if (startprocess == endprocess) {
				reset();
				fine = true;
			}
		}
	}
	function reset() {
		endprocess = 0;
		startprocess = 0;
		fine = false;
	}
	this.start = function() {
		startprocess++;
		checkStato();
	}
	this.end = function() {
		endprocess++;
		checkStato();
	}
	this.reset = function() { reset(); }
}
*/
// Removes leading whitespaces
function LTrim( value ) {
  var re = /\s*((\S+\s*)*)/;
  return value.replace(re, "$1");
}
// Removes ending whitespaces
function RTrim( value ) {
  var re = /((\s*\S+)*)\s*/;
  return value.replace(re, "$1");
}
// Removes leading and ending whitespaces
function trim( value ) {
  return LTrim(RTrim(value));
}
// Date Validation Javascript
// copyright 30th October 2004, by Stephen Chapman
// http://javascript.about.com

// You have permission to copy and use this javascript provided that
// the content of the script is not changed in any way.

function valDateFmt(datefmt) {myOption = -1;
for (i=0; i<datefmt.length; i++) {if (datefmt[i].checked) {myOption = i;}}
if (myOption == -1) {alert("You must select a date format");return ' ';}
return datefmt[myOption].value;}
function valDateRng(daterng) {myOption = -1;
for (i=0; i<daterng.length; i++) {if (daterng[i].checked) {myOption = i;}}
if (myOption == -1) {alert("You must select a date range");return ' ';}
return daterng[myOption].value;}
function stripBlanks(fld) {var result = "";for (i=0; i<fld.length; i++) {
if (fld.charAt(i) != " " || c > 0) {result += fld.charAt(i);
if (fld.charAt(i) != " ") c = result.length;}}return result.substr(0,c);}
var numb = '0123456789';
function isValid(parm,val) {if (parm == "") return true;
for (i=0; i<parm.length; i++) {if (val.indexOf(parm.charAt(i),0) == -1)
return false;}return true;}
function isNum(parm) {return isValid(parm,numb);}
var mth = new Array(' ','january','february','march','april','may','june','july','august','september','october','november','december');
var day = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
function validateDate(fld,fmt,rng) {
var dd, mm, yy;var today = new Date;var t = new Date;fld = stripBlanks(fld);
if (fld == '') return false;var d1 = fld.split('\/');
if (d1.length != 3) d1 = fld.split(' ');
if (d1.length != 3) return false;
if (fmt == 'u' || fmt == 'U') {
  dd = d1[1]; mm = d1[0]; yy = d1[2];}
else if (fmt == 'j' || fmt == 'J') {
  dd = d1[2]; mm = d1[1]; yy = d1[0];}
else if (fmt == 'w' || fmt == 'W'){
  dd = d1[0]; mm = d1[1]; yy = d1[2];}
else return false;
var n = dd.lastIndexOf('st');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf('nd');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf('rd');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf('th');
if (n > -1) dd = dd.substr(0,n);
n = dd.lastIndexOf(',');
if (n > -1) dd = dd.substr(0,n);
n = mm.lastIndexOf(',');
if (n > -1) mm = mm.substr(0,n);
if (!isNum(dd)) return false;
if (!isNum(yy)) return false;
if (!isNum(mm)) {
  var nn = mm.toLowerCase();
  for (var i=1; i < 13; i++) {
    if (nn == mth[i] ||
        nn == mth[i].substr(0,3)) {mm = i; i = 13;}
  }
}
if (!isNum(mm)) return false;
dd = parseFloat(dd); mm = parseFloat(mm); yy = parseFloat(yy);
if (yy < 100) yy += 2000;
if (yy < 1582 || yy > 4881) return false;
if (mm == 2 && (yy%400 == 0 || (yy%4 == 0 && yy%100 != 0))) day[mm-1]++;
if (mm < 1 || mm > 12) return false;
if (dd < 1 || dd > day[mm-1]) return false;
t.setDate(dd); t.setMonth(mm-1); t.setFullYear(yy);
if (rng == 'p' || rng == 'P') {
if (t > today) return false;
}
else if (rng == 'f' || rng == 'F') {
if (t < today) return false;
}
else if (rng != 'a' && rng != 'A') return false;
return true;
}
