// JScript File

var EZP = {
    Version: '0.0.3',
    require: function(libraryName) {
        // inserting via DOM fails in Safari 2.0, so brute force approach
        document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
    },
    //Must have prototype library loaded first before loading Configurator
    load: function(){
        //Check for included Prototype library and recent version supported
        if((typeof Prototype=='undefined') ||
           (typeof Element == 'undefined') || (typeof Element.Methods=='undefined') ||
           parseFloat(Prototype.Version.split(".")[0] + "." +
                  Prototype.Version.split(".")[1]) < 1.5)
       throw("EZPrints Library requires the Prototype JavaScript framework >= 1.5.0");

    $A(document.getElementsByTagName("script")).findAll( function(s) {return (s.src && s.src.match(/ezp\.js(\?.*)?$/))}).each(
      function(s) {
          var path = s.src.replace(/ezp\.js(\?.*)?$/,'');
          var includes = s.src.match(/\?.*load=([a-z,]*)/);
            //Load required Libraries
            (includes ? includes[1] : 'UserLibrary,xmlrpc,json').split(',').each(
             function(include) { EZP.require(path+include+'.js') });
    });
  }

}

//Load require library includes
EZP.load();


/*********************
  V
*********************/

function V(obj,type)
{
	var def;
	var o=$(obj);
	if (o)
	{	
	    if (o.checked)
	        def = o.checked
	    else
	        def= o.value;
	}
	
		
	switch(type)
	{
	    case "String":
	        if (def.indexOf('<')==0) def = encodeURI(def);
	        def=String(def);
	    break;
	    case "Boolean":
	        if (def==true || def=='true' || def==1 || def=="on")
	            def=true;
	         else
	            def=false;
	    break;
	    case "Double":
	        def=parseFloat(def);
	        def=parseFloat(def+"0.00000000001");
	    break;
	    case "Int16":
	    case "Int64":
	    case "Int32":
	        if (def)
	            def=def * 1;
	    break;
	}
    return def;
}


/*********************
  getElementsByClassName
*********************/
/*	Written by Jonathan Snook, http://www.snook.ca/jonathan
	Add-ons by Robert Nyman, http://www.robertnyman.com */
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}


/*********************
  string handling
*********************/

function trim(str) {
  return str.replace(/^\s*|\s*$/g,"");
}


/*********************
  characters
*********************/
g_charCodes = {
	HOME : 36,
	LEFT_ARROW : 37,
	RIGHT_ARROW : 39,
	DELETE : 46
}

//document.onkeyup = checkKeycode
function checkKeycode(e) {
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which	;
	
}


/*********************
  cookie handling
*********************/

function getCookie(cookieName) {
	var strResults = ""; //new String();
	var offset = 0;
	var end = 0;
	var strSearch = new String(cookieName) + "=";
	if (document.cookie.length > 0) {
		offset = document.cookie.indexOf(strSearch);
		if (offset != -1) {
			offset += strSearch.length;
			end = document.cookie.indexOf(";", offset);
			if (end == -1) {
				end = document.cookie.length;
			}
			strResults = unescape(document.cookie.substring(offset, end));
		}
	}
	return strResults;
}


/*********************
  validation
*********************/

// If text field is empty or has only whitespace
function whiteSpaceOnly(val) {
	var s = new String(val);
	var re = /^\s+$/; // matches strings of all whitespace chars

	if (s.match(re) || s == "") {
		return true;
	}
	else {
		return false;
	}
}

function isValidFieldLength(field, err_field, msg, length) {
	if (field.value.length != length) {
		err_field.innerHTML = msg;
		err_field.style.display = 'block';
		field.disabled = false;
		field.focus();
		return false;
	}
	return true;
}


function isValidField(field, err_field, msg) {
	if ( whiteSpaceOnly(field.value) ) {
		err_field.innerHTML = msg;
		err_field.style.display = 'block';
		field.disabled = false;
		field.focus();
		return false;
	}
	return true;
}

function isValidEmail(field, err_field, msg) {
	if ( !isValidDisneyEmail(field.value) ) {
		err_field.innerHTML = msg;
		err_field.style.display = 'block';
		field.disabled = false;
		field.focus();
		return false;
	}
	return true;
}

function isValidSelect(field, err_field, msg) {
	if ( field.value == 'select' || field.value == '') {
		err_field.innerHTML = msg;
		err_field.style.display = 'block';
		field.disabled = false;
		field.focus();
		return false;
	}
	return true;
}

function displayError(field,err_field,msg) {
	err_field.innerHTML = msg;
	err_field.style.display = 'block';
	field.disabled = false;
	return false;
}

function clearErr(elem) {
	if (! whiteSpaceOnly(elem.value) ) {
		$('err_' + elem.id).innerHTML = '';
		$('err_' + elem.id).style.display = 'none';
	}
}

function clearErrValue(error) {
	$(error).innerHTML = '';
	$(error).style.display = 'none';
}

function clearErrMatch(elem,elemMatchId,bCaseSensitive) {
	if ( bCaseSensitive && (elem.value == $F(elemMatchId)) || (elem.value.toLowerCase() == $F(elemMatchId).toLowerCase()) ) {
		$('err_' + elem.id).innerHTML = '';
		$('err_' + elem.id).style.display = 'none';
	}
}


function autoFocus(field, limit, nextel, evt) {
	var next = document.getElementById(nextel);

	if (next) {
		evt = (evt) ? evt : event;
		var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
		if ( charCode > 31 && field.value.length == limit && 
			!(charCode==g_charCodes.HOME || charCode==g_charCodes.LEFT_ARROW || charCode==g_charCodes.RIGHT_ARROW || charCode==g_charCodes.DELETE) ){
			next.focus( );
		}
	}

	return false;
}



/*********************
  querystring
*********************/
function QueryString(key){
	var value = null;
	for (var i=0;i<QueryString.keys.length;i++)	{
		if (QueryString.keys[i]==key)		{
			value = QueryString.values[i];
			break;
		}
	}
	return value;
}

function QueryString_Parse(){
	var query = window.location.search.substring(1);
	var pairs = query.split("&");

	for (var i=0;i<pairs.length;i++)	{
		var pos = pairs[i].indexOf('=');
		if (pos >= 0)		{
			var argname = pairs[i].substring(0,pos);
			var value = pairs[i].substring(pos+1);
			QueryString.keys[QueryString.keys.length] = argname;
			QueryString.values[QueryString.values.length] = value;
		}
	}
}

// parse the querystring for info
QueryString.keys = new Array();
QueryString.values = new Array();
QueryString_Parse();





/*********************
  for cart
*********************/
function formatCurrency(num)
{
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function disableForm(theform,disabled) {
if (document.all || document.getElementById) {
	for (i = 0; i < theform.length; i++) {
	var formElement = theform.elements[i];
		if (true) {
			formElement.disabled = disabled;
	}}}}
