/*******************************************************
 * 
 * Miscellaneous Functions/Prototypes
 * 
 ******************************************************/

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

function nl2br(input) {
	var regX = new RegExp("\\n", "g");
	var replaceString = "<br />\n";
	return input.replace(regX, replaceString);
}

function stripCarriageReturns(input) {
	var regX = new RegExp("\\r", "g");
	var replaceString = "";
	return input.replace(regX, replaceString);
}

function strReplaceAll(input, findWhat, replaceWith) {
	output = input;
	intIndexOfMatch = output.indexOf(findWhat);
	while (intIndexOfMatch != -1){
		output = output.replace(findWhat, replaceWith);
		intIndexOfMatch = output.indexOf(findWhat);
	}
	return output;
}

function checkEnter(event) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if ((keyCode == 13)) {
		return true;
	}
	else {
		return false;
	}
}

function numericEntryOnly(key, keyChar, exceptionList) {
	//control keys
	if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27)) {
		return true;
	}
	//numbers
	else if ((("0123456789").indexOf(keyChar) > -1)) {
		return true;
	}
	//character exceptions
	else if (exceptionList.length > 0) {
		if ((exceptionList.indexOf(keyChar) > -1)) {
			return true;
		}
		else {
			return false;
		}
	}
	return false;
}

function getHandle(what) {
	var handle;
	if (typeof(what) == 'string') {
		handle = document.getElementById(what);
	}
	else {
		handle = what;
	}
	return handle;
}

function show(what, displayMode) {
	if (typeof(displayMode) == 'undefined') displayMode = 'block';
	getHandle(what).style.display = displayMode;
}

function showBlock(what) {
	show(what);
}

function showInline(what) {
	show(what, 'inline');
}

function hide(what) {
	getHandle(what).style.display = 'none';
}

function toggle(what, displayMode) {
	if (typeof(displayMode) == 'undefined') displayMode = 'block';
	if (document.getElementById(what).style.display == 'none') {
		show(what, displayMode);
	}
	else {
		hide(what);
	}
}

function toggleNotifyEmailSignup(what) {
	toggle(what);
	if (document.getElementById(what).style.display == 'block') {
		parent.document.getElementById('notifyFrame').style.height = '530px';
		parent.document.getElementById('notifyLightbox').style.height = '530px';		
	}
	else {
		parent.document.getElementById('notifyFrame').style.height = '495px';
		parent.document.getElementById('notifyLightbox').style.height = '495px';		
	}
}

function toggleBlock(what) {
	toggle(what, 'block');
}

function toggleInline(what) {
	toggle(what, 'inline');
}

function clearSelectList(id) {
	selectList = getHandle(id);
	while (selectList.length > 0) {
		selectList.options[selectList.length - 1] = null;
	}
}

function addToSelectList(id, text, value) {
	selectList = getHandle(id);
	selectList.options[selectList.length] = new Option(text, value);
}

function setOpacity(obj, opacity) {
	//window.status = 'obj = ' + obj + ', opacity = ' + opacity;
	opacity = (opacity == 100)?99.999:opacity;
	// IE/Win
	obj.style.filter = "alpha(opacity:"+opacity+")";
	// Safari<1.2, Konqueror
	obj.style.KHTMLOpacity = opacity/100;
	// Older Mozilla and Firefox
	obj.style.MozOpacity = opacity/100;
	// Safari 1.2, newer Firefox and Mozilla, CSS3
	obj.style.opacity = opacity/100;
}

function findPos(obj) {
	var left = !!obj.offsetLeft ? obj.offsetLeft : 0;
	var top = !!obj.offsetTop ? obj.offsetTop : 0;
	while(obj = obj.offsetParent) {
		left += !!obj.offsetLeft ? obj.offsetLeft : 0;
		top += !!obj.offsetTop ? obj.offsetTop : 0;
	}
	return{x:left, y:top};
}



/*******************************************************
 * 
 * AJAX Basic Functions
 * 
 ******************************************************/

var ajaxIsBusy = false;

function getAjax() {
	var xmlHttp = false;
	try {
		//Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest();
	}
	catch (e) {
		//Internet Explorer
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {
				
			}
		}
	}
	return xmlHttp;
}

function ajaxObject(url, callback) {
	if (typeof postOrGet == "undefined") {
		postOrGet = "GET";
	}
	var that = this;
		//workaround for some javascript idiosyncrocies
	var updating = false;
		//set to true if this object is already working on a request
	
	this.update = function(params) {
		//calling object.update(params) initiates the server call
		if (updating == true) { return false; }
			//abort if we're already processing a call
		updating = true;
			//set the updating flag
		var AJAX = getAjax();
			//get an xmlHttpRequest object
		if (!AJAX) {
			alert("Your browser does not support AJAX. Please upgrade your browser");
			return false;
		}
		else {
			AJAX.onreadystatechange = function() {
				//when the browser has the request info..
				if (AJAX.readyState == 4 || AJAX.readyState == "complete") {
					//if the complete flag is set...
					updating = false;
						//set the updating flag to false so we can do a new request
					that.callback(AJAX.responseText,AJAX.status,AJAX.responseXML);
						//that.callback();
						//call the post-processing function
					delete AJAX;
						//delete the AJAX object since it's done
				}
				//end Ajax readystate check
			}                                                           	
			//end create post-process fucntion block
			var timestamp = new Date();
				//get a new date (this will make the url unique)
			var uri = encodeURI(urlCall + '?nocache=' + (timestamp * 1));
				//append date to url (so the browser doesn't cache the call)
			if (postOrGet == "GET") {
				uri = uri + "&" + params;
				AJAX.open("GET", uri, true);
				AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      			AJAX.setRequestHeader("Content-length", uri.length);
      			AJAX.setRequestHeader("Connection", "close");
				AJAX.send(null);
			}
			else {
				AJAX.open("POST", uri, true);
				//open the url this object was set-up with
				AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      			AJAX.setRequestHeader("Content-length", uri.length);
      			AJAX.setRequestHeader("Connection", "close");
	      		//set some headers
				AJAX.send(params);
				//send the request
			}
			return true;
				//everything went well
		}
	}
		//do something with constructor parameters
	var urlCall = url;
	this.callback = callback || function() {}
		//post-processing call
}

function evalJavascript(scanThis) {
	var jsSpans = new Array();
	for (var i = 0; i < scanThis.length; i++) {
		if ((scanThis.substr(i, 7) == '<script') && (scanThis.indexOf('<' + '/script>', i) > -1)) {
			jsSpans[jsSpans.length] = scanThis.substring((scanThis.indexOf(">", i) + 1), (scanThis.indexOf("<" + "/script>", i)));
			i = scanThis.indexOf("<" + "/script>", i) + 8;
		}
	}
	if (jsSpans.length > 0) {
		for (var i = 0; i < jsSpans.length; i++) {
			//alert("evaluating: \n\n" + jsSpans[i]);
			eval(jsSpans[i]);
		}
	}
}

function isAjaxBusy() {
	if (ajaxIsBusy == false) {
		return false;
	}
	else {
		return true;
	}
}

function getAjaxDealOfDay() {
	if (isAjaxBusy()) {
		alert ('Please wait until your most recent request finishes processing before making another request');
	}
	else {
		var ajaxObjectDeal = new ajaxObject('/include/dealOfTheDay.php', ajaxResponseDealOfDay);
		ajaxIsBusy = true;
		ajaxObjectDeal.update(params);
	}
}
				
function ajaxResponseDealOfDay(response, status, responseXML) {
	var div = document.getElementById('dealofthedayLightbox');
	div.innerHTML = response;
	evalJavascript(response);
	ajaxIsBusy = false;
}
/*******************************************************
 * 
 * Form Validation Functions
 * 
 ******************************************************/

/*
Portions of isRFC822ValidEmail() function are copyright (C) 2006  Ross Kendall - http://rosskendall.com
Portions of isRFC822ValidEmail() function are copyright (C) 1993-2005 Cal Henderson - http://iamcal.com
Licenced under Creative Commons _or_ GPL
Creative Commons Attribution-ShareAlike 2.5 License: http://creativecommons.org/licenses/by-sa/2.5/
GPL: http://www.gnu.org/copyleft/gpl.html
*/
function isRFC822ValidEmail(emailAddy) {
	var sQtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
	var sDtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
	var sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
	var sQuotedPair = '\\x5c[\\x00-\\x7f]';
	var sDomainLiteral = '\\x5b(' + sDtext + '|' + sQuotedPair + ')*\\x5d';
	var sQuotedString = '\\x22(' + sQtext + '|' + sQuotedPair + ')*\\x22';
	var sDomain_ref = sAtom;
	var sSubDomain = '(' + sDomain_ref + '|' + sDomainLiteral + ')';
	var sWord = '(' + sAtom + '|' + sQuotedString + ')';
	var sDomain = sSubDomain + '(\\x2e' + sSubDomain + ')*';
	var sLocalPart = sWord + '(\\x2e' + sWord + ')*';
	var sAddrSpec = sLocalPart + '\\x40' + sDomain; // complete RFC822 email address spec
	var sValidEmail = '^' + sAddrSpec + '$'; // as whole string
	
	var reValidEmail = new RegExp(sValidEmail);
	if (reValidEmail.test(emailAddy)) {
		return true;
	}
	return false;
}

function checkInputSetToLength(idOrHandle, errorDiv, minimumLength) {
	if (typeof(minimumLength) == 'undefined') minimumLength = 1;
	if (getHandle(idOrHandle).value.length < minimumLength) {
		if (typeof(errorDiv) != 'undefined') show(errorDiv);
		return false;
	}
	else {
		if (typeof(errorDiv) != 'undefined') hide(errorDiv);
		return true;
	}
}

function checkEmailValid(idOrHandle, errorDiv) {
	if ((getHandle(idOrHandle).value.length < 1) || (!isRFC822ValidEmail(getHandle(idOrHandle).value))) {
		if (typeof(errorDiv) != 'undefined') show(errorDiv);
		return false;
	}
	else {
		if (typeof(errorDiv) != 'undefined') hide(errorDiv);
		return true;
	}
}

function checkSelectFieldChosen(idOrHandle, errorDiv) {
	if (getHandle(idOrHandle).options.length > 1) {
		if (getHandle(idOrHandle).selectedIndex == 0) {
			if (typeof(errorDiv) != 'undefined') show(errorDiv);
			return false; 
		}
		else {
			if (typeof(errorDiv) != 'undefined') hide(errorDiv);
			return true;
		}
	}
	else {
		return true;
	}
}

function compareInputTextFields(idOrHandle1, idOrHandle2, errorDiv, caseSensitive) {
	if (typeof(caseSensitive) == 'undefined') caseSensitive = true;
	if (caseSensitive) {
		if (getHandle(idOrHandle1).value != getHandle(idOrHandle2).value) {
			if (typeof(errorDiv) != 'undefined') show(errorDiv);
			return false;
		}
		else {
			if (typeof(errorDiv) != 'undefined') hide(errorDiv);
			return true;
		}
	}
	else {
		if (getHandle(idOrHandle1).value.toLowerCase() != getHandle(idOrHandle2).value.toLowerCase()) {
			if (typeof(errorDiv) != 'undefined') show(errorDiv);
			return false;
		}
		else {
			if (typeof(errorDiv) != 'undefined') hide(errorDiv);
			return true;
		}
	}
}




/*******************************************************
 * 
 * Lightbox Related Functions
 * 
 ******************************************************/

function hideAllLightboxDivs() {
	if (document.getElementById('shippingArtGunWarning').style.display == 'block') {
		return;
	}
	try { document.getElementById('overlay').style.display = 'none'; } catch (err) { }
	try { document.getElementById('email_form').style.display = 'none'; } catch (err) { }
	try { document.getElementById('contactUsLightbox').style.display = 'none'; } catch (err) { }
	try { document.getElementById('shippingLightbox').style.display = 'none'; } catch (err) { }
	try { document.getElementById('investorRelationsLightbox').style.display = 'none'; } catch (err) { }
	try { document.getElementById('zoomLightbox').style.display = 'none'; } catch (err) { }
	try { document.getElementById('videoLightbox').style.display = 'none'; } catch (err) { }
	try { document.getElementById('sizeChartLightbox').style.display = 'none'; } catch (err) { }
	try { document.getElementById('notifyLightbox').style.display = 'none'; } catch (err) { }
	try { document.getElementById('shippingArtGunWarning').style.display = 'none'; } catch (err) { }
	try {
		var lightboxes = getElementsByClassName('lightBoxDiv');
		for (var i = 0; i < lightboxes.length; i++) {
			lightboxes[i].style.display = 'none';
		}
	}
	catch (err) { }
}

function showLightbox(id) {
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
		var ieversion = new Number(RegExp.$1);
		if ((ieversion >= 6) || (ieversion >= 5)) {
			window.scrollTo(0,0);
		}
	}
	showBlock('overlay');
	showBlock(id);
}

function hideLightbox(id) {
	hide('overlay');
	hide(id);
}


/*
Developed by Robert Nyman, http://www.robertnyman.com
Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm) {
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className), 
			nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
			returnElements = [],
			current;
			for (var i=0, il=elements.length; i<il; i+=1) {
				current = elements[i];
				if (!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "), 
			classesToCheck = "",
			xhtmlNamespace = "http://www.w3.org/1999/xhtml",
			namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
			returnElements = [],
			elements,
			node;
			for (var j=0, jl=classes.length; j<jl; j+=1) {
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
			classesToCheck = [],
			elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
			current,
			returnElements = [],
			match;
			for (var k=0, kl=classes.length; k<kl; k+=1) {
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for (var l=0, ll=elements.length; l<ll; l+=1) {
				current = elements[l];
				match = false;
				for (var m=0, ml=classesToCheck.length; m<ml; m+=1) {
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};
function changeEmailBackground(vis) {
	if (vis == "clear") {
	document.getElementById('joinEmailAddress').style.backgroundImage="";
}
	else if (document.getElementById('joinEmailAddress').value == "") {
	document.getElementById('joinEmailAddress').style.backgroundImage="url(https://s7d3.scene7.com/is/image/DeltaApparel/s-joinEmailInputBackground_rev2?wid=393&fmt=png-alpha)";
	}
}
function menuChange(redHerring) {
	document.getElementById(redHerring + 'Nav').style.color="#000";
	document.getElementById(redHerring + 'Nav').style.backgroundImage="url(/wcsstore/OutletStore/images/s-navButton-backgroundOn.png)";
	document.getElementById(redHerring + 'Nav').style.fontSize="16px";
	document.getElementById(redHerring + 'Nav').style.padding="8px 0 0 0";
	document.getElementById(redHerring + 'Nav').style.backgroundPosition="bottom";
	
	showBlock(redHerring);}

function resetMenu(hoopy) {
	document.getElementById(hoopy + 'Nav').style.color="#ccc";
	document.getElementById(hoopy + 'Nav').style.fontSize="14px";
	document.getElementById(hoopy + 'Nav').style.padding="8px 0 0 0";
	document.getElementById(hoopy + 'Nav').style.textDecoration="none";
		document.getElementById(hoopy + 'Nav').style.backgroundImage="none";

	hide(hoopy);}

function navOver(area) {
	document.getElementById(area).src="/wcsstore/OutletStore/images/navArrow.png";
}
function navOut(area) {
	document.getElementById(area).src="/wcsstore/OutletStore/images/navArrowOff.png";
}
function changeKidsMenu (changeTo) {
	if (changeTo=="boys") {
		document.getElementById('kidsGirls').style.display="none";
		document.getElementById('kidsBoys').style.display="block";
		document.getElementById('kidsGirlsArrow').src="/wcsstore/OutletStore/images/navArrowOff.png";
		document.getElementById('kidsBoysArrow').src="/wcsstore/OutletStore/images/navArrow.png";
		document.getElementById('kidsGirlsLink').style.fontSize="14px";
		document.getElementById('kidsGirlsLink').style.color="#999";
		document.getElementById('kidsBoysLink').style.fontSize="15px";
		document.getElementById('kidsBoysLink').style.color="#666";
		}
	if (changeTo=="girls") {
		document.getElementById('kidsBoys').style.display="none";
		document.getElementById('kidsGirls').style.display="block";
		document.getElementById('kidsBoysArrow').src="/wcsstore/OutletStore/images/navArrowOff.png";
		document.getElementById('kidsGirlsArrow').src="/wcsstore/OutletStore/images/navArrow.png";
		document.getElementById('kidsBoysLink').style.fontSize="14px";
		document.getElementById('kidsBoysLink').style.color="#999";
		document.getElementById('kidsGirlsLink').style.fontSize="15px";
		document.getElementById('kidsGirlsLink').style.color="#666";
		}
}
function navOver(area) {
	document.getElementById(area).src="/wcsstore/OutletStore/images/navArrow.png";
}
function navOut(area) {
	document.getElementById(area).src="/wcsstore/OutletStore/images/navArrowOff.png";
}
function multiPliers(boxID,grabbedNumber) {
		timerNumber = grabbedNumber*2;
		setTimeout("colorSliderLeft('"+boxID+"','"+grabbedNumber+"')",timerNumber);
		}
function multiPliers2(boxID,grabbedNumber,colorBoy) {
		timerNumber = grabbedNumber*2;
		setTimeout("colorSliderRight('"+boxID+"','"+grabbedNumber+"','"+colorBoy+"')",timerNumber);
		}
function colorSliderLeft(boxID,timerNum) {
				i=timerNum;
				templeft=parseInt(document.getElementById(boxID).style.marginLeft, 10);
				if (templeft < 0) {
				templeft = parseInt(templeft) + parseInt(i);
				document.getElementById(boxID).style.marginLeft=templeft+"px";
				if (i < 16) {
					i++;
					multiPliers(boxID,i);
				}
				document.getElementById('colorSliderRightButton_' + boxID).style.display="block";
				if (templeft==0){
				document.getElementById('colorSliderLeftButton_' + boxID).style.display="none";
				}
				}
	}
function colorSliderRight(boxID,timerNum,colorLength) {
				colorArea=(colorLength*26)-300;
				negColorArea=-colorArea;
				i=timerNum;
				templeft=parseInt(document.getElementById(boxID).style.marginLeft, 10);
				if (templeft <= 0) {
				templeft = parseInt(templeft) - parseInt(i);
				document.getElementById(boxID).style.marginLeft=templeft+"px";
				if (i < 16) {
					
					i++;
				multiPliers2(boxID,i,colorLength);
				}
				if (templeft<0){
				document.getElementById('colorSliderLeftButton_' + boxID).style.display="block";
				}
				if (templeft<=negColorArea){
				document.getElementById('colorSliderRightButton_' + boxID).style.display="none";
				}
				}
	}
function Set_Cookie()
{
value1=document.getElementById('emailList').checked;
document.cookie = "signup=" + value1;
value2=document.getElementById('WC__FormInput_email1_1').value;
document.cookie = "signupEmail=" + value2;
value3=document.getElementById('WC__NameEntryForm_FormInput_firstName_1').value;
document.cookie = "signupFirstName=" + value3;
}

