
// the date format prototype
Date.prototype.format = function(f)
{
    if (!this.valueOf())
        return '&nbsp;';

    var d = this;

    return f.replace(/(yyyy|mm|dd|hh|nn|ss|a)/gi,
        function($1)
        {
            switch ($1.toLowerCase())
            {
            case 'yyyy': return d.getFullYear();
            case 'mm':   return prefixDateDigit((d.getMonth() + 1));
            case 'dd':   return prefixDateDigit(d.getDate());
            case 'hh':   var hh = ((h = d.getHours() % 12) ? h : 12);
            			 return prefixDateDigit(hh);
            case 'nn':   return prefixDateDigit(d.getMinutes());
            case 'ss':   return prefixDateDigit(d.getSeconds());
            case 'a':  var ap = d.getHours() < 12 ? 'AM' : 'PM';
			             return ap;
            }
        }
    );
}

function prefixDateDigit(input)
{
	var inStr =""+input;
//	alert('inStr.length='+inStr.length);
	if(inStr.length != 2)
	{
		inStr ="0"+inStr;
	}
	return inStr;
}

function generateEndDate(inputbox)
{
	var myDate=new Date();
	myDate.setFullYear(2050,01,01);
	inputbox.value=(myDate).format('mm/dd/yyyy hh:nn a');
}

function generateStartDate(inputbox)
{
	inputbox.value=(new Date()).format('mm/dd/yyyy hh:nn a');
}

function closeOrderDetailsWindow(url)
	{
			window.opener.location.href = url;
			window.close();
	}	
	
function openStoreHistory(url,windowName)
{
	var test = windowOpener(url, windowName, 'status=yes,height=200,width=550,resizable=no,scrollbars=no');
	return;
}

function openOrderComment(url,windowName)
{
	var test = windowOpener(url, windowName, 'status=yes,height=400,width=800,resizable=no,scrollbars=no');
	return;
}

function openGiftCard(url,windowName)
{
	var test = windowOpener(url, windowName, 'status=yes,height=200,width=550,resizable=no,scrollbars=no');
	return;
}

function openOrderDetails(url,windowName)
{
	var test = windowOpener(url, windowName, 'status=yes,height=600,width=800,resizable=yes,scrollbars=yes');
	return;
}

function openCustomerDetails(url,windowName)
{
 	var test = windowOpener(url, windowName, 'status=yes,height=600,width=800,resizable=yes,scrollbars=yes');

 	return;

}
function openRegisterCustomer(url,windowName)
{
	var test = windowOpener(url, windowName, 'menubar=no,height=600,width=800,resizable=no,scrollbars=yes');
	return;
}

function openCancel(url,windowName)
{
	var test = windowOpener(url, windowName, 'status=yes,height=200,width=550,resizable=no,scrollbars=no');
	return;
}

function windowOpener(url,windowName,settings)
{
	window.open(url, windowName, settings);
}

function submitPaginationForm(url)
{
	window.location=url;
}

function submitForm(myForm)
{
	myForm.submit();
}

function addUniqueOption(list,label,value,message)
{
	if (!selectBoxContains(list,label))
		addOption(list,label, value,true);
	else
		alert(message);
}

function checkAllCheckBoxes(checkBoxes)
{
	if (checkBoxes != null)
	{
		checkBoxes.checked=true;
		for(var i=0;i<checkBoxes.CHECK_BOX.length;i++)
		checkBoxes.CHECK_BOX[i].checked = true;
	}
}

function checkAllCheck(field)
{
 if (field != null)
 {
 	field.checked=true;
	for (i = 0; i < field.length; i++)
		field[i].checked = true ;
 }
}

function selectDept(deptCheckBox)
{
	deptCheckBox.checked = true;
}

function toggleOverrideSelects(cb)
{
	var excludeSome = document.getElementById("excludesome");
	var excludeAll = document.getElementById("excludeAllClasses");
	var includeSome = document.getElementById("includesome");
	//var excludeAll = document.getElementById("excludeall");

	var dis = !cb.checked;
	if(cb == excludeSome)
	{
		excludeAll.checked = false;
		excludeAll.disabled = dis;
		document.getElementById("excludedClasses").disabled = dis;
		cb.form.overriddenClasses.disabled = dis;
		document.getElementById("overrideRightButton").disabled = dis;
		document.getElementById("overrideLeftButton").disabled = dis;
	}
	else if (cb == excludeAll)
	{
		document.getElementById("excludedClasses").disabled = cb.checked;
		cb.form.overriddenClasses.disabled = cb.checked;
		document.getElementById("overrideRightButton").disabled = cb.checked;
		document.getElementById("overrideLeftButton").disabled = cb.checked;
	}
	else if(cb == includeSome)
	{
		document.getElementById("includedClasses").disabled = dis;
		cb.form.lockedOutClasses.disabled = dis;
		document.getElementById("overrideRightLockoutButton").disabled = dis;
		document.getElementById("overrideLeftLockoutButton").disabled = dis;
	}
}


function setDateTime(month,day,year,hour,minute,second,formInput)
{

	var month = month;

	var day = day;

	var year = year;

	var hour = hour;

	var minute = minute;

	var second = second;


	if (month == null) {
		//alert("Month cannot be null!");
		formInput.value=null;
		return ;
	}

	if (day == null) {
		//alert("Day cannot be null!");
		formInput.value=null;
		return ;
	}

	if (year == null) {
		//alert("year cannot be null!");
		formInput.value=null;
		return ;
	}

	if (hour == null)
		hour = "00";
	if (minute == null)
		minute = "00";
	if (second == null)
		second = "00";

	formInput.value=month + "/" + day + "/" + year + " " + hour + ":" + minute + ":" + second;

}

function closePopupAndReloadParentWindow()
{
	if (window.opener && !window.opener.closed)
	{
		window.opener.location.reload();
	}
	window.close(self);
	return;
}

function closePopupWCS()
{
	if(document.numberSearchForm.selectedDeptno.options.length > 0)
	{
//		if(window.opener && !window.opener.closed())
//		{
			var numberOptions = document.numberSearchForm.selectedDeptno.options;
			for(var i=0; i<numberOptions.length; i++)
			{
				if(numberOptions[i].selected)
				{
					window.opener.document.departmentForm.identifier.value=numberOptions[i].text;
					break;
				}
			}
//		}
	}
	window.close();
}


function closePopup()
{
	if(document.department.selectedDeptno.options.length > 0)
	{
//		if(window.opener && !window.opener.closed())
//		{
			var numberOptions = document.department.selectedDeptno.options;
			for(var i=0; i<numberOptions.length; i++)
			{
				if(numberOptions[i].selected)
				{
					window.opener.document.department.identifier.value=numberOptions[i].text;
					break;
				}
			}
//		}
	}
	window.close();

	//document.form1.select2.options[document.form1.select1.selectedIndex].value);
}

function numCreation(lower, selectbox)
{
	for (i = 0; i < lower + 200; i++)
		//document.write(document.forms[selectbox[i]]);
		//document.getElementsByName(selectbox.write[i]);
		//document.write(selectbox[i]);
		//document.write(numCreation(lower, selectbox));
		document.write('selectbox[i]');
}

function removeSelectedItems()
{
	var itemList = window.document.getElementById("skus");
	var startLen = itemList.length;

	for (j=startLen; j>0; j--)
	{
		if (itemList.options[j-1].selected)
		{
			itemList.removeChild(itemList.options[j-1]);
		}
	}
}

function loadSelectedItemAttributes(totalAttributeCount)
{
	try
	{
		var itemList = window.document.getElementById("skus");
		var selectedIndex = itemList.selectedIndex;

		if(selectedIndex ==  -1)
			return false;

		var itemListOption = itemList.options[selectedIndex].value;
// alert("itemListOption="+itemListOption);
		var st = itemListOption.split('|');
// alert("st="+st);
		var maxAttributes=totalAttributeCount;

		var index = 0;
		var prevIndex = 0;
		var checkIndex = 0;

//alert("maxAttributes="+maxAttributes);
//alert("selectedIndex="+selectedIndex);
//alert("totalAttributeCount="+totalAttributeCount);
		while(index > -1)
		{
//alert("index="+index);
//alert("prevIndex="+prevIndex);
//alert("checkIndex="+checkIndex);
			prevIndex = checkIndex;
			index = itemListOption.indexOf(",", checkIndex);
			checkIndex = itemListOption.indexOf(",", checkIndex);

			if(checkIndex == -1)
			{
				checkIndex = itemListOption.length;
			}

			var temp = itemListOption.substring(prevIndex, checkIndex);
//alert("temp="+temp);
			var tempName = temp.substring(0, temp.indexOf("|", 0));
//alert("tempName="+tempName);
			var tempValue = temp.substring((temp.indexOf("|", 0) + 1), temp.length);
//alert("tempValue="+tempValue);

			if(tempName == "sku")
			{
				window.document.getElementById("skuInput").value = tempValue;
			}
			else if(tempName == "upc")
			{
				window.document.getElementById("upcInput").value = tempValue;
			}
			else
			{
				for(var i=0; i<maxAttributes; i++)
				{
					var attrName = window.document.getElementById("an" + i);
					var attributeValues = window.document.getElementById("attributeNameValues" + i);
//alert("attrName.value="+attrName.value);
//alert("attrName="+attrName);
					if((tempName != null) && (tempName != "") && attrName.value == tempName)
					{
						for(var j=0; j<attributeValues.length; j++)
						{
//alert("attributeValues.options["+j+"].value="+attributeValues.options[j].value);
							if(attributeValues.options[j].value == tempValue)
							{
								attributeValues.selectedIndex = j;
							}
						}
					}
				}
			}
			checkIndex++;
		}

		itemList.removeChild(itemList.options[selectedIndex]);
	}
	catch(e)
	{
		alert("SKU JAVASCRIPT ERROR: "+e.toString());
		return false;
	}
}

function selectBoxContains(obj,string) {
	if (!hasOptions(obj)) {
		return false;
	}
	for (i=0; i<obj.options.length; i++) {
		if (obj.options[i].text.toUpperCase()==string.toUpperCase()) {
			return true;
		}
	}
	return false;
}

function addItem(maxAttributes)
{
	if (inputIsValid())
	{
		var newClass = window.document.getElementById("fieldClassification").value.trim();
		var newSku = window.document.getElementById("skuInput").value.trim();
		var newUpc = window.document.getElementById("upcInput").value.trim();

		if (newUpc != null)
		{
			newUpc = newUpc.toUpperCase();
		}

		var itemList = window.document.getElementById("skus");
		var itemDescription = newClass+" - "+newSku+" - "+newUpc+" - (";
		var itemValue = "sku|"+newSku+",upc|"+newUpc+",";
		for(var j=0; j<maxAttributes; j++)
		{
			var currAttributeName = window.document.getElementById("an" + j);
			var currAttributeValues = window.document.getElementById("attributeNameValues" + j);

			if (currAttributeValues.options.length != 0 && currAttributeValues.selectedIndex!=-1)
			{
				itemDescription += currAttributeValues.options[currAttributeValues.selectedIndex].value;
				itemValue += currAttributeName.value + "|" + currAttributeValues.options[currAttributeValues.selectedIndex].value;
			}

			if (j < maxAttributes-1)
			{
				itemDescription += ",";
				itemValue += ",";
			}
		}
		itemDescription += ")";
		addUniqueOption(itemList,itemDescription,itemValue,"Can't add the same SKU twice");
	}
}

function addAttribute(itemList,itemDescription, itemValue,selected){
	if (!selectBoxContains(itemList,itemDescription))
		addOption(itemList,itemDescription, itemValue.trim(),selected);
	else
		alert("Can't add the same Attribute Value twice");
}

function inputIsValid()
{

	var newClass = window.document.getElementById("fieldClassification").value;
	var newSku = window.document.getElementById("skuInput").value;
	var newUpc = window.document.getElementById("upcInput").value;

	if(isNaN(newClass) || isNaN(newSku) || newClass=="" || newSku=="")
	{
		alert("Class and SKU must be valid numeric values.");
		return false;
	}
	else if (!classIsValid())
	{
		alert("Class must be exactly 4 digits");
		return false;
	}
	else if (!skuIsValid())
	{
		alert("SKU is invalid");
		return false;
	}
	else if (!upcIsValid())
	{
		alert("UPC is invalid");
		return false;
	}
	else
	{
		return true;
	}
}

function classIsValid()
{
	var newClass = window.document.getElementById("fieldClassification").value;
	classVal = new String(newClass);

	if (classVal.length != 4)
	{
		return false;
	}
	else
	{
		return true;
	}
}

function skuIsValid()
{
	var newSku = window.document.getElementById("skuInput").value;
	skuVal = new String(newSku);
	if (skuVal.length != 7)
	{
		return false;
	}

	tempStr = reverseStr(skuVal);

	sum = 0;
	for(i=1 ; i<= tempStr.length ;i++)
	{
		s = new String(tempStr.charAt(i-1));
		sum = sum + (s * i);
   	};

   	remainder = 0;
   	remainder = (sum % 11);

   	if(remainder == 0)
   	{

   		return true;
   	}
   	else
   	{
       	return false;
   	}
   	return true;
}

function upcIsValid()
{
	var newUpc = window.document.getElementById("upcInput").value;
	var newClass = window.document.getElementById("fieldClassification").value;
	var newSku = window.document.getElementById("skuInput").value;

	upcVal = new String(newUpc);
	classVal = new String(newClass);
	skuVal = new String(newSku);
	upcVal = upcVal.toLowerCase();

	if(upcVal.indexOf("cs") > -1)
	{
		if(upcVal == (classVal + "cs" + skuVal))
		{
			return true;
		}
	}

	if (upcVal.length < 11 || upcVal.length > 15 || newUpc=="")
	{
		return false;
	}

	tempStr = reverseStr(upcVal);
	sum = 0;
	count1 = 0;

	for(i=0 ; i< tempStr.length ;i++)
	{
		s = new String(tempStr.charAt(i));
		if(count1 == 0)
		{
			sum = sum + (s * 1);
			count1=1;
		}
		else
		{
			sum = sum + (s * 3);
			count1=0;
		}
   	};

   	remainder = 0;
   	remainder = (sum % 10);

   	if(remainder == 0)
   	{
   		return true;
   	}
   	else
   	{
		//alert("upc remainder="+remainder);
       	return false;
    }

	return true;
}


function reverseStr(inString)
{
	tempVar = '';
	for (i=inString.length-1;i>-1;i--)
	{
		tempVar+=inString.charAt(i);
	};
	return tempVar;
}

function confirmShippingMethodDeletion(formInput)
{
	var agree = confirm("Are you sure you would like to delete shipping method?");
	if(agree)
	{
		formInput.value=true;
	}
	return agree;
}

function markAllFormsReadOnly()
{
	for(var i=0;i<document.forms.length;++i)
	{
		markFormReadOnly(document.forms[i]);
	}
}

function markFormReadOnly(theForm)
{
	var formelements=theForm.elements;
	theForm.onsubmit=function() {return false;}
	for(var i=0;i<formelements.length;++i)
	{
		var formelement = formelements[i];
		formelement.onfocus=function() {this.blur();}
		if(formelement.type=="text"||formelement.type=="textarea"||formelement.type=="password")
		{
			formelement.readOnly = true;
		}
		else
		{
			formelement.disabled = true;
		}
	}
}

function updatePicture(disp,img,name,imageDir)
{
	//disp = The label id
	//img = The img src id
	//name = The file id
	var d = document.getElementById(disp);

	var i = document.getElementById(img);

	var n = document.getElementById(name);

	setImageSrc(i, n.value, imageDir);

	var imageDispName = d.firstChild;

	var matcharray = n.value.match(/([^\\\/]*)$/);

	var shortName = matcharray[0];

	imageDispName.nodeValue = "("+shortName+")";

	return shortName;
}

function setImageSrc(image, imageSrc, dir)
{
	if(imageSrc.match(/^[\/\\]/) != null)
	{
		image.src =  dir + imageSrc.replace("\\", "/");
	}
	else
	{
		image.src =  dir + imageSrc.replace("\\", "/");
	}
}

function prepopulateImgFields(){

	var vcs = document.getElementById("vendorNumber").value.trim().toLowerCase()
				 + document.getElementById("classification").value.trim().toLowerCase()
				 + document.getElementById("style").value.trim().toLowerCase();

	var expr = new RegExp("[^a-zA-Z0-9]", "g");

	var largeImage = vcs.replace(expr, "") + ".jpg";
	var smallImage = vcs.replace(expr, "") + "t.jpg";

	var prodId = document.getElementById("prodId").value;

	if (prodId.length == 0){
		document.getElementById("largeImagename").value = largeImage;
		document.getElementById("smallImagename").value = smallImage;
	}
}

function selectAllOptionsAllSelectBoxes(selectBoxes)
{
	if (selectBoxes != null)
	{
		for(var j=0;j<selectBoxes.length;j++){
			selectAllOptions(selectBoxes[j]);
		}
	}
}

function updateSelectBoxOptionValueName(obj,index, name)
{
	for (var i=0; i<obj.options.length; i++) {
		var selectedValue= name.value + obj.options[i].value.substring(obj.options[i].value.indexOf("|")) ;
		obj.options[i] = new Option( obj.options[i].text, selectedValue , obj.options[i].defaultSelected, obj.options[i].selected) ;
	}
}

function ismaxlength(obj,maxLength){
	var mlength=obj.getAttribute? maxLength : ""
	if (obj.getAttribute && obj.value.length>mlength)
		obj.value=obj.value.substring(0,mlength)
}

function autoTab(input,len, e) 
	{
		var isNN = (navigator.appName.indexOf("Netscape")!=-1);
		var keyCode = (isNN) ? e.which : e.keyCode; 

		var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];

		if(input.value.length >= len && !containsElement(filter,keyCode)) 
		{

			input.value = input.value.slice(0, len);
			input.form[(getIndex(input)+1) % input.form.length].focus();

		}
	
		function containsElement(arr, ele) 
		{
			var found = false, index = 0;
			while(!found && index < arr.length)
			if(arr[index] == ele)
			{
				found = true;
			}
			else
			{
				index++;
			}
			return found;
		}
		
		function getIndex(input) 
		{
			var index = -1, i = 0, found = false;
			while (i < input.form.length && index == -1)
			if (input.form[i] == input)
			{
				index = i;
			}
			else 
			{
				i++;
			}
			return index;
		}
		return true;
	}
	
function emailGeneration(area, pre, last, inputbox)
{	
	var a = document.getElementById(area).value;
	
	var p = document.getElementById(pre).value;
	
	var l = document.getElementById(last).value;
	
	var i = document.getElementById(inputbox);
	
	var phoneNumber =(a + p + l + '@b.com');
	
	i.value = phoneNumber;

}