var userAgent = navigator.userAgent.toLowerCase();
var is_opera  = (userAgent.indexOf('opera') != -1);
var is_saf    = ((userAgent.indexOf('applewebkit') != -1) || (navigator.vendor == 'Apple Computer, Inc.'));
var is_webtv  = (userAgent.indexOf('webtv') != -1);
var is_ie     = ((userAgent.indexOf('msie') != -1) && (!is_opera) && (!is_saf) && (!is_webtv));
var is_ie4    = ((is_ie) && (userAgent.indexOf('msie 4.') != -1));
var is_moz    = ((navigator.product == 'Gecko') && (!is_saf));
var is_kon    = (userAgent.indexOf('konqueror') != -1);
var is_ns     = ((userAgent.indexOf('compatible') == -1) && (userAgent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_saf));
var is_ns4    = ((is_ns) && (parseInt(navigator.appVersion) == 4));
var is_mac    = (userAgent.indexOf('mac') != -1);

var msg_password_length = 'Minimum of 4 characters in length.';
var msg_password_verify = 'Passwords do not match.';
var msg_submit_error = 'The following fields are required or are invalid:';
var msg_email_confirm_error = 'You have not confirmed your email address. Please confirm your email address and try again.';
var msg_field_blank = 'Required field must not be blank.';
var msg_field_format = 'Invalid format.';
var msg_order_checking = '<span class="message">Check availability ...</span>';
var msg_user_name_checking = '<span class="message">Check availability ...</span>';
var msg_user_name_check_error = 'We cannot check availability at this time. Please try again later.';
var msg_invalid_number = 'Invalid positive number: ';
var msg_calculate_invalid_number = "To calculate the shipping cost,<br/>the quantity can't be 0 (zero)";
var msg_review_submitting = "<span>Thanks for submitting your review. It should be online whihin two business days. </span>";
var msg_review_created = "<span>Thanks for submitting your review.</span>";
var msg_delete_address_confirm = 'Are you sure you want to delete this address?';
var msg_required_input_field = 'Please input {0} .';
var msg_required_select_field = 'Please select {0} .';
var msg_check_email = '{0} format error, enter the correct Email.';
var msg_check_number = '{0} must be zero or positive integers, please re-enter.';
var msg_check_integer = '{0} must be positive integers, please re-enter.';
var msg_check_float = '{0} for the float, please re-enter.';

function GetE(s) {if(document.getElementById){return document.getElementById(s);}else if (document.all){return document.all[s];}else if(document.layers){return document.layers[s];} else {return null;}}
function GetByName(s) { return document.getElementsByName(s);}
function GetByTagName(s) { return GetTags(document, s);}
function GetTarget(el) { if (document.getElementsByTagName && document.all) return el.srcElement; return el.target;}
function GetTags(parentobj, tag) {	if (parentobj == null){return new Array();}	else if (typeof parentobj.getElementsByTagName != undefined){return parentobj.getElementsByTagName(tag);}else if (parentobj.all && parentobj.all.tags){return parentobj.all.tags(tag);}else{return new Array();}}
function isEmpty(s) {if (s == null) return true; return (s.length == 0); }
function isBlank(s) {if (s == null) return true; return (s.trim().length == 0); }
String.prototype.trim = function(){ return this.replace(/^\s+|\s+$/g,'') };
String.prototype.equals = function(value){ try { if (value==this) return true; return false; } catch(e) { return false; } };
String.prototype.equalsIgnoreCase = function(value){ try { if (value.toLowerCase()==this.toLowerCase()) return true; return false; } catch(e) { return false; } };
String.prototype.startsWith = function(value) { if (this==null || value==null) return false; if (value.length>this.length) return false; if (this.substring(0, value.length).equals(value)) return true; return false; };
String.prototype.isEmpty = function() {if (this == null) return true; return (this.length == 0); }
String.prototype.isBlank = function() {if (this == null) return true; return (this.trim().length == 0); }
String.prototype.textLength = function() {if (this==null) return 0; var tlen=0;  for (var i=0;i<this.length;i++){var code = this.charCodeAt(i);if(code>=0&&code<=128)tlen+=1; else tlen+=3;}return tlen;}
function getParent(el, tag) { if (el == null) return null; else if (el.nodeType == 1 && el.tagName.equalsIgnoreCase(tag)) return el; else return getParent(el.parentNode, tag); }

var addListener = function() { if ( window.addEventListener ) {	return function(el, type, fn) {	el.addEventListener(type, fn, false); }; } else if ( window.attachEvent ) { return function(el, type, fn) {	var f = function() { fn.call(el, window.event);	}; el.attachEvent('on'+type, f); };	} else { return function(el, type, fn) { element['on'+type] = fn; }	} }(); 

function getMessage(msg, arg0) { return msg.replace("{0}", arg0); }
function getMessage(msg, arg0, arg1) { msg = msg.replace("{0}", arg0); return msg.replace("{1}", arg1); }

