function rightTrim(strValue) {
	var objRegExp = /^([\w\W]*)(\b\s*)$/;
	if(objRegExp.test(strValue)) {
		strValue = strValue.replace(objRegExp, '$1');
	}
	return strValue;
}

function leftTrim(strValue) {
	var objRegExp = /^(\s*)(\b[\w\W]*)$/;
	if(objRegExp.test(strValue)) {
		strValue = strValue.replace(objRegExp, '$2');
	}
	return strValue;
}

function trimAll(strValue) {
	var objRegExp = /^(\s*)$/;
	if(objRegExp.test(strValue)) {
		strValue = strValue.replace(objRegExp, '');
		if( strValue.length == 0)
		return strValue;
	}
	objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
	if(objRegExp.test(strValue)) {
		strValue = strValue.replace(objRegExp, '$2');
	}
	return strValue;
}

function isNotEmpty(strValue){
	return (trimAll(strValue).length > 0);
}

function isZip(strValue) 
{
	reZip = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
	if (!reZip.test(strValue)) {		
		return false;
	}
	return true;
}

function isFormValid(step){
	switch (step){
		case "3_1":{
			var j = 0;
			for (var i=0; i<25; ++i){
				elem = document.getElementById("myZip_" + i);
				if (elem){
					if (elem.value!=""){
						if (!isZip(elem.value)){
							alert("Zip code is not valid!");
							return false;
						}
						else{
							j = 1;
						}
					}
					else
						continue;
				}
			}
			if ((i-j)==25){
				alert("Please fill in zip code(s)!");
				return false;
			}
			return true;
		}break;
		case "3_2":{
			if (!isNotEmpty(document.forms[0].txtAddress.value)){
				alert("Address cannot be empty!");
				return false;
			}
			if (!isNotEmpty(document.forms[0].txtCity.value)){
				alert("City cannot be empty!");
				return false;
			}
			if (!isNotEmpty(document.forms[0].txtZip.value) || !isZip(document.forms[0].txtZip.value) ){
				alert("Zipcode is not valid!");
				return false;
			}
			return true;
		}break;
		case "7":{
			var fileName = document.forms[0].fileName.value;
			var quantity = document.forms[0].quantity.value;
			var maxquantity = document.forms[0].countTotal.value;
			if (!isNotEmpty(fileName) || !isPositiveNumber(quantity)){
				alert("File name or Quantity is invalid!");
				return false;
			}
			if ((quantity.length > maxquantity.length) || ((quantity.length == maxquantity.length) && (quantity > maxquantity))){
				alert("Selected quantity has to be less than or equal to " + maxquantity);
				return false;
			}
			return true;
		}break;
	}
}

function goSubmit(){
	submitable = true;
	step = document.forms[0].step.value;
	trailer = document.forms[0].trailer;
	switch (parseInt(step)){
		case 1:{
			
		}break;
		case 2:{
			myGeoPathSelect = document.forms[0].myGeoPathSelect;
			len = myGeoPathSelect.length;			
			for (i=0; i<len; ++i){
				if (myGeoPathSelect[i].checked){
					trailer.value += myGeoPathSelect[i].value;
					break;
				}
			}
			trailer.value += "-;-";
		}break;
		case 3:{
			if (document.forms[0].myZip_0){ //zips
				if (isFormValid("3_1")){
					zip_vals = "";
					for (var i=0; i<25; ++i){
						elem = document.getElementById("myZip_"+i);
						if (elem){
							zip_vals += elem.value + "-,-";
						}
					}
					trailer.value += zip_vals.substring(0, zip_vals.length-3) + "-;-";
				}
				else{
					submitable = false;
				}
			}
			else{ //radius
				if (isFormValid("3_2")){
					trailer.value += "-;-";
				}
				else{
					submitable = false;
				}
			}
		}break;
		case 4:{
			if (document.forms[0].myListProduct){
				var myListProduct = document.forms[0].myListProduct;
				var len = myListProduct.length;
				for (i=0; i<len; ++i){
					if(myListProduct[i].checked){
						if (myListProduct[i].value=="1"){
							document.forms[0].webservice.value=1;
						}
						trailer.value += myListProduct[i].value;
						break;
					}
				}
				trailer.value += "-;-";
			}
			else{
				var myAddress = document.forms[0].myAddress;
				var len = myAddress.length;
				if (len > 1){
					for (i=0; i<len; ++i){
						if(myAddress[i].checked){						
							trailer.value += myAddress[i].value;
							break;
						}
					}
				}
				else{
					trailer.value += myAddress.value;
				}
				trailer.value += "-;-";
			}		
		}break;
		case 5:{
			if (document.forms[0].mySelectedItems){
				var mySelectedItems = document.forms[0].mySelectedItems;
				var optGroups = document.getElementsByTagName("optgroup");
				var len = optGroups.length;
				var val="";
				var categories = "";
				for (i=0; i<len; ++i){
					var opts = optGroups[i].childNodes;
					var count = opts.length;
					categories += optGroups[i].label + "-_-";
					for (j=0; j<count; ++j){
						if (opts[j]!="undefined" && opts[j]!=null){
							val += opts[j].value + "-,-";
							categories += opts[j].innerHTML + "-,-";
						}
					}
					categories += "-;-";
				}
				val = val.substr(0, val.length-3);
				trailer.value += val + "-;-";
				document.forms[0].webservice.value=1;
				document.forms[0].categories.value=categories;
			}
			else{
				if (document.forms[0].myListProduct){
					myListProduct = document.forms[0].myListProduct;
					len = myListProduct.length;
					for (i=0; i<len; ++i){
						if(myListProduct[i].checked){
							if (myListProduct[i].value=="1"){
								document.forms[0].webservice.value=1;
							}
							trailer.value += myListProduct[i].value;
							break;
						}
					}
					trailer.value += "-;-";
				}
			}
		}break;
		case 6:{
			if (document.forms[0].mySelectedItems){
				var mySelectedItems = document.forms[0].mySelectedItems;
				var optGroups = document.getElementsByTagName("optgroup");
				var len = optGroups.length;
				var val="";
				var categories = "";
				for (i=0; i<len; ++i){
					var opts = optGroups[i].childNodes;
					var count = opts.length;
					categories += optGroups[i].label + "-_-";
					for (j=0; j<count; ++j){
						if (opts[j]!="undefined" && opts[j]!=null){
							val += opts[j].value + "-,-";
							categories += opts[j].innerHTML + "-,-";
						}
					}
					categories += "-;-";
				}
				val = val.substr(0, val.length-3);
				trailer.value += val + "-;-";
				document.forms[0].webservice.value=1;
				document.forms[0].categories.value=categories;
			}
		}break;
		case 7:{
			if (!isFormValid("7")){
				submitable = false;
			}
		}break;
	}
	if (submitable){
		document.forms[0].submit();
	}
}

function getInnerText(obj) {
	if (obj.innerText) { // IE;
		return obj.innerText;
	}
	else {
		if (obj.textContent)
		{
			return obj.textContent;
		}
		else
			return "";
	}
}

function isCategoryExist(category){
	var mySelectedItems = document.getElementById("mySelectedItems");
	if (mySelectedItems.hasChildNodes()){
		var optGroup = mySelectedItems.firstChild;		
		var i = 0;
		while (optGroup!=null && optGroup!="undefined"){
			if (optGroup.label==category)
				return i;
			else{
				optGroup = optGroup.nextSibling;
				i++;
			}
		}
	}
	return -1;
}

function isSubCategoryExists(i, sub_cat){
	if (i>-1){
	var mySelectedItems = document.getElementById("mySelectedItems");
		var optGroup = mySelectedItems.childNodes[i];
		if (optGroup.hasChildNodes()){
			var opt = optGroup.firstChild;
			var j = 0;
			while (opt!=null && opt!="undifined"){
				if (opt.innerHTML==sub_cat)
					return j;
				else{
					opt = opt.nextSibling;
					j++;
				}
			}
		}
	}
	return -1;
}


function goAdd() {
	var mySelectedItems = document.getElementById("mySelectedItems");
	var categories = document.forms[0].myFieldName;
	var subcategories = document.forms[0].mySelectList;
	var cat_text = categories.childNodes[categories.selectedIndex].innerHTML;
	var cat_id = categories.childNodes[categories.selectedIndex].value;
	
	var i = isCategoryExist(cat_text);
	if (i==-1){
		var optGroup = document.createElement("optgroup");
		optGroup.setAttribute("label", cat_text);
		if (subcategories.selectedIndex != -1)
			mySelectedItems.appendChild(optGroup);
	}
	else{
		var optGroup = mySelectedItems.childNodes[i];
	}
	
	while (subcategories.selectedIndex != -1) {
		var txt = subcategories.options[subcategories.selectedIndex].innerHTML;
		var val = cat_id + "-|-" + subcategories.options[subcategories.selectedIndex].value;
		if (isSubCategoryExists(i, txt)==-1){
			var opt = document.createElement("option");
			var optText = document.createTextNode(txt);
			opt.appendChild(optText);
			opt.setAttribute("value", val);
			optGroup.appendChild(opt);
		}
		subcategories.options[subcategories.selectedIndex].selected = false;
	}
	return;
}

function goRemove() {
	var mySelectedItems = document.getElementById("mySelectedItems");
	while (mySelectedItems.selectedIndex != -1) {
		var opt = mySelectedItems.options[mySelectedItems.selectedIndex];
		opt.selected = false;
		var optGroup = opt.parentNode;
		var child_num = optGroup.childNodes.length;
		if (child_num==1)
			mySelectedItems.removeChild(optGroup);
		else
			optGroup.removeChild(opt);
	}
}

function goRemoveAll() {
	var mySelectedItems = document.getElementById("mySelectedItems");
	mySelectedItems.innerHTML = "";
}
