/*
  $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 unhide(divID) {
 var item = document.getElementById(divID);
 if (item) {
 item.className=(item.className=='hidden')?'unhidden':'hidden';
 }
 }

function externalLinks() { 
if (!document.getElementsByTagName) return; 
var anchors = document.getElementsByTagName("a"); 
for (var i=0; i<anchors.length; i++) { 
var anchor = anchors[i]; 
if (anchor.getAttribute("href") && 
anchor.getAttribute("rel") == "external") 
anchor.target = "_blank"; 
} 
} 
window.onload = externalLinks;
function warn_update()
{
	document.getElementById("warn").style.visibility='visible';
}
function popupWindow(url) {

  window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=450,height=280,screenX=150,screenY=150,top=150,left=150')
}
function rowOverEffect(object) {
  if (object.className == 'moduleRow') object.className = 'moduleRowOver';
}
function rowOutEffect(object) {
  if (object.className == 'moduleRowOver') object.className = 'moduleRow';
}

function menuOver(object) {
  if (object.className == 'MenuText') object.className = 'MenuTextOver';
  if (object.className == 'MenuText1') object.className = 'MenuText1Over';
  if (object.className == 'MenuText2') object.className = 'MenuText2Over';
  if (object.className == 'MenuText3') object.className = 'MenuText3Over';
  }

function menuOut(object) {
  if (object.className == 'MenuTextOver') object.className = 'MenuText';
  if (object.className == 'MenuText1Over') object.className = 'MenuText1';
  if (object.className == 'MenuText2Over') object.className = 'MenuText2';
  if (object.className == 'MenuText3Over') object.className = 'MenuText3';
}

function validate_checkbox(object,alerttxt)
{
    if (object.checked != true)
    {alert(alerttxt);return false;}
    else
    {return true;}
}

function validate_read_terms_checkbox(object,alerttxt)
{
    if (object.checked != true)
    {
      document.getElementById("checkoutreadterms").style.visibility='visible';
      alert(alerttxt);
      return false;}
    else
    {
      document.getElementById("checkoutreadterms").style.visibility='hidden';
      return true;
    }
}

function checkBox(object) {
  object.checked = !object.checked;
}

function bookmarksite(title, url) {
    if (document.all)
        window.external.AddFavorite(url, title);
    else if (window.sidebar)
        window.sidebar.addPanel(title, url, "")
}

function SetFocus(TargetFormName,TargetFieldName)
{
  TargetFieldName = typeof(TargetFieldName) != 'undefined' ? TargetFieldName : '';
  var target = 0;
  if (TargetFormName != "")
  {
    for (i=0; i<document.forms.length; i++)
    {
      if (document.forms[i].id == TargetFormName) {
        target = i;
        break;
      }
    }
  }

  var TargetForm = document.forms[target];
  if (TargetFormName != "" && TargetFieldName != "")
  {
    for (i=0; i<TargetForm.length; i++)
    {
      if (TargetForm.elements[i].name == TargetFieldName)
      {
        TargetForm.elements[i].focus();
        if ((TargetForm.elements[i].type == "text") || (TargetForm.elements[i].type == "password"))
        {
          TargetForm.elements[i].select();
        }
        break;
      }
    }
  }
  else
  {
    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;
}

//---------------------------------------------------------------

// Opacity Displayer, Version 1.0

// Copyright Michael Lovitt, 6/2002.

// Distribute freely, but please leave this notice intact.

//---------------------------------------------------------------



//---------------------------------------------------------------

// OPACITY OBJECT

//

// Instantiates the object, defines the properties and methods.

function OpacityObject(divId, strPath) {

	this.id = divId;

	this.path = strPath;

	if (ns){

		if (browserVersion>=5) {

			this.layerObject = document.getElementById(divId).style;

		} else { 

			this.layerObject = eval("document."+divId);

		}

	} else {

		this.layerObject = eval(divId + ".style");

	}

	this.setBackground = od_object_setBackground;

}

// Uses AlphaImageLoader filter, or the css background property,

// as appropriate, to apply a PNG or GIF as the background of the layerObject.

function od_object_setBackground() {	

	if (pngAlpha) {

		this.layerObject.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.path+".png', sizingMethod='scale')";

	} else if (pngNormal) {

		this.layerObject.backgroundImage = 'url('+this.path+'.png)';

	} else {

		this.layerObject.backgroundImage = 'url('+this.path+'.gif)';

	}

}

//---------------------------------------------------------------

// Browser Detect Lite  v2.1

// http://www.dithered.com/javascript/browser_detect/index.html

// modified by Chris Nott (chris@NOSPAMdithered.com - remove NOSPAM)

//

// modified by Michael Lovitt to include OmniWeb and Dreamcast



function BrowserDetectLite() {

	var ua = navigator.userAgent.toLowerCase(); 

	this.ua = ua;



	// browser name

	this.isGecko     = (ua.indexOf('gecko') != -1);

	this.isMozilla   = (this.isGecko && ua.indexOf("gecko/") + 14 == ua.length);

	this.isNS        = ( (this.isGecko) ? (ua.indexOf('netscape') != -1) : ( (ua.indexOf('mozilla') != -1) && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1) ) );

	this.isIE        = ( (ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1) ); 

	this.isOpera     = (ua.indexOf("opera") != -1); 

	this.isKonqueror = (ua.indexOf("konqueror") != -1); 

	this.isIcab      = (ua.indexOf("icab") != -1); 

	this.isAol       = (ua.indexOf("aol") != -1); 

	this.isWebtv     = (ua.indexOf("webtv") != -1); 

	this.isOmniweb   = (ua.indexOf("omniweb") != -1);

	this.isDreamcast   = (ua.indexOf("dreamcast") != -1);

	

	// spoofing and compatible browsers

	this.isIECompatible = ( (ua.indexOf("msie") != -1) && !this.isIE);

	this.isNSCompatible = ( (ua.indexOf("mozilla") != -1) && !this.isNS && !this.isMozilla);

	

	// browser version

	this.versionMinor = parseFloat(navigator.appVersion); 

	

	// correct version number for NS6+ 

	if (this.isNS && this.isGecko) {

		this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('/') + 1 ) );

	}

	

	// correct version number for IE4+ 

	else if (this.isIE && this.versionMinor >= 4) {

		this.versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) );

	}

	

	// correct version number for Opera 

	else if (this.isOpera) {

		if (ua.indexOf('opera/') != -1) {

			this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera/') + 6 ) );

		}

		else {

			this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera ') + 6 ) );

		}

	}

	

	// correct version number for Konqueror

	else if (this.isKonqueror) {

		this.versionMinor = parseFloat( ua.substring( ua.indexOf('konqueror/') + 10 ) );

	}

	

	// correct version number for iCab 

	else if (this.isIcab) {

		if (ua.indexOf('icab/') != -1) {

			this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab/') + 6 ) );

		}

		else {

			this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab ') + 6 ) );

		}

	}

	

	// correct version number for WebTV

	else if (this.isWebtv) {

		this.versionMinor = parseFloat( ua.substring( ua.indexOf('webtv/') + 6 ) );

	}

	

	this.versionMajor = parseInt(this.versionMinor); 

	this.geckoVersion = ( (this.isGecko) ? ua.substring( (ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14) ) : -1 );

	

	// platform

	this.isWin   = (ua.indexOf('win') != -1);

	this.isWin32 = (this.isWin && ( ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1) );

	this.isMac   = (ua.indexOf('mac') != -1);

	this.isUnix  = (ua.indexOf('unix') != -1 || ua.indexOf('linux') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1)

	

	// specific browser shortcuts

	this.isNS4x = (this.isNS && this.versionMajor == 4);

	this.isNS40x = (this.isNS4x && this.versionMinor < 4.5);

	this.isNS47x = (this.isNS4x && this.versionMinor >= 4.7);

	this.isNS4up = (this.isNS && this.versionMinor >= 4);

	this.isNS6x = (this.isNS && this.versionMajor == 6);

	this.isNS6up = (this.isNS && this.versionMajor >= 6);

	

	this.isIE4x = (this.isIE && this.versionMajor == 4);

	this.isIE4up = (this.isIE && this.versionMajor >= 4);

	this.isIE5x = (this.isIE && this.versionMajor == 5);

	this.isIE55 = (this.isIE && this.versionMinor == 5.5);

	this.isIE5up = (this.isIE && this.versionMajor >= 5);

	this.isIE6x = (this.isIE && this.versionMajor == 6);

	this.isIE6up = (this.isIE && this.versionMajor >= 6);

	

	this.isIE4xMac = (this.isIE4x && this.isMac);

}

var browser = new BrowserDetectLite();

//---------------------------------------------------------------



//---------------------------------------------------------------

// OPACITY DISPLAY FUNCTION

// Outputs the image as a div with the AlphaImageLoader, or with

// a standard image tag.

function od_displayImage(strId, strPath, intWidth, intHeight, strClass, strAlt) {	

	if (pngAlpha) {

		document.write('<div style="height:'+intHeight+'px;width:'+intWidth+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+strPath+'.png\', sizingMethod=\'scale\')" id="'+strId+'" class="'+strClass+'"></div>');

	} else if (pngNormal) {

		document.write('<img src="'+strPath+'.png" width="'+intWidth+'" height="'+intHeight+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" />');

	} else {

		document.write('<img src="'+strPath+'.gif" width="'+intWidth+'" height="'+intHeight+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" />');

	}

}

//---------------------------------------------------------------



//---------------------------------------------------------------

// OPACITY ROLL-OVER FUNCTIONS

function od_rollOver(strId, strColor) {	

	if (pngAlpha) {

		document.getElementById(strId).style.backgroundColor = strColor;

	} else {

	    if (document.images && (flag == true)) {

	        document[strId].src = eval(strId + "on.src");

	    }

	}

}

function od_rollOut(strId, strColor) {	

	if (pngAlpha) {

		document.getElementById(strId).style.backgroundColor = strColor;

	} else {

	    if (document.images) {

	        document[strId].src = eval(strId + "off.src");

	    }

	}

}

//---------------------------------------------------------------



//---------------------------------------------------------------

// global variables



// if IE5.5+ on win32, then display PNGs with AlphaImageLoader

if ((browser.isIE55 || browser.isIE6up) && browser.isWin32) {

	var pngAlpha = true;

	var strExt = ".png";

// else, if the browser can display PNGs normally, then do that. that list includes:

	//     -Gecko Engine: Netscape 6 or Mozilla, Mac or PC

	//     -IE5+ Mac (OpacityObject applies the background image at 100% opacity)

	//     -Opera 6+ PC

	//     -Opera 5+ Mac (Doesn't support dynamically-set background images)

	//     -Opera 6+ Linux 

	//     -Omniweb 3.1+ 

	//     -Icab 1.9+ 

	//     -WebTV 

	//     -Sega Dreamcast

} else if ((browser.isGecko) || (browser.isIE5up && browser.isMac) || (browser.isOpera && browser.isWin && browser.versionMajor >= 6) || (browser.isOpera && browser.isUnix && browser.versionMajor >= 6) || (browser.isOpera && browser.isMac && browser.versionMajor >= 5) || (browser.isOmniweb && browser.versionMinor >= 3.1) || (browser.isIcab && browser.versionMinor >= 1.9) || (browser.isWebtv) || (browser.isDreamcast)) {

	var pngNormal = true;

	var strExt = ".png";

	// otherwise, we use plain old GIFs

} else {

	var strExt = ".gif";

}



var ns = (document.all)?false:true;

var browserVersion = parseFloat(navigator.appVersion );



