/* --------------------------------- */
/*          STOREFRONT v1.0          */
/* --------------------------------- */
/*            GLOBAL JS              */
/* --------------------------------- */
/*  Created:  2003-06-01             */
/*  Issued:   2003-06-01             */
/*  Modified: 2004-05-08             */
/*  Client: Sophiaknows              */
/*  Copyright (c) 1998-2004          */
/*  A.R. Tony Pisarra, SophiaKnows   */
/* --------------------------------- */
/* --------------------------------- */


// SK UTILITIES:
function SKWindow(html) {
	args = SKWindow.arguments;
	params="width="+((args[1])?args[1]:400);
	params += ",height="+((args[2])?args[2]:200);
	params +=",resizable=yes,scrollbars=yes";
	popwindow=window.open('','',params);
	popwindow.document.write("<style>body,table{font-family:'Lucida Grande','Trebuchet MS',sans-serif;font-size:11px;}td{vertical-align:top;border:solid #ddd 1px;} a {text-decoration:none;}td {padding:8px;} div{padding:5px;}a {color:#447;}<\/style>");
	popwindow.document.write(html);
	popwindow.document.close();
	}


// SK UTILITIES:
function SKParseform(){
	var $FORMDATA=new Object();
	var args = DBParseform.arguments;
    if (document.location.search.indexOf('=')>-1) { 
        keyvalues=unescape(document.location.search.substring('1').replace(/\+/g,' ')).split("&");
        for(p=0;p<keyvalues.length;p++) {
            pairs=keyvalues[p].split("=");
            $FORMDATA[pairs[0]]=pairs[1];
            }            
        }
    return ((args[0]) ? (($FORMDATA[args[0]])?$FORMDATA[args[0]]:"") : $FORMDATA);
    }

// SK UTILITIES:
// SKXML OBJECT: PARSE XML
function SKXml(url) {
	var args = SKXml.arguments;
	var tag = ((args[1])?args[1]:"date");
	this[tag]=new Array();	
	var xhReq = new createXMLHttpRequest();
	xhReq.open("GET", url, false);
	xhReq.send(null);
	xml = xhReq.responseXML;
	var itemlist = xml.documentElement.getElementsByTagName(tag);
	for(i=0;i<itemlist.length;i++) {
		this[tag][i] = new Object();
		for(a=0;a<itemlist[i].attributes.length;a++) {
			this[tag][i][itemlist[i].attributes[a].name] = itemlist[i].getAttribute(itemlist[i].attributes[a].name);
			}
		}
	}

// SK UTILITIES:
// SKRSS OBJECT:	PARSE RSS/RDF
function SKRss(url) {
	var args = SKRss.arguments;
	var tag = ((args[1])?args[1]:"item");
	this[tag]=new Array();	
	var xhReq = new createXMLHttpRequest();
	xhReq.open("GET", url, false);
	xhReq.send(null);
	xml = xhReq.responseXML;
	var items = xml.documentElement.getElementsByTagName(tag);
	for(i=0;i<items.length;i++) {
		this[tag][i] = new Object();		
		for(c=0;c<items[i].childNodes.length;c++) {
			var key = items[i].childNodes[c].nodeName;
			if(items[i].childNodes[c].nodeType==1) this[tag][i][items[i].childNodes[c].nodeName] = decode_htmlentities(items[i].getElementsByTagName(key)[0].firstChild.nodeValue);
			}
		}
	}
// SK UTILITIES:
function createXMLHttpRequest() {
   try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
   try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
   try { return new XMLHttpRequest(); } catch(e) {}
   alert("XMLHttpRequest not supported");
   return null;
   }

// SK UTILITIES:
function SKXmllocal(xml) {
	var items=xml.match(/<item[^<]+\/>/g);
	var xItems = new Array();
	for (x = 0; x<items.length; x++) {
		var atts = items[x].match(/\w+=[\'\"][^\'\"]+[\'\"]/g);
		xItems[x] = new Object();
		for(a=0;a<atts.length;a++) {
			pairs = atts[a].replace(/[\'\"]/g,"").split("=");
			xItems[x][pairs[0]] = pairs[1];
			}
		}
	return xItems;
	}
// SK UTILITIES:
function fcurrency(num) {
	num=Math.round(num*100)/100;
	num=num+"";
	num=num.replace(/^(\d+)$/,"$1.00");
	if(num.search(/^\d+\.\d$/)>-1){num=num+"0";}
	return num;
	}





/* PARSE_FORM (begin all) */

/* PARSE_FORM (init values array) */
var formdata=new Array();
/* PARSE_FORM (end init) */

/* PARSE_FORM (begin parse_form) */
function parse_form(){
    if (document.location.search.indexOf('=')>-1) { 
        keyvalues=unescape(document.location.search.substring('1').replace(/\+/g,' ')).split("&");
        for(p=0;p<keyvalues.length;p++) {
            pairs=keyvalues[p].split("=");
            formdata[pairs[0]]=pairs[1];
            }            
        }
    }
/* PARSE_FORM (end parse_form) */

/* PARSE_FORM (end all) */



/* POPUP: (function: PopTool) */
function PopTool(a) {
   var argv=PopTool.arguments;
   var params="width=" + ((argv[1])?argv[1]:600);
       params+=",height="+((argv[2])?argv[2]:450);
       params+=",scrollbars=1,resizable=1";
   var x_target = 'new';
   var x_url = a;
   x_target=((x_target)?x_target:"_blank");
   var popWindow=window.open(x_url,x_target,params);	
   popWindow.focus();
   return false;
   }
/* POPUP: (end PopTool) */


/* POPWINDOW: (function: PopTool) */
function PopWindow(a) {
   var argv=PopTool.arguments;
   var params="width=" + ((argv[1])?argv[1]:600);
       params+=",height="+((argv[2])?argv[2]:450);
       params+=",scrollbars=1,resizable=1";
   var x_target = 'new';
   var x_url = a;
   x_target=((x_target)?x_target:"_blank");
   var popWindow=window.open(x_url,x_target,params);	
   popWindow.focus();
   return false;
   }
/* POPWINDOW: (end PopTool) */


function ReturnStrippedUrl(queryUrlIn) {
	queryUrlIn=queryUrlIn.replace(/\?.*$/,"");
	return queryUrlIn;
	}


/*
FIELD CHECKS

   1. IsEmail(c,r)    -- is a valid address
   2. IsPhonenumber(c,r)    -- is a valid 10 digit phone number may include " -.()"
   2. IsZip(c,r)    -- is a valid 5 or 9 digit ZIP code
   4. IsPlaintext(c,r) -- allow only numbers and english letters
   5. IsInteger(c,r)    -- is an integer
   6. IsNotHtml(c,r)    -- does not include markup
   7. IsSecure(c,r)    -- is a secure password
   8. IsEqual(c,m,r)    -- matches value of specified field
   9. IsSelected(c) -- a valid option is selected
  10. IsRequired(c) -- a required field has contents

ARGUMENT KEY

   c = control-reference
   r = required (0|1)
   m = matched control reference

*/

// FORMAT TESTS:

// FORMAT TESTS: IS EMAIL
function IsEmail(c,r) {
    if(r && IsRequired(c)) {return 1;}
    if (!c.value 
        || c.value.search(/^[\w-\.]+@[\w-\.]+\.\w+$/)>-1) {
        unflag_error(c," Unrecognized Format");
        return 0;
        } else {
            flag_error(c," Unrecognized Format");
            return 1;
            }
    }


// FORMAT TESTS: IS PHONENUMBER        
function IsPhonenumber(c,r) {
    if(r && IsRequired(c)) {return 1;}
    if (!c.value 
        || c.value.search(/\(?\d{3}\)?[ \.-]?\d{3}[ \.-]\d{4}/)>-1) {
        unflag_error(c," Unrecognized Format");
        return 0;
        } else {
            flag_error(c," Unrecognized Format");
            return 1;
            }
    }

// FORMAT TESTS: IS ZIP
function IsZip(c,r) {
    if(r && IsRequired(c)) {return 1;}
    if (!c.value 
        || c.value.search(/^\d\d\d\d\d(-\d\d\d\d)?$/)>-1) {
        unflag_error(c," Unrecognized Format");
        return 0;
        } else {
            flag_error(c," Unrecognized Format");
            return 1;
            }
    }

// FORMAT TESTS: IS PLAINTEXT
function IsPlaintext(c,r) {
    if(r && IsRequired(c)) {return 1;}
    if (c.value.search(/[^\w]/)>-1) {
        flag_error(c," Letters and numbers only");
        return 1;
        } else {
            unflag_error(c," Letters and numbers only");
            return 0;
            }
    }

// FORMAT TESTS: IS INTEGER
function IsInteger(c,r) {
    if(r && IsRequired(c)) {return 1;}
    if (c.value.search(/[^\d]/)>-1) {
        flag_error(c," Must be integer");
        return 1;
        } else {
            unflag_error(c," Must be integer");
            return 0;
            }
    }

// FORMAT TESTS: IS NOT HTML
function IsNotHtml(c,r) {
    if(r && IsRequired(c)) {return 1;}
    if (c.value.search(/<[^>]+>/)>-1) {
        flag_error(c," Markup not permitted");
        return 1;
        } else {
            unflag_error(c," Markup not permitted");
            return 0;
            }
    }

// FORMAT TESTS: IS SECURE
function IsSecure(c,r) {
    if(r && IsRequired(c)) {return 1;}
    if(c.value.search(/[A-Z]/)>-1 
        && c.value.search(/[\d]/)>-1
        && c.value.length>3) {
        unflag_error(c," Must include at least 4 characters, including 1 number and 1 capital");
        return 0;
        } else {
            flag_error(c," Must include at least 4 characters, including 1 number and 1 capital");
            return 1;
            }
    }

// FORMAT TESTS: IS EQUAL
function IsEqual(c,m,r) {
    if(r && IsRequired(c)) {return 1;}
    if(!c.value || c.value == m.value) {
        unflag_error(c," Doesn't match "+ m.name);
        return 0;
        } else {
            flag_error(c," Doesn't match "+ m.name);
            return 1;
            }
    }


// FORMAT TESTS: IS SELECTED
function IsSelected(c,r) {
    if(c.selectedIndex>0) {
        unflag_error(c," Required");
        return 0;
        } else {
            flag_error(c," Required");
            return 1;
            }
    }

// FORMAT TESTS: IS REQUIRED
function IsRequired(c) {
    if(c.value) { 
        unflag_error(c," Required");
        return 0;
        } else { 
            flag_error(c," Required");
            return 1;
            }
    }

// FLAG/UNFLAG ERRORS

// FLAG ERROR
function flag_error(field,msg) {
    if(document.getElementById) {
        var td=document.getElementById(field.name)
        td.style.color="#900";
        }
    }

// UNFLAG ERROR
function unflag_error(field,msg) {
    if(document.getElementById) {
        var td=document.getElementById(field.name)
        td.style.color="#000";
        }
    }



