function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		return("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		return("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		return("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		return("Please enter a valid date")
		return false
	}
return true
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   }
   return this
}

function changeInputs() {
var els = document.getElementsByTagName('textarea');
var elsLen = els.length;
var i = 0;
for ( i=0;i<elsLen;i++ ) {
var curClass = els[i].getAttribute('className');
      if (!(curClass)) {
      els[i].className = 'textarea';
      els[i].onfocus = function() {setFocusValue(this);this.className='textarea_focus';};
      els[i].onblur = function() {this.className='textarea';};
      }
}

var els = document.getElementsByTagName('input');
var elsLen = els.length;
var i = 0;
for ( i=0;i<elsLen;i++ ) {
  if ( els[i].getAttribute('type')) {
    var curClass = els[i].getAttribute('className');
    if ( els[i].getAttribute('type') == "text" || els[i].getAttribute('type') == "password" )
      if (!(curClass)) {

      els[i].className = 'text';
      els[i].onfocus = function() {setFocusValue(this);this.className='text_focus';};
      els[i].onblur = function() {this.className='text';};
      /*els[i].onchange += function() {validateInput(this);};*/
      }
      else
      {
      var focusClass = curClass + '_focus';
      els[i].onfocus = function() {setFocusValue(this);this.className=focusClass;};
      els[i].onblur = function() {this.className=curClass;};
      /*els[i].onchange += function() {validateInput(this);};*/
      }

  }
    if ( els[i].getAttribute('type') == "button" ) {
    els[i].className = 'button';
  }
    if ( els[i].getAttribute('type') == "submit" ) {
    els[i].className = 'button';
  }
  
  if ( els[i].getAttribute('type') == "reset" ) {
    els[i].className = 'button';
  }
  }
}

function ajaxRequest(url) {
http_request = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
        http_request.overrideMimeType('text/xml');
    }
} else if (window.ActiveXObject) { // IE
    try {
        http_request = new ActiveXObject("Msxml2.ServerXMLHTTP.4.0");
    } catch (e) {
        try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
    }
}

if (!http_request) {
    alert('Giving up :( Cannot create an XMLHTTP instance');
    return false;
}

http_request.onreadystatechange = ajaxResponse;
http_request.open('GET', url, false);

http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http_request.send(null);
return(http_request.responseText);

}

function ajaxResponse() {

if (http_request.readyState == 4) {
    if (http_request.status == 200) {
        var xmldoc = http_request.responseXML;
        var pagedata = http_request.responseText;
        var ptags = xmldoc.getElementsByTagName('response');
        var x = http_request.responseXML.getElementsByTagName('p');
   } else {
        alert('There was a problem with the request.');
        return false;
    }
}

}

function openGalleryLightbox() {

document.getElementById('light').style.display='block';
document.getElementById('fade').style.display='block';
}

function closeGalleryLightbox() {
document.getElementById('light').style.display='none';
document.getElementById('fade').style.display='none';
}

function openPhotoLightBox(img) {
document.getElementById('photopreview').src=img;
document.getElementById('lightphoto').style.display='block';
document.getElementById('fadephoto').style.display='block';
}

function closePhotoLightbox() {
document.getElementById('photopreview').src="";
document.getElementById('lightphoto').style.display='none';
document.getElementById('fadephoto').style.display='none';
}

function addFile() {
  if (document.getElementById("filecount")) {
    var divObj = document.getElementById("filecount");
    var curFile = parseInt(divObj.value);
    var iFileCount = parseInt(divObj.value) + 1;
    divObj.value = parseInt(iFileCount);
  }
  
  if (document.getElementById("filename" + curFile)) {
    var divObj = document.getElementById("filename" + curFile);
    var sFile = divObj.value;
  }
  
  if (document.getElementById("filestring")) {
    document.getElementById("filestring").value = document.getElementById("filestring").value + sFile + ",";
  }
  if (document.getElementById("filenames")) {
      var parentDiv = document.getElementById("filenames");
      var newDiv = document.createElement("div");
      var newDivID = "selectedfile" + curFile;
      newDiv.setAttribute("id",newDivID);
      newDiv.innerHTML = sFile + "&nbsp;<input type='button' value='Remove' name='rmfile" + iFileCount + "' onclick=\"javascript:removeFile(" + curFile + ")\;\"<br />";
  }   parentDiv.appendChild(newDiv);

  if (document.getElementById("files")) {
    var parentDiv = document.getElementById("files");
    var newDiv = document.createElement("div");
    var newDivID = "fileholder" + iFileCount;
    newDiv.setAttribute("id",newDivID);
    newDiv.innerHTML = "<input type=\"file\" name=\"filename" + iFileCount + "\" id=\"filename" + iFileCount + "\" size=\"75\" value=\"\" title=\"&nbsp;Select JPEG to Upload&nbsp;\"\/>";
    parentDiv.appendChild(newDiv);
  }
  
  hideDiv("fileholder" + curFile);
  changeInputs();
}

function fileNameOK(frm,fld,val) {

<!--Check for valid new file name-->
var badchars = new Array("*", "\\", "\/", "\"", "\:", "\?","\<", "\>", "\|", ".");
var file = val;
var checkChar
var checkPos
var dispBadChars

for (i=0;i<badchars.length;i++)
  {
  checkChar = badchars[i]
  checkPos = file.indexOf(checkChar);
  if (checkPos != -1)
    {
    alert("The new file name can't contain the '" + checkChar + "' character.");
    eval("document." + frm + "." + fld + ".value=\'<%=defaultfile%>\'");
    eval("document." + frm + "." + fld + ".focus();");
    return false;
    }
  else
    ;
  }
  return true
}

function checkDupes(id) {
var filename = document.getElementById(id).value;
i = parseInt(document.getElementById("filecount").value);
for (var x=0;x<i;x++)
  {
    if (document.getElementById("filename" + x)) {
      var checkfile = document.getElementById("filename" + x).value;
        if (checkfile) {
          if ((filename == checkfile) && (x != i)){
            alert ('You have already selected this file.');
            clearFileSelect(i);
            return false;
          }
        }
    }
  }
addFile();
}

function addPath() {
  id = "filename" + parseInt(document.getElementById("filecount").value);
  var sFile = document.getElementById(id).value;
  if (!(sFile)) return false;
  var extension = getFileExtension(sFile);
  var allowed = new Array("jpg", "jpeg");
  if (!(extension.match("jpg")) && !(extension.match("jpeg")))
  {
  alert('You must select a JPG or JPEG File...');
  if (document.getElementById(id)) {
    document.getElementById(id).value = "";
  }

  }
  else
  {
  checkDupes(id);
  }
}


function testJava() {
alert ('script is fine');
alert (this.name);
}

function boxcheck(radioObj) {
if(radioObj.checked)
{radioObj.value=-1}
else
{radioObj.value=0}

}

function DivValue(id) {

if (document.getElementById(id))
  {
    var fld = document.getElementById(id).value;
  }

  return(fld);
}

function UpdateCaption(id,pic,galleryID) {
  var caption = DivValue(id);
  var sResponse = ajaxRequest("fx_adm_u_caption.asp?picID=" + pic + "&picCaption=" + caption + "&galleryID=" + galleryID);
  if (sResponse=="OK") {
    if(document.getElementById("results" + pic)) {
      setDivHTML = "images/green_check.gif"
    }
  }
  else
  {
   if(document.getElementById("results" + pic)) {
      setDivHTML = "images/fail_redx.gif"
   }
  }

}

function previewGallery(galleryID) {
  var url = "fx_adm_g_preview.asp?galleryID=" + galleryID;
window.open(url);

}

function previewPicture(picFile) {
  var url = "fx_adm_p_preview.asp?picFile=" + picFile;
window.open(url);

}

function deleteGallery(galleryID) {

if (!(galleryID)) {
  return false;
}

var sDelGal = confirm("Delete Gallery " + galleryID + "?");
if (!(sDelGal)) {
  return false;
}
  
if (sDelGal) {
  var sDelFiles = confirm("Delete Gallery Photos?");
}
var url = "fx_adm_g_del.asp?galleryID=" + galleryID + "&delFiles=" + sDelFiles;
window.location = url;

}

function deletePic(picID) {

if (!(picID)) return false;

var sDelPic = confirm("Delete photo " + picID + " from gallery?");

  if (!(sDelPic)) {
    return false;
  }
ajaxRequest("fx_adm_p_delete.asp?picID=" + picID);
removeTableRow("row" + picID);

}

function deleteGalleryPackage(sGalleryID,sGalleryPackageKey,resultsID,id) {

url = "fx_adm_g_packages_update.asp?method=delete&GalleryPackagesKey=" + sGalleryPackageKey;
var sResponseText = ajaxRequest(url);

if(sResponseText == "OK") {
  //ajaxLoadDiv("fx_adm_c_package_list.asp?galleryID=" + sGalleryID,"rightcol");
  //removeDiv(id);
  window.location = "fx_adm_g_packages_edit.asp?galleryID=" + sGalleryID;
}
else
{
  if(document.getElementById(resultsID)) {
    document.getElementById(resultsID).innerHTML = sResponseText;
  }
      else
    {
      alert('The Package was not deleted due to an error.');
    }
  }
}

function addGalleryPackage(sGalleryID, sCustomPackageID,resultsID) {

url = "fx_adm_g_packages_update.asp?method=add&Active=-1&GalleryPackagesKey=" + sCustomPackageID + "-" + sGalleryID + "&GalleryID=" + sGalleryID + "&CustomPackageID=" + sCustomPackageID;

var sResponseText = ajaxRequest(url);

if(sResponseText == "OK") {
  //ajaxLoadDiv("fx_adm_c_package_list.asp?galleryID=" + sGalleryID,"rightcol");
  //removeDiv(id);
  window.location = "fx_adm_g_packages_edit.asp?galleryID=" + sGalleryID;
}
else
{
  if(document.getElementById(resultsID)) {
    document.getElementById(resultsID).innerHTML = sResponseText;
  }
      else
    {
      alert('The Package was not deleted due to an error.');
    }
  }
}

function getFileExtension(filename) {
if(!filename ) return "";
if( filename.length == 0 ) return "";
var dot = filename.lastIndexOf(".");
if( dot == -1 ) return "";
var extension = filename.substr(dot,filename.length);
return extension.toLowerCase();
}

function returnAttributes(tagName){
var arr=[];
var elem=document.getElementsByTagName('*'), i=0, e;
while(e=elem[i++]){
e[at]?arr[arr.length]=e[at]:null;
}
return arr;
}

function clearFileSelect (id) {

document.getElementById("fileholder" + id).innerHTML ="<input type=\"file\" name=\"" + id + "\" id=\"filename" + id + "\" size=\"75\" value=\"\" title=\"&nbsp;Select JPEG to Upload&nbsp;\"\>";
changeInputs();
}

function clearDiv(id) {
if (document.getElementById(id)) {
  var divID = document.getElementById(id);
  divID.innerHTML = "";
  divID.parentNode.removeChild(divID);
}
}

function removeFile(id) {

clearDiv("selectedfile" + id);
clearDiv("fileholder" + id);
}

function hideDiv(id) {
 if (document.getElementById(id)) {
    document.getElementById(id).className = "hidediv";

 }
}

function showDiv(id) {
  if (document.getElementById(id)) {
    document.getElementById(id).className = "showdiv";
  }
}

 function lockScreen(str)
      {


         var lock = document.getElementById('lockpane');
         if (lock)
            lock.className = 'LockOn';

         lock.innerHTML = "<a href='javascript:stopProcessing();'>Cancel Request</a>";


      }


 function stopProcessing() {
        var lock = document.getElementById('lockpane');
          if (lock)
            lock.className = 'LockOff';
          lock.innerHTML = '';
          window.stop;
          document.execCommand("Stop");
 }

 function ajaxLoadDiv(url,id) {
 var ResponseText = ajaxRequest(url);
 if(document.getElementById(id)) {
  document.getElementById(id).innerHTML = ResponseText;
  changeInputs();
 }
 }
 
 function ajaxLoadGallery(url,id) {
 ajaxProcessing();
 var ResponseText = ajaxRequest(url);
 if(document.getElementById(id)) {
  document.getElementById(id).innerHTML = ResponseText;
 }
 if(document.getElementById("fxgallery_processing")) {
  document.getElementById("fxgallery_processing").style.display = "none";
 }
 }
 
 function ajaxProcessing() {
 if(document.getElementById("fxgallery_processing")) {
  //document.getElementById(id).innerHTML = "fxgallery/images/processing.gif";
  document.getElementById("fxgallery_processing").style.display = "block";
 }
 
 }
 function alertDivContents(id) {
 if (document.getElementById(id)) {
  alert(document.getElementById(id).innerHTML);
 }
 else
 {
  alert('div not found');
  return false;
 }
 }
 
 function alertTagContents(tag) {
 alert(document.getElementsByTagName(tag)[0].innerHTML);
 }
 
 function setDivValue(id,value) {
 var objDiv = document.getElementById(id);
 if (objDiv) {
  objDiv.value=value;
 }
}

 function setDivAt(id,at,value) {
 var objDiv = document.getElementById(id);
 if (objDiv) {
  objDiv.setAttribute(at) = value;
 }
}

function validateAdmUser() {
if (document.getElementById("UserID")) {
  var sUserID=document.getElementById("UserID").value;
}

if (document.getElementById("Password")) {
  var sPassword = document.getElementById("Password").value;
}

if (!(sUserID)) {
  alert("User ID is required");
  return false;
}
if (!(sPassword)) {
  alert("Password is required");
  return false;
}
var url = "fx_adm_v_login.asp?userid=" + sUserID + "&password=" + sPassword;

var sAuthResponse = ajaxRequest(url);

if (sAuthResponse=="OK") {
  return true;
}
else
{
  setDivHTML("result", "Invalid User ID or Password");
  return false;
}
}

function validateUser() {
if (document.getElementById("UserID")) {
  var sUserID=document.getElementById("UserID").value;
}

if (document.getElementById("Password")) {
  var sPassword = document.getElementById("Password").value;
}

if (!(sUserID)) {
  alert("User ID is required");
  return false;
}
if (!(sPassword)) {
  alert("Password is required");
  return false;
}
var url = "fx_v_login.asp?userid=" + sUserID + "&password=" + sPassword;

var sAuthResponse = ajaxRequest(url);

if (sAuthResponse=="OK") {
  return true;
}
else
{
  setDivHTML("result", "Invalid User ID or Password");
  return false;
}

}
function createUserAccount(objName) {
var sValidated = validateFormData(objName);

if (!sValidated) {return false;}

if (document.getElementById("UserID")) {
  var sUserID=document.getElementById("UserID").value;
}

if (document.getElementById("Password")) {
  var sPassword = document.getElementById("Password").value;
}

if (document.getElementById("Email")) {
  var sEmail = document.getElementById("Email").value;
}

if (document.getElementById("SessionID")) {
  var sSessionID = document.getElementById("SessionID").value;
}

var url = "fx_account_a.asp?type=new&userid=" + sUserID + "&password=" + sPassword + "&email=" + sEmail + "&sessionid=" + sSessionID;

var sAuthResponse = ajaxRequest(url);

if (sAuthResponse=="OK") {
  return true;
}
else
{
  setDivHTML("result", sAuthResponse);
  return false;
}

}

function validateGalleryPass() {

if (document.getElementById("GalleryID")) {
  var sGalleryID = document.getElementById("GalleryID").value;
}

if (document.getElementById("Password")) {
  var sPassword = document.getElementById("Password").value;
}

if (!(sGalleryID)) {
  alert("Invalid Gallery selected");
  return false;
}
if (!(sPassword)) {
  alert("Password is required");
  return false;
}

var sAuthResponse = ajaxRequest("fx_v_gpass.asp?galleryID=" + sGalleryID + "&password=" + sPassword);

if (sAuthResponse=="OK") {
  return true;
}
else
{
  setDivHTML("result", sAuthResponse);
  return false;
}

}

function setDivHTML(id,value) {
if (document.getElementById(id)) {
  document.getElementById(id).innerHTML=value;
}
}

function saveCategory(row) {

var sCategoryID = document.getElementById("rowkey" + row).value;
var sGalleryCat = document.getElementById("GalleryCat" + row).value;
var sActive = document.getElementById("Active" + row).value;
var sIncludeInMenu = document.getElementById("IncludeInMenu" + row).value;

if (sCategoryID && sGalleryCat && sActive && sIncludeInMenu) {

  var url = "fx_adm_u_category.asp?ID=" + sCategoryID + "&galleryCat=" + sGalleryCat + "&Active=" + sActive + "&IncludeInMenu=" + sIncludeInMenu + "&method=u";

  var sResponse = ajaxRequest(url);
  if (sResponse=="OK") {
    hideDiv("update" + row);
  }
}
else
{
  return false;
}
}

function savePrintSize(row) {

var sKey = document.getElementById("rowkey" + row).value;
var sPrintSize = document.getElementById("PrintSize" + row).value;

if (sPrintSize && sKey) {

  var url = "fx_adm_u_print.asp?method=u&key=" + sKey + "&printSize=" + sPrintSize;
  var sResponse = ajaxRequest(url);
  if (sResponse=="OK") {
    hideDiv("update" + row);
    showDiv("results" + row);
    ajaxLoadDiv("inc/fx_record_updated.asp", "results" + row);
    changeInputs();
  }
  else
  {
    setDivHTML("update" + row, sResponse);
  }
}
else
{
  return false;
}
}
function radioValue(radioObj) {
if(radioObj) {
}
  else
{
}
}

function deleteCategory(rowKey,divID) {

if (!(rowKey)) return false;
var sAnswer = confirm("Continue with category delete?");
if (!(sAnswer)) return false;
  var url="fx_adm_u_category.asp?ID=" + rowKey + "&method=d";
  var sResponse = ajaxRequest("fx_adm_u_category.asp?ID=" + rowKey + "&method=d");
  if (sResponse=="OK") {
    removeDiv(divID);
  }
  else
  {
    alert(sResponse);
    return false;
  }
}

function deletePrintSize(rowKey,divID) {

var sAnswer = confirm("Continue with Print Size delete?");
if (!(sAnswer)) return false;
  var url="fx_adm_u_print.asp?key=" + rowKey + "&method=d";
  var sResponse = ajaxRequest(url);
  if (sResponse=="OK") {
    removeDiv(divID);
  }
  else
  {
    alert(sResponse);
    return false;
  }
}
function addCategory() {

var sGalleryCat = document.getElementById("AddGalleryCat").value;
var sActive = document.getElementById("AddActive").value;
var sIncludeInMenu = document.getElementById("AddIncludeInMenu").value;

if (sGalleryCat && sActive && sIncludeInMenu) {

  var url = "fx_adm_u_category.asp?galleryCat=" + sGalleryCat + "&Active=" + sActive + "&IncludeInMenu=" + sIncludeInMenu + "&method=a";
  var sResponse = ajaxRequest(url);
  if (sResponse=="OK") {
    ajaxLoadDiv("fx_adm_cat_list.asp","GalleryCategoryListing");
  }
  else
  {
    alert(sResponse);
    return false;
  }
}
else
{
  return false;
}
}

function addPrintSize() {

var sPrintSize = document.getElementById("AddPrintSize").value;

if (sPrintSize) {

  var url = "fx_adm_u_print.asp?method=a&key=" + sPrintSize;
  var sResponse = ajaxRequest(url);
  if (sResponse=="OK") {
    window.location="fx_adm_print_edit.asp";
  }
  else
  {
    alert(sResponse);
    return false;
  }
}
else
{
  return false;
}
}
function validateGallery() {

var sGalleryCat = document.getElementById("GalleryCat").value;
var sGalleryName = document.getElementById("GalleryName").value;

if (sGalleryCat.length==0) {
    alert("A valid gallery category is required.");
    return false;
}
if (sGalleryCat=="Clients" && sGalleryName.length==0) {
    alert("A Title is required for the Clients category.");
    return false;
}
return true;
}

function addSessionPic(picID) {
  var url="fx_o_add_pic.asp?picID=" + picID;
  var sResponse = ajaxRequest(url);
  if (sResponse!="OK") {
    alert(sResponse + "\r\n\r\nThe picture was not added.  Please try again.");
  }
  updateCartCount();
}

function setCookie(cName,cValue) {

var curVal=getCookie(cName);
if (!(curVal)) {
  expires = new Date()
  <!--expires.toLocaleString() -->
  expiresIn = 2592000000;
  expires.setTime(expires.getTime() + expiresIn)
  domain = ".scalmanstudio.com"
  path= "/"
  document.cookie = cName + "=" + escape(cValue) + "; expires=" + expiresIn.toGMTString() + "; path=/; domain=.scalmanstudio.com";
}

}

function getCookie(name)  {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
  if (begin == -1)
  {
      begin = dc.indexOf(prefix);
      if (begin != 0) return null;
  }
  else
  {
      begin += 2;
  }
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
  {
      end = dc.length;
  }
  myval = unescape(dc.substring(begin + prefix.length, end));
  return myval;
}

function updateOrderRow(objName) {
var iPackagePrice = 0;
var iAddChargeQTY = 0;
var iAddCharges = 0;
var iExtAddCharge = 0;
var iOrderQTY = 0;
var iExtPrice = 0;
var divID = objName.id;
var divIDBase = divID.substring(divID.indexOf("~"),divID.length);
var picID = divIDBase.substring(divIDBase.indexOf("~") + 1,divIDBase.lastIndexOf("~"));
var packageID = divIDBase.substring(divIDBase.lastIndexOf("~")+1,divIDBase.length);
var picFile = document.getElementById("PicFile" + picID).value;

var sValidInput = validateInput(objName);

if (sValidInput == false) {
  return false;
}

iOrderQTY = objName.value;

//verify custom package count will not fall below standard package count
var url = "fx_o_cartcheck.asp?picID=" + picID + "&packageID=" + packageID + "&qty=" + iOrderQTY;

var sCartCheck = ajaxRequest(url);
  if (sCartCheck != "OK") {
    alert(sCartCheck);
    objName.value = objName.getAttribute("focusvalue");
    return false;
  }

  if (!(iOrderQTY)) iOrderQTY = 0;
  if (document.getElementById("PriceLevels" + divIDBase)) {
    var sResponse = ajaxRequest("fx_o_pricelist.asp?packageID=" + packageID + "&qty=" + iOrderQTY);
      if (!(sResponse == "null")) {
    document.getElementById("PackagePrice" + divIDBase).value = sResponse;
    document.getElementById("UnitPrice" + divIDBase).innerHTML =  "$" + parseFloat(sResponse).toFixed(2);
    }
  }
//AddCharges
var objAddChargeID = document.getElementById("AddChargeID" + divIDBase);
var objAddChargeDesc = document.getElementById("AddChargeDesc" + divIDBase);
var objAddChargeAmount = document.getElementById("AddChargeAmount" + divIDBase);
var objAddChargeQTY = document.getElementById("AddChargeQTY" + divIDBase);

if (objAddChargeID) {
  var iAddChargeID = objAddChargeID.value;
}

if (objAddChargeDesc) {
  var sAddChargeDesc = objAddChargeDesc.value;
}

if (objAddChargeAmount) {
  var iAddChargeAmount = parseFloat(objAddChargeAmount.value);
}

if (objAddChargeQTY) {
  var iAddChargeQTY = objAddChargeQTY.value;
}

if (iOrderQTY > 0) {
    if (objAddChargeID) {
      iAddCharges = iAddChargeQTY * iAddChargeAmount;
      iAddCharges.toFixed(2);
      if(!(document.getElementById("AddChargeRow" + divIDBase))) {
      appendAddChargeRow("OrderRows" + picID,"AddChargeRow" + divIDBase, sAddChargeDesc,"$" + iAddChargeAmount.toFixed(2),iAddChargeQTY,iAddCharges.toFixed(2));
      }
    }
}

else //iOrderQTY = 0
{
removeDiv("AddChargeRow" + divIDBase);
}

iPackagePrice = document.getElementById("PackagePrice" + divIDBase).value;
iExtPrice = iOrderQTY * iPackagePrice;
if (objAddChargeID) {
  var url = "fx_o_row_u.asp?picID=" + picID + "&picFile=" + picFile + "&packageID=" + packageID + "&qty=" + iOrderQTY + "&addID=" + iAddChargeID + "&addqty=" + iAddChargeQTY;
}
else
{
  var url = "fx_o_row_u.asp?picID=" + picID + "&picFile=" + picFile + "&packageID=" + packageID + "&qty=" + iOrderQTY;
}
//alert(url);
sResponse = ajaxRequest(url);
if (sResponse == "OK") {

iExtAddCharge = parseFloat(getPictureTotal("ExtAddChargeRow~" + picID));
document.getElementById("ExtPrice" + divIDBase).innerHTML = iExtPrice.toFixed(2);
var iPhotoTotal = parseFloat(getPictureTotal("ExtPrice~" + picID)) + iExtAddCharge;

document.getElementById("PhotoTotal" + picID).innerHTML = parseFloat(iPhotoTotal).toFixed(2);
setMatchingDivsContent("OrderTotal",getOrderTotal("PhotoTotal"));
updateCartCount();
}
else
{
  objName.value=iOrderQTY;
  document.getElementById("results").innerHTML = sResponse;
  //alert(sResponse);
  //addNewDiv("error");
  //setDivHTML("error", sResponse);
  return false;
}
}

function getPictureTotal(divMatch) {
var iPhotoTotal = 0
var allIds=getAllAttributes('id');
for(i=0;i<allIds.length;i++) {
  if (allIds[i].match(divMatch)) {
    var iLineTotal = parseFloat(getDivContents(allIds[i]));
    /*alert("divid:" + allIds[i] + " isNaN result:" + isNaN(iLineTotal));*/
    if (!(isNaN(iLineTotal))) {
      iPhotoTotal = parseFloat(iPhotoTotal) + parseFloat(iLineTotal);
  }
}
}
return iPhotoTotal.toFixed(2);
}

function getOrderTotal(divMatch) {
var iOrderTotal = 0;
var allIds=getAllAttributes('id');
for(i=0;i<allIds.length;i++) {
  if (allIds[i].match(divMatch)) {
    var iPhotoTotal = parseFloat(getDivContents(allIds[i]));
    /*alert("divid:" + allIds[i] + " isNaN result:" + isNaN(iLineTotal));*/
    if (!(isNaN(iPhotoTotal))) {
      iOrderTotal = parseFloat(iOrderTotal) + parseFloat(iPhotoTotal);
  }
}
}
return iOrderTotal.toFixed(2);
}

function validateInput(objName) {

var sValidate = objName.getAttribute('validation');
/*var sRequired = document.getElementById(objName).getAttribute('required');
var sMinQty = document.getElementById(objName).getAttribute('minqty');
if (sValidate != "true" && sRequired != "true" && !(sMinQty)) {
  return true;
}
*/

var sValue = objName.value;

/*if (sRequired=="true" && sValue.length==0) {
  var sRefName = document.getElementById(objName).getAttribute('refname');
  if (!(sRefName)) {
    sRefName = document.getElementById(objName).name;
  }
  alert(sRefName + " is required.");
  document.getElementById(objName).blur();
  document.getElementById(objName).focus();
  return false;
} */
switch (sValidate) {
  case 'integer':
    if(isInteger(sValue) == false) {
        alert('This field must be an integer.');
        objName.value = 0;
        return false;
    }
    break;
  case 'password':
    sValidated = validatePassword(sValue);   //cjb
    break;
    
  case 'email':
    sValidated = validateEmail(sValue);
    break;

  case 'userid':
    sValidated = sAlphanumeric(sValue);
    break;

  case 'number':
    if(isNumber(sValue) == false) {
        alert('This field must be a number.');
        objName.value = 0;
        return false;
    }
    break;
    default:
    return true;
    }
var sValidated = checkMinQTY(objName,sValue);
if (sValidated == false) return false;

}

function checkMinQTY(objName,sValue) {
var iMinQTY = objName.getAttribute('minqty');
if (!(iMinQTY)) {
  return true;
}

if (parseFloat(sValue) == 0) return true;

if (parseFloat(sValue) < parseFloat(iMinQTY)){
  alert('Minimum order QTY for this item is ' + iMinQTY + '.');
  objName.value = 0;
  return false;
}

}

function getAllAttributes (at){
var arr=[];
var elem=document.getElementsByTagName('*'), i=0, e;
while(e=elem[i++]){
e[at]?arr[arr.length]=e[at]:null;
}
return arr;
}

function setMatchingDivsContent(divMatch,sValue) {
var allIds=getAllAttributes('id');
for(i=0;i<allIds.length;i++) {
  if (allIds[i].match(divMatch)) {
    setDivHTML(allIds[i],sValue);
}
}
}
function getDivContents(id) {
  if (document.getElementById(id)) {
  return document.getElementById(id).innerHTML;
 }
}

function removeFromOrder(cSessionID,sPicID) {
var sAnswer = confirm('Remove photo from the cart?');
//cjb
if (sAnswer == true) {
var url = "fx_o_row_u.asp?picID=" + sPicID + "&delete=true";
//alert(url);
var sResponse = ajaxRequest(url);
  if (sResponse == "OK") {
    removeDiv("orderrow" + sPicID);
    setMatchingDivsContent("OrderTotal",getOrderTotal("PhotoTotal"));
    updateCartCount();
    return true;
  }
}
return false;
}

function appendAddChargeRow(tableID,rowID,value1,value2,value3,value4){

var tbody = document.getElementById(tableID).getElementsByTagName("tbody")[0];
var row = document.createElement("TR",null)
row.setAttribute("id",rowID);
//description
var td1 = document.createElement("TD",null)
td1.appendChild(document.createTextNode(value1),null)
//amount
var td2 = document.createElement("TD",null)
td2.appendChild (document.createTextNode(value2),null)
td2.setAttribute("class","currency");
td2.setAttribute("className","currency");

//qty
//var sText = "<input type='text' value='" + value3 + "' size='5' maxlength='4' readonly class='currency'>"
var td3 = document.createElement("TD",null)
td3.appendChild (document.createTextNode(value3))
td3.innerHTML ="<input type='text' value='" + value3 + "' size='5' maxlength='4' readonly class='qty'>";
td3.setAttribute("class","currency");
td3.setAttribute("className","currency");

//ext price
var td4 = document.createElement("TD",null)
td4.appendChild (document.createTextNode(value4),null)
td4.setAttribute("id","Ext" + rowID);
td4.setAttribute("class","currency");
td4.setAttribute("className","currency");
row.appendChild(td1);
row.appendChild(td2);
row.appendChild(td3);
row.appendChild(td4);
tbody.appendChild(row);
changeInputs();
}

function removeTableRow(rowID) {
if (document.getElementById(rowID)) {
  var oldDiv = document.getElementById(rowID);
  oldDiv.parentNode.removeChild(oldDiv);
  }
}

function removeDiv(id) {
if (document.getElementById(id)) {
  /*document.getElementById(id).innerHTML = "";*/
  var oldDiv = document.getElementById(id);
  oldDiv.parentNode.removeChild(oldDiv);
}
}

function addNewDiv(id) {
   var newdiv = document.createElement('div');
   newdiv.setAttribute('id', id);
   document.body.appendChild(newdiv);

}

function updateCartCount() {
  if (document.getElementById("CartCount")) {
    setDivHTML("CartCount",ajaxRequest('fx_o_cartcount.asp'));
  }
  if (document.getElementById("PhotoCount")) {
    setDivHTML("PhotoCount",ajaxRequest('fx_o_photocount.asp'));
  }
}

function formatPhone(event,objName) {
var divObj = objName.id;
var chars = document.getElementById(divObj).value;
var count = chars.length;
if (event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;

if (count == 3) {
document.getElementById(divObj).value = chars + '-';
}
if (count == 7) {
document.getElementById(divObj).value = chars + '-';
}
}

function validateEmail(objName) {
var value = objName.value;
    var sInvalid
		var at="@"
		var dot="."
		var lat=value.indexOf(at)
		var lstr=value.length
		var ldot=value.indexOf(dot)
		if (value.indexOf(at)==-1){
     var sInvalid = "true"
		}

		if (value.indexOf(at)==-1 || value.indexOf(at)==0 || value.indexOf(at)==lstr){
     var sInvalid = "true"
		}

		if (value.indexOf(dot)==-1 || value.indexOf(dot)==0 || value.indexOf(dot)==lstr){
      var sInvalid = "true"
		}

		 if (value.indexOf(at,(lat+1))!=-1){
      var sInvalid = "true"
		 }

		 if (value.substring(lat-1,lat)==dot || value.substring(lat+1,lat+2)==dot){
      var sInvalid = "true"
		 }

		 if (value.indexOf(dot,(lat+2))==-1){
      var sInvalid = "true"
		 }

		 if (value.indexOf(" ")!=-1){
      var sInvalid = "true"
		 }
     if (sInvalid) {
      //alert("Invalid Email Address")
      objName.blur();
      objName.focus();
      return false
    }
  return true
}

function validatePassword(objName) {
var sPassword = objName.value;

if ((sPassword.length < 8) || (sPassword.length > 20)) {
  alert('The password must be 8 to 20 characters.');

  if (objName.id) {
    document.getElementById(objName.id).blur();
    document.getElementById(objName.id).focus();
  }
  return false
}
}

function validateFormData(objName) {

var i = 0;
var sErrors = "";
for (i=0;i<objName.elements.length;i++) {
  var el = objName.elements[i].id;
  var elType = document.getElementById(el).type;

  if (elType=="text" || elType=="password" || elType=="textarea") {
    if (document.getElementById(el).getAttribute("required") == "true") {
      sResponse = validateData(el);
      if (sResponse != true) {
        sErrors = sErrors + "\r\n" + sResponse;
    }
    }
}
}
if (sErrors.length > 0) {
  alert(sErrors);
  return false;
}
return true;
}
function validateData(objName) {
//init vars for valiation properties
var sField = document.getElementById(objName);
var sValue = sField.value;
var sRequired = sField.getAttribute("required").toLowerCase();
var iMinQty = sField.getAttribute("minqty");
var iMaxQty = sField.getAttribute("maxqty");
var sValidation = sField.getAttribute("validation");
var sRefName = sField.getAttribute("RefName");
var iMinLen = sField.getAttribute("minlen");
var iMaxLen = sField.getAttribute("maxlen");
var sMatches = sField.getAttribute("matches");
var sValidated;
if (!(sRefName)) {
  sRefName = objName;
}
//required
if ((sRequired == "true") && (sValue.length == "0")) {
  return sRefName + " is required.";
}

//validation method
if (sValidation == "phone") {
  sValidated = checkInternationalPhone(sValue);
  if (!(sValidated)) return "Invalid Phone Number";
}

if (sValidation == "email") {
  sValidated = validateEmail(sField);
  if (!(sValidated)) return "Invalid Email Address";
}
//minlen

if (iMinLen && parseFloat(sValue.length) < parseFloat(iMinLen)) {
  return sRefName + " must be at least " + iMinLen + " characters.";
}

//matches other field
if (sMatches && sValue != document.getElementById(sMatches).value) {
  return "The passwords do not match."
}

if (sValidation == "alphanumeric") {
  sValidated = isAlphanumeric(sField);
  if (!(sValidated)) return sRefName + " must only contain letters (A-Z, a-z) and numbers (0-9).";
}
return true;
}

function validateAccountInfo(objName) {
var sName = document.getElementById("Name");
  if (sName) {
    if (sName.value.length == 0) {
      alert("Name field is required.");
      sName.blur();
      sName.focus();
      return false;
    }
  }
var sEmail = document.getElementById("Email");
  if (sEmail) {
    return validateEmail(sEmail);
  }
return true;
}

function validateOrderSummary(objName) {
var fReqText = new Array ("Name","Address1","City","State","Zip","Phone");

for (var i=0;i<fReqText.length;i++) {
  var sField = document.getElementById(fReqText[i]);
  if (sField) {
    if (sField.value.length == 0) {
      alert(fReqText[i] + " is required.");
      sField.blur();
      sField.focus();
      return false;
    }
  }
}

return true;
}

var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
function trim(s)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}
function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
var bracket=3
strPhone=trim(strPhone)
if(strPhone.indexOf("+")>1) return false
if(strPhone.indexOf("-")!=-1)bracket=bracket+1
if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false
var brchr=strPhone.indexOf("(")
if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false
if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function hideDivFromAnonymous(objName) {
  var sUserID = getCookie("userid");
  if (!(sUserID)) {
    if (objName) {
      document.getElementById(objName).style.display = "none";
    }
  }
}

function ajaxFormPost(objName,url,resultsID,row) {

objName = document.getElementById(objName);
if (!(objName)) {
  return false;
}

if (url.indexOf("?") == -1) {
  url = url + "?"
}
else
{
  url = url + "&"
}

  for (i=0;i<objName.elements.length;i++) {
    var el = objName.elements[i].id;
    var varName = el.replace(row,'');
    var elType = document.getElementById(el).type;
    var elType = document.getElementById(el).type;
    if (elType == "text" || elType == "password" || elType == "textarea" || elType == "select" || elType == "checkbox" || elType == "hidden" || elType == "select-one") {
      url = url + varName + "=" + document.getElementById(el).value + "&";
    }
}

 var sResponseText = ajaxRequest(url);

 if(document.getElementById(resultsID)) {
  if(sResponseText == "OK") {
    showDiv(resultsID);
    hideDiv("update" + row);
    document.getElementById(resultsID).innerHTML = "<img src='images/success_greencheck.gif'>&nbsp\;Record updated!";
    resetFormFields(objName, row);
  }
  else
  {
    document.getElementById(resultsID).innerHTML = "<img src='images/fail_redx.gif'>&nbsp\;Update failed!&nbsp\;" + sResponseText;
    //alert(sResponseText);
  }
 }

}
function isAlphanumeric(id){
	var numaric = id.value;
	for(var j=0; j<numaric.length; j++)
		{
		  var alphaa = numaric.charAt(j);
		  var hh = alphaa.charCodeAt(0);
		  if((hh > 47 && hh<58) || (hh > 64 && hh<91) || (hh > 96 && hh<123))
		  {
		  }
		else	{
			 return false;
		  }
 		}

 return true;
}

function setFocusValue(objName) {

objName.setAttribute("focusvalue",objName.value);

}

function isNumber(sValue) {

var isNumber = true;
var ValidChars = "0123456789.";
var Char;
for (i = 0; i < sValue.length && isNumber == true; i++)
      {
      Char = sValue.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         isNumber = false;
         return false;
         }
      }
   return true;
}

function resetFormFields(objName,row) {

  for (i=0;i<objName.elements.length;i++) {
  var el = objName.elements[i].id;
  if(el) {
    var elType = document.getElementById(el).type;
     if (elType == "text" || elType == "password" || elType == "textarea") {
      document.getElementById(el).setAttribute("loadvalue", document.getElementById(el).value);
      setBlurStyle(el);
     }
  }
  }
  if(row != "null") {
    if(document.getElementById("rowreset" + row)) hideDiv("rowreset" + row);
    if(document.getElementById("rowupdate" + row)) hideDiv("rowupdate" + row);
  }
  else
  {
    if(document.getElementById("formreset")) hideDiv("formreset");
    if(document.getElementById("formupdate")) hideDiv("formupdate");
  }
}

function setBlurStyle(id) {

var objName = document.getElementById(id);
var curClass = objName.className;
var newClass = curClass;

if(objName.getAttribute("loadvalue") == null) {
      newClass = curClass.substring(0,curClass.indexOf("_"));
}

if((objName.getAttribute("loadvalue") != objName.value) && (objName.getAttribute("loadvalue") != null)) {

  if(curClass.substring(0,curClass.indexOf("_")) == -1) {
    newClass = curClass + "_edited";
  }
  else
  {
  for(iCharCount=0;newClass.indexOf("_")!=-1;iCharCount++) {
    newClass = curClass.substring(0,curClass.indexOf("_"));
  }
  newClass = newClass + "_edited";
}
}
if(objName.getAttribute("loadvalue") == objName.value) {
  if(curClass.indexOf("_") == -1) {
  newClass = curClass;
  }
  else
  {
  newClass = curClass.substring(0,curClass.indexOf("_"));
  }
}

objName.className = newClass;
}

function sortPhoto(galleryID, picID, oldPos, swapPos) {

//alert(picID + " will swap with pos " + swapPos);
url = "fx_adm_u_picsort.asp?galleryID=" + galleryID + "&picID=" + picID + "&oldPos=" + oldPos + "&swapPos=" + swapPos;
//alert(url);
var sResponse = ajaxRequest(url);
if (sResponse = "OK") {
  ajaxLoadDiv("fx_adm_p_list.asp?galleryID=" + galleryID,"GalleryPhotos");
}
else
{
  setDivHTML("GalleryPhotos",sResponse);
}
}
