// common.js /////////////////////////////

function getCookie(c_name) {
   if (document.cookie.length>0) {
     c_start=document.cookie.indexOf(c_name + "=");
     if (c_start!=-1) {
       c_start=c_start + c_name.length+1;
       c_end=document.cookie.indexOf(";",c_start);
       if (c_end==-1) c_end=document.cookie.length;
       return unescape(document.cookie.substring(c_start,c_end));
     }
   }
   return "";
}

function setCookie(c_name,value,expiredays) {
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+expiredays);
    document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function jqueryInit() {
	$.ajaxSetup({
		type: "POST",
		contentType: "application/json; charset=utf-8",
		data: "{}",
		//dataType: "json",
		dataFilter: function (data) {
			var msg;
			if (typeof (JSON) !== 'undefined' &&
			typeof (JSON.parse) === 'function')
				msg = JSON.parse(data);
			else
				msg = eval('(' + data + ')');

			if (msg.hasOwnProperty('d'))
				return msg.d;
			else
				return msg;
		}
	});
}

/// <summary>
/// Call web service to validate form start quoting process and session, and
/// redirects user to first page of quoting process or display validation error.
/// </summary>
function processQuoteSelection() {
	var ddlBusinessLine = document.getElementById('ddlBusinessLine');
	var txtPostalCode = document.getElementById('txtPostalCode');
	
	$("#lblError").hide();
	
	// first check if postal code is valid before sending a request
	if (!PostalCodeIsValid(txtPostalCode.value)) {
		$("#lblError").text('Invalid Postal Code.  Please correct and try again.').show();
		$('#txtPostalCode').focus();
		return;
	}
	
	$.ajax({
		url: '/WebServices/QuoteService.asmx/GetQuoteSelectionResponse',
		data: "{'businessLine':" + ddlBusinessLine.value + ",'postalCode':'" + txtPostalCode.value + "'}",
		beforeSend: function() { 
			$('#frmQuoteSelection').addClass('busy');
		},
		complete: function() {
			$('#frmQuoteSelection').removeClass('busy');
		},
		success: function (data) {
			if (data.ErrorNumber == 0) {
				var redirectUrl = data.RedirectUrl;
				if (redirectUrl.indexOf('~') > -1) {
					redirectUrl = redirectUrl.replace('~', '');
				}
				/*if(checkCookie() == false){
					window.location = '/errors/Cookies.aspx';
				}else{
					window.location = redirectUrl;
				}*/
				window.location = redirectUrl;
			} else {
				$('.errorMessage').show();
				if (data.ErrorMessage != undefined) {
					$("#lblError").text(data.ErrorMessage);
				} else {
					$("#lblError").text('The quoting service is currently unavailable.');
				}
			}
		},
		error: function (data) {
			$('.errorMessage').show();
			$("#lblError").text('The quoting service is currently unavailable.');
		}
	});
}

function checkCookie(){
	setCookie('test', 'test', 1);
	return (getCookie('test') == '') ? false : true;
}

/// <summary>
/// Detect if enter key was entered in quote selection area
/// and execute as if button was clicked
/// </summary>
function checkQuoteSelectionSubmit(e) {
	if (e && e.keyCode == 13) {
		processQuoteSelection();
		return false;
	}
	return true;
}
		
// gets query string parameter values
function getParameterByName(name) {
	name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
	var regexS = "[\\?&]" + name + "=([^&#]*)";
	var regex = new RegExp(regexS);
	var results = regex.exec(window.location.href);
	if(results == null) return "";
	else return decodeURIComponent(results[1].replace(/\+/g, " "));
}
		
		
// the StartCampaignQuote.ashx file will create cookies
// if any errors occur when a campaign quote is initialized
// we have to read these cookies and determine which error to show
// and next steps for user.
var ProcessCampaignErrors = function() {
	var errorNum = getCookie("StartCampaignErrorNumber");
	var errorMsg = getCookie("StartCampaignErrorMessage");
	var lob = getParameterByName("lob");
	var postalCode = getParameterByName("pc");
	
	if (errorNum != "") {
		if (errorNum == 100) errorMsg = "There was an error.  Please try again.";
		if (lob != "") $('#ddlBusinessLine').val(lob);
		if (postalCode != "") $('#txtPostalCode').val(postalCode);
		$('#lblError').html(errorMsg).show();
		// remove cookies
		setCookie("StartCampaignErrorNumber", "", -1);
		setCookie("StartCampaignErrorMessage", "", -1);
	}
};
		
		
var PostalCodeIsValid = function(strPostalCode) {
	var regexObj = {
		canada 		: /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]( )?\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i , //i for case-insensitive
		usa    		: /^\d{5}(-\d{4})?$/ 
	};
	var regexp = new RegExp(regexObj.canada);
	
	// Canadian Postal Code
	if(regexp.test(strPostalCode)) return true;
	
	// US Zip Code
	//regexp = null;
	//regexp = new RegExp(regexObj.usa);
	//if(regexp.test(strPostalCode)) return true;
	
	return false;
};
		

$(document).ready(function () {

	//initialize jquery defaults
	jqueryInit();
	
	// check for campaign related errors
	ProcessCampaignErrors();

});


