/*
  $Id: general.js,v 1.3 2003/02/10 22:30:55 hpdl Exp $

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/
function SetFocus(TargetFormName) {
  var target = 0;
  if (TargetFormName != "") {
    for (i=0; i<document.forms.length; i++) {
      if (document.forms[i].name == TargetFormName) {
        target = i;
        break;
      }
    }
  }

  var TargetForm = document.forms[target];
    
  for (i=0; i<TargetForm.length; i++) {
    if ( (TargetForm.elements[i].type != "image") && (TargetForm.elements[i].type != "hidden") && (TargetForm.elements[i].type != "reset") && (TargetForm.elements[i].type != "submit") ) {
      TargetForm.elements[i].focus();

      if ( (TargetForm.elements[i].type == "text") || (TargetForm.elements[i].type == "password") ) {
        TargetForm.elements[i].select();
      }

      break;
    }
  }
}

function RemoveFormatString(TargetElement, FormatString) {
  if (TargetElement.value == FormatString) {
    TargetElement.value = "";
  }

  TargetElement.select();
}

function CheckDateRange(from, to) {
  if (Date.parse(from.value) <= Date.parse(to.value)) {
    return true;
  } else {
    return false;
  }
}

function IsValidDate(DateToCheck, FormatString) {
  var strDateToCheck;
  var strDateToCheckArray;
  var strFormatArray;
  var strFormatString;
  var strDay;
  var strMonth;
  var strYear;
  var intday;
  var intMonth;
  var intYear;
  var intDateSeparatorIdx = -1;
  var intFormatSeparatorIdx = -1;
  var strSeparatorArray = new Array("-"," ","/",".");
  var strMonthArray = new Array("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
  var intDaysArray = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  strDateToCheck = DateToCheck.toLowerCase();
  strFormatString = FormatString.toLowerCase();
  
  if (strDateToCheck.length != strFormatString.length) {
    return false;
  }

  for (i=0; i<strSeparatorArray.length; i++) {
    if (strFormatString.indexOf(strSeparatorArray[i]) != -1) {
      intFormatSeparatorIdx = i;
      break;
    }
  }

  for (i=0; i<strSeparatorArray.length; i++) {
    if (strDateToCheck.indexOf(strSeparatorArray[i]) != -1) {
      intDateSeparatorIdx = i;
      break;
    }
  }

  if (intDateSeparatorIdx != intFormatSeparatorIdx) {
    return false;
  }

  if (intDateSeparatorIdx != -1) {
    strFormatArray = strFormatString.split(strSeparatorArray[intFormatSeparatorIdx]);
    if (strFormatArray.length != 3) {
      return false;
    }

    strDateToCheckArray = strDateToCheck.split(strSeparatorArray[intDateSeparatorIdx]);
    if (strDateToCheckArray.length != 3) {
      return false;
    }

    for (i=0; i<strFormatArray.length; i++) {
      if (strFormatArray[i] == 'mm' || strFormatArray[i] == 'mmm') {
        strMonth = strDateToCheckArray[i];
      }

      if (strFormatArray[i] == 'dd') {
        strDay = strDateToCheckArray[i];
      }

      if (strFormatArray[i] == 'yyyy') {
        strYear = strDateToCheckArray[i];
      }
    }
  } else {
    if (FormatString.length > 7) {
      if (strFormatString.indexOf('mmm') == -1) {
        strMonth = strDateToCheck.substring(strFormatString.indexOf('mm'), 2);
      } else {
        strMonth = strDateToCheck.substring(strFormatString.indexOf('mmm'), 3);
      }

      strDay = strDateToCheck.substring(strFormatString.indexOf('dd'), 2);
      strYear = strDateToCheck.substring(strFormatString.indexOf('yyyy'), 2);
    } else {
      return false;
    }
  }

  if (strYear.length != 4) {
    return false;
  }

  intday = parseInt(strDay, 10);
  if (isNaN(intday)) {
    return false;
  }
  if (intday < 1) {
    return false;
  }

  intMonth = parseInt(strMonth, 10);
  if (isNaN(intMonth)) {
    for (i=0; i<strMonthArray.length; i++) {
      if (strMonth == strMonthArray[i]) {
        intMonth = i+1;
        break;
      }
    }
    if (isNaN(intMonth)) {
      return false;
    }
  }
  if (intMonth > 12 || intMonth < 1) {
    return false;
  }

  intYear = parseInt(strYear, 10);
  if (isNaN(intYear)) {
    return false;
  }
  if (IsLeapYear(intYear) == true) {
    intDaysArray[1] = 29;
  }

  if (intday > intDaysArray[intMonth - 1]) {
    return false;
  }
  
  return true;
}

function IsLeapYear(intYear) {
  if (intYear % 100 == 0) {
    if (intYear % 400 == 0) {
      return true;
    }
  } else {
    if ((intYear % 4) == 0) {
      return true;
    }
  }

  return false;
}

function wopen(wfile, vwidth, vheight) {
	window.open(wfile,'','scrollbars=yes,resizable=yes,width=' + vwidth + ',height=' + vheight + ',status=no,location=no,toolbar=no');
}

function getPageCoords (element) {
	var coords = {x: 0, y: 0};
	while (element) {
		coords.x += element.offsetLeft;
		coords.y += element.offsetTop;
		element = element.offsetParent;
	}
	return coords;
}

function getYCoords(element){
	return getPageCoords(element).y;
}

function getXCoords(element){
	return getPageCoords(element).x;
}

//Pesco il valore con cui è settato display mi serve per la funzione sotto
function displayValue(categoria){
	return document.getElementById('cat'+categoria).style.display;
}

// Nasconde/esplode tutti le sottocategorie di una categoria e cambia classe selected o vuoto
function visualCat(categoria , visual , visualOld){
	if (visual == 'y'){
		display = "block";
	}else{
		if (visualOld == "none"){
			display="block";
		}else {
			display="none"; 
		}
	}	
	document.getElementById('cat'+categoria).style.display = display;
	if (display=="block"){
		document.getElementById('licat'+categoria).className='selected' ;
	}else{
		document.getElementById('licat'+categoria).className='' ;
	}
}



//Visualizza/Nasconde tutti gli elementi con nome  = name
//display_mode = "none" || display
function visualHide_ElementsByName(name , display_mode ){
	v = document.getElementsByName(name);
	for (i=0; i< v.length ; i++){
		v[i].style.display = display_mode;	
	}
}

function getElementsByName_iefix(tag, name) {
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == name) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}

//Visualizza/Nasconde tutti gli elementi con nome  = name
//display_mode = "none" || display
function visualHide_ElementsByTagName( tag, name , display_mode ){
	v = getElementsByName_iefix( tag , name);
	for (i=0; i< v.length ; i++){
		v[i].style.display = display_mode;	
	}
}

function cambiaClassebyTagName(tag, name , classe){
	v = getElementsByName_iefix( tag , name);
	for (i=0; i< v.length ; i++){
		v[i].className = classe;	
	}
}


function visualizzaNascondiMenuCategorie(categoria){
	displayValueOld = displayValue(categoria);
 	visualHide_ElementsByTagName('ul','ulsottocat' , 'none');
	cambiaClassebyTagName('li','licat','');
	visualCat( categoria , 'n' , displayValueOld );
}

//visualizza nascondi categorie
function VNCat(categoria){
	displayValueOld = displayValue(categoria);
 	visualHide_ElementsByTagName('ul','ulsottocat' , 'none');
	cambiaClassebyTagName('li','licat','');
	visualCat( categoria , 'n' , displayValueOld );
}

/*Riempe il comboBox
Parametri : idtag  e arrayOpzioni e valori 
text = testo primo item "Select .."
nascondi = true  (se l'array è vuoto il combo non viene visualizzato) */ 
function riempiCombo(idtag, arrayOpzioni , arrayValori, text  , nascondi  ){
	while (idtag.options.length > 0){
		idtag.options[(idtag.options.length - 1)] = null;
	}
	idtag.options[0]= new Option( text , '');
	for (var i=1; i < (arrayOpzioni.length + 1); i++) {
		idtag.options[i]= new Option ( arrayOpzioni[(i-1)] , i);
		idtag.options[i].value =  arrayValori [(i-1)];
	}
}


//Crea il link in javascript è richiamato da tep_js_location_href
function js_loc_lnk( page, parametri ,  search_engine_safe   ){
	url = page;
	if (parametri != ''){
		if (search_engine_safe == true ){
			var a_parametri = parametri.split('&') ;
			var params = '';
			for (i = 0 ; i < a_parametri.length  ; i++ ){
				chiavevalore = a_parametri[i].split('=');
				//se le chiavevalore trovato sono almeno 1 carattere
				if ( chiavevalore.length == 2 && chiavevalore[0].length>0 && chiavevalore[1].length>0 ){
					params += '/' + chiavevalore[0] + '/' + chiavevalore[1];
				}
			}
			url = page + params ;
		}else{
			url = page + '?' + parametri;
		}
	}	
	location.href = url;
}

function svuotase(element , txt){
	if (element.value == txt)
	element.value='';
	return;
}

