/**
 * Called when response with numbers is received from AJAX request
 * Shows numbers or message on page
 * @param {object} callbackArgs JSON object specified in ZpForm documentation
 */
 
var visitorID = getCookie("visitorID");
if(visitorID==null){visitorID=""}
var matchType = "";
function processNumbers(callbackArgs) {
	matchType="";
	//alert(callbackArgs.budTrack);
	if ((visitorID =="")&&(callbackArgs.visitorID)){
		visitorID = callbackArgs.visitorID;
		putCookie("visitorID", visitorID, ".fax.com","", 90)
	}
	if(document.getElementById("visitorID")){
			document.getElementById("visitorID").value=visitorID;	
	}
	var container = document.getElementById("numbersContainer");
	resetResults();
	
		//alert(visitorID);
	if (callbackArgs.matchType){
		matchType = callbackArgs.matchType;	
	}
	if (!callbackArgs.message || callbackArgs.message == '') {
		displayNumbers (callbackArgs.numbers, container);
		if (document.areaCodeForm) {
			document.areaCodeForm.showClosest.value = 0;
		}
		showMoreButton(callbackArgs.numbers);
	} else {
		var messageContainer = document.getElementById('messageContainer');
		var messageContainerText = document.getElementById('messageContainerText');
		messageContainer.style.display = 'block';
		if ((callbackArgs.closeNumbers) && (callbackArgs.closeNumbers.length > 0)) {
			var messageHtml = callbackArgs.message;
	
			messageContainerText.innerHTML = messageHtml; 

			displayNumbers (callbackArgs.closeNumbers, container);
			showMoreButton(callbackArgs.closeNumbers);
		} else {
			messageContainerText.innerHTML = callbackArgs.message;
			resetForm(); 
		}
	}
	var phonePrefixInput = document.getElementById('phonePrefixInput');
	if(phonePrefixInput){
		if(callbackArgs.phonePrefix!=phonePrefixInput.value){
			document.getElementById('areaCodeForm').onsubmit();	
		}
	}
	//alert(callbackArgs.phonePrefix);
}
var nbacLF = true; //for live face play only once per page visit

function displayNumbers (objNumbers, elem) {
		document.getElementById('numbersListMessage').style.display = 'none';
		document.getElementById('numbersListList').style.display = 'block';
		
		for (var ii=0;ii<objNumbers.length;ii++) {
			var numberListItem = Zapatec.Utils.createElement("div", elem,true);
			numberListItem.className = "numberItem";
			
			numberListItem.chooseButton = Zapatec.Utils.createElement("input");
			numberListItem.chooseButton.setAttribute("type","radio");
			numberListItem.chooseButton.onclick = chooseAndSetNumber(objNumbers[ii],numberListItem.chooseButton);
			
			numberListItem.numberDiv = Zapatec.Utils.createElement("div");
			numberListItem.numberDiv.className = "number";
			numberListItem.numberDiv.onclick = chooseAndSetNumber(objNumbers[ii],numberListItem.chooseButton);
			numberListItem.numberDiv.appendChild(document.createTextNode(format10DigitsNumber(objNumbers[ii])));
			
			numberListItem.appendChild(numberListItem.chooseButton);
			numberListItem.appendChild(numberListItem.numberDiv);
			
/*
  		numberListItem.saveButton = Zapatec.Utils.createElement("button");
			numberListItem.saveButton.setAttribute("type", "button");
			numberListItem.saveButton.appendChild(document.createTextNode("Save"));
			numberListItem.saveButton.onclick = saveNumber (numberListItem);
			numberListItem.appendChild(numberListItem.saveButton);
*/			
		}
		
		
		//if(!nbacLF){
//			if( typeof document.getElementById('divLF1') != 'undefined'){
//				document.getElementById('divLF1').style.display = 'none';
//			}else{
//				nbacLF = false;
//			}
//		}else{
//			nbacLF = false;
//		}
//		if((typeof callDoLFOW != 'undefined')&&(typeof doLFOW != 'undefined')){
//			if (matchType=="match"){
//				//alert("1:" + matchType);
//				callDoLFOW(1);
//			}else{
//				callDoLFOW(0);	
//			}
//		}
}

function showMoreButton (objNumbers) {
		if (objNumbers.length >= 5){
			if (document.areaCodeForm) {
				document.areaCodeForm.page.value = document.areaCodeForm.page.value*1+1;
				document.getElementById('showMoreButtonContainer').style.display = 'block';
			}
			if (document.tollFreeForm) {
				document.tollFreeForm.page.value = document.tollFreeForm.page.value*1+1;
				document.getElementById('showMoreButtonContainer').style.display = 'block';
			}	
			if (document.stateCityForm) {
				document.stateCityForm.page.value = document.stateCityForm.page.value*1+1;
				document.getElementById('showMoreButtonContainer').style.display = 'block';
			}
		} else {
			resetForm();
			document.getElementById('numbersListList').style.display = 'block';
		}
}

/**
 * Attaches handler to number list item
 * @param {Object} did
 */
function chooseNumber(did){
	return function () {
		resetForm();
		resetResults();
		Zapatec.Transport.fetchJsonObj({
			url: "ajax/chooseNumber.jsp?number="+did,
			onLoad: function (objArgs) {
				if (objArgs.success) {
					alert("You choose number "+format10DigitsNumber(did));
				} else {
					alert ("Failed: "+objArgs.generalError)
				}
			}
		});
	}
}

function chooseAndSetNumber(did, item) {
	return function () {
		item.checked = true;
		document.chooseNumberForm.phoneNumber.value=did;
		document.chooseNumberForm.visitorID2.value=visitorID;
		document.chooseNumberForm.submit();
	}
}

/**
 * Saves selected element to special div element
 * @param {Object} element DOM element that should be saved
 */
function saveNumber(element){
	return function () {
		var container = document.getElementById("savedNumbersList");
		container.appendChild(element);
		element.saveButton.style.display = 'none';
	}
}

/**
 * Formats solid 10-digits phone number to (XXX) YYY-ZZZZ 
 * @param {String} number Solid 10-digits phone number
 */
function format10DigitsNumber (number){
	return "("+number.substring(0,3)+") "+number.substring(3,6)+"-"+number.substring(6,10)	
}

/**
 * Resets area code select form 
 * @private
 */
function resetForm(){
	
	if (!visitorID){visitorID="";}
	//alert(visitorID);
	
		document.getElementById('showMoreButtonContainer').style.display = 'none';
		if (document.areaCodeForm) {
			document.areaCodeForm.page.value = 0;
			document.areaCodeForm.showClosest.value = 1;
			document.areaCodeForm.visitorID.value = visitorID;
		}
		if (document.tollFreeForm) {
			document.tollFreeForm.page.value = 0;
			document.getElementById('showMoreButtonContainer').style.display = 'none';
			document.tollFreeForm.visitorID.value = visitorID;
		}
		if (document.stateCityForm) {
			document.stateCityForm.page.value = 0;
			document.getElementById('showMoreButtonContainer').style.display = 'none';
			document.stateCityForm.visitorID.value = visitorID;
		}
		document.getElementById('numbersListMessage').style.display = 'block';
		document.getElementById('numbersListList').style.display = 'none';
}

/**
 * Resets results block 
 * @private
 */
function resetResults(){
		var container = document.getElementById("numbersContainer");
		if (container) {
			container.innerHTML = "";
		}
		var messageContainer = document.getElementById('messageContainer');
		var messageContainerText = document.getElementById('messageContainerText');
		if (messageContainer) {
			messageContainer.style.display = 'none';
			messageContainerText.innerHTML = "";
		}
}

/**
 * Resets all input values and results
 */
function resetAll() {
	resetForm();
	resetResults();

	var container = document.getElementById("savedNumbersList");
	container.innerHTML = '';
	
	if (document.getElementById('areaCodeForm')) {
		resetAreaCode();
		resetPrefixNumber();
		document.getElementById('areaCodeForm').zpForm.runChangeHandlers();
	}

	if (document.getElementById('stateCityForm')) {	
		resetState();
		document.getElementById('stateCityForm').zpForm.runChangeHandlers();
	}
}



/**
 * Checks if user entered the same password two times
 */
function checkPassword() {
	if (document.registerUserForm.password.value != document.registerUserForm.confirmPassword.value) {
		alert("Confirm password!");
		return false;
	}
	return true; 
}

/**
 * Checks if user agrees with licence
 */
function doesAgree() {
	if(document.registerUserForm.agree.checked) {
		document.registerUserForm.submit.disabled = "";
	} else {
		document.registerUserForm.submit.disabled = "disabled";
	}
}

/**
 * Get bindings source for grid
 * @param {Object} objArgs
 */
function getBindingGridSource (objArgs) {
  return {
    source: 'ajax/bindingsGridSource.jsp?args='+escape(Zapatec.Transport.serializeJsonObj(objArgs)),
    sourceType: 'json/url'
  };
}


/**
 * Return true if area code input mask is filled
 */
function isAreaFilled(){
	return document.getElementById('areaCodeInput').zpFormField.isMaskFullyFilled();
}

/**
 * Submits form if area is filled
 */
function submitIfCan(){
		if(document.getElementById("visitorID")){
			document.getElementById("visitorID").value=visitorID;	
		}
		if (document.getElementById('areaCodeForm') && isAreaFilled()) {
			document.getElementById('areaCodeForm').onsubmit();
		}
		if (document.getElementById('stateCityForm')) {
			document.getElementById('stateCityForm').onsubmit();
		}
		if (document.getElementById('tollFreeForm')) {
			document.getElementById('tollFreeForm').onsubmit();
		}
}

/**
 * Resets areaCode field
 */
function resetAreaCode(){
	var areaCodeInput = document.getElementById('areaCodeInput');
	areaCodeInput.value = '';
	areaCodeInput.zpFormField.setValueFromField(true);
}

/**
 * Resets prefix field
 */
function resetPrefixNumber(){
	var phonePrefixInput = document.getElementById('phonePrefixInput');
	phonePrefixInput.value ='';
	phonePrefixInput.zpFormField.setValueFromField(true);
}

/**
 * Processing on area code change
 */
function processAreaCode(){
	resetForm();
	resetResults();
	resetPrefixNumber();
	
	if (isAreaFilled()) {
		document.getElementById('areaCodeForm').onsubmit();
		var phonePrefixInput = document.getElementById('phonePrefixInput');
		phonePrefixInput.focus();
	}
	document.getElementById('areaCodeInput').onfocus = focusPhonePrefix;
}

/**
 * Processing on area code change. Checks if can focus on phone prefix field
 */
function focusPhonePrefix(){
		resetAreaCode();
		if (isAreaFilled()) {
		var phonePrefixInput = document.getElementById('phonePrefixInput');
		phonePrefixInput.focus();
	}
}

/**
 * Processing on area code change
 */
function processAreaCodeOnIndexPage(){
	if (document.getElementById('areaCodeInput').value.length>2 ) {
		document.getElementById('areaCodeForm').submit();
	}
}

/*****************
 * Processing on area code change
 * 10/17/07 Bud Number Picker Modification
*/
function processAreaCodeKeyUp(obj,evt){
	
	var objAreaCode = document.getElementById(obj.id);
	makeValueNumber(objAreaCode,3);
	
	resetForm();
	resetResults();
	resetPrefixNumber();
	
	if(objAreaCode.value.length>2) {
		
		var phonePrefixInput = document.getElementById('phonePrefixInput');
		phonePrefixInput.focus();
		document.getElementById('areaCodeForm').onsubmit();
	}
	document.getElementById('areaCodeInput').onfocus = focusPhonePrefix;
}

/*****************
 * Processing on index page area code change
 * 10/17/07 Bud Number Picker Modification
*/
function processIndexAreaCodeKeyUp(obj,evt){

	
	var objAreaCode = document.getElementById(obj.id);
	makeValueNumber(objAreaCode,3);
	if(objAreaCode.value.length>2) {
		
		document.getElementById('areaCodeForm').submit();
	}
	
};

/*****************
 * Processing on prefix number change
 * 10/17/07 Bud Number Picker Modification
*/
var lastPrefixNumber = ""
function processPrefixNumberKeyUp(obj,evt){
	
	var objPrefixNumber = document.getElementById(obj.id);
	
	makeValueNumber(objPrefixNumber,3);
	if(objPrefixNumber.value!=lastPrefixNumber){
		resetForm();
		resetResults();
	
		submitIfCan();	
	}
	lastPrefixNumber = objPrefixNumber.value;
};


/**
 * Processing on phone prefix change 
 */
function processPrefixNumber(){
	resetForm();
	resetResults();
	
	submitIfCan();
}



/**
 * Processing on closest search switch change 
 */
function processClosestSwitch(){
	resetForm();
	resetResults();
	submitIfCan();
}

/**
 * Sets whether to search for closest numbers if no available numbers
 */
function switchClosestNumberSearch() {
	if (document.areaCodeForm.showClosestSwitch.checked) {
		document.areaCodeForm.showClosest.value = 1;
	} else {
		document.areaCodeForm.showClosest.value = 0;
	}
}


/**
 * Reset state field
 */
function 	resetState() {
	document.stateCityForm.state.value = '';
	document.stateCityForm.city.value = '';
	document.stateCityForm.city.zpFormField.autoCompleteOptions = [];
	processCity();
}

/**
 * Get cities for selected state
 */
function processState() {
		resetForm();
		document.stateCityForm.city.value = '';
		
		for (var ii = 0; ii < document.stateCityForm.state.options.length; ii++) {
			if (document.stateCityForm.state.options[ii].selected) {
				var state = document.stateCityForm.state.options[ii].text;
			}
		}

		if (state != '') {
			resetResults();
			Zapatec.Transport.fetchJsonObj({
				url: "ajax/getCities.jsp?state="+escape(state),
				onLoad: function (objArgs) {
					if (objArgs.success) {
						document.stateCityForm.city.options.length = 1;
						for (var ii = 0; ii < objArgs.cities.length; ii++) {
							document.stateCityForm.city.options[ii+1] = new Option(objArgs.cities[ii], objArgs.cities[ii]);
						}
//						document.stateCityForm.city.zpFormField.autoCompleteOptions = objArgs.cities;
					} else {
						alert ("Failed: "+objArgs.generalError)
					}
				},
				busyContainer: 'cityBlock'
			});
		}
}


/**
 * Processing on state and city 
 */
function processCity(){
	resetForm();
	resetResults();
	var state = document.stateCityForm.state.options[document.stateCityForm.state.selectedIndex].value;
	var city = document.stateCityForm.city.options[document.stateCityForm.city.selectedIndex].value;
	if (state != '' && city != '') {
		document.stateCityForm.onsubmit();
	} else {
	}
}

function processTollFree(){
	resetForm();
	document.getElementById('tollFreeForm').onsubmit();
}