﻿var common = {};	
	
common.formatAddress = function(op)
{
	//show the franchise information
	var name = op.Name;
	var address1 = op.AddressLine1;
	var address2 = op.AddressLine2;
	var city = op.City;
	var state = op.State;
	var zip = op.Zip;
	var phone1 = "1-800-STEEMER (1-800-783-3637)";
	var phone2 = op.PhoneNumber1;
	var phone3 = '';
	var fax = op.FaxNumber;
	var address_info = '';
	var email = op.EmailAddress;
	var isSTEEMER = false;
	
    
	if (phone2.toUpperCase().indexOf('STEEMER', 0) > 0) {
	    phone2 = null;
	} else {
		phone2 = common.formatPhone(phone2);
	}
	
	address_info += '<span class="bold">' + name + '</span><br />';
	if (op.IsAddressVisible)
	{
	    address_info += address1 + '<br />';
	    if (address2 !== null && address2 !== '') {
		    address_info += address2 + '<br />';
	    }
	}
	address_info += city + ', ' + state + ' ' + zip + '<br />';
	
	if (phone1 !== null && phone1 !== '') {
		address_info += phone1 + '<br />';
	}
	
	if (phone2 !== null && phone2 !== '') {
		address_info += phone2 + '<br />';
	}

	if(email !== null && email !== ''){
		address_info += "<a href='mailto:" +  email + "'>" + email + "</a><br/>";
	}

	return address_info;
}

common.formatPhone = function(val) {
    if (val === null || val === '') {
        return null;
    }

    var phone = '';
    if (val.match(/[a-zA-Z]/)) {
        phone = '1-800-STEEMER';
    } else {
        phone = '(';
        val = val.replace(/[^0-9]/g, '').split(''); 

        for (var i = 0; i < val.length; i++) {
            phone += val[i];

            if (i == 2) {
                phone += ')';
            } else if (i == 5) {
                phone += '-';
            }
        }
    }
    return phone;
} 

common.inSchedule = function(){
	if(/.*Home\/Schedule.*/i.test(window.document.location)){
		return true;
	}
	
	return false;
}

common.inStore = function(){
	if(/.*Home\/Store.*/i.test(window.document.location)){
		return true;
	}
	
	return false;
}

common.selectSideBarItem = function(curItem) {
    $("#side_bar_menu ul li a").each(function(){
        $(this).removeClass("current"); //reset
        if ($(this).text() == curItem) {
            $(this).addClass("current");
        }
    });      
}

common.isNumberKey = function(evt){
	var charCode = evt.which ? evt.which : evt.keyCode;
	if ((charCode > 31 && (charCode < 48 || charCode > 57)) || charCode == 13) {
		return false;
	}
	return true;
}

common.getTextBoxSelection = function(inputBox) {
    //this works for firefox
    if ("selectionStart" in inputBox) {
        return inputBox.value.substring(inputBox.selectionStart, inputBox.selectionEnd);
    }

    //for IE
    var bookmark = document.selection.createRange().getBookmark()
    var selection = inputBox.createTextRange()
    selection.moveToBookmark(bookmark)

    var before = inputBox.createTextRange()
    before.collapse(true)
    before.setEndPoint("EndToStart", selection)

    var beforeLength = before.text.length
    var selLength = selection.text.length

    return inputBox.value.substring(beforeLength, (beforeLength + selLength));
}

    // Removes leading whitespaces
    common.Trim = function (str) {
	var whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
	for (var i = 0; i < str.length; i++) {
		if (whitespace.indexOf(str.charAt(i)) === -1) {
			str = str.substring(i);
			break;
		}
	}
	for (i = str.length - 1; i >= 0; i--) {
		if (whitespace.indexOf(str.charAt(i)) === -1) {
			str = str.substring(0, i + 1);
			break;
		}
	}
	return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}

//Joe - 7/10/2009
common.IsNumeric = function (input){
    var RE = /^-{0,1}\d*\.{0,1}\d+$/;
    return (RE.test(input));
}


//Joe - 7/10/2009
common.validateDialogNumericInputText = function(inputControlId, changeLabelColor, MinLength){

	changeLabelColor = (changeLabelColor === undefined || changeLabelColor == null) ? true : changeLabelColor;
	var label = common.getLabelForInputControl(inputControlId);
	var id = (inputControlId.indexOf('#') === 0) ? inputControlId :'#' + inputControlId; 
	
	if (common.Trim($(id).val()) === '') {
		if(changeLabelColor){
			$(label).css('color', '#ff0000');
		}
		
		$(id).addClass('invalid');
		return false;
	} 
	else
	{
	 
	    	    
	    var failed = true;	    
	    if(MinLength != null)	   
	    {
	        if (common.Trim($(id).val()).length >= MinLength)
	        {	            
	            failed = false;
	        }
	    }
	    
	    var justnbr = common.Trim($(id).val());
	    if (MinLength == 10)
	    {	        
	        justnbr = common.Trim($(id).val()).replace(/\D/g,'');	     
	    }
	
        if (common.IsNumeric(justnbr) == false || failed) 
        {
            if(changeLabelColor){
			$(label).css('color', '#ff0000');
		    }
		
		    $(id).addClass('invalid');
		    return false;
        }
	}
	
	if(changeLabelColor){
		$(label).css('color', '#000000');
	}
	$(id).removeClass('invalid');
	return true;
}

common.validateDialogInputText = function(inputControlId, changeLabelColor){
	changeLabelColor = (changeLabelColor === undefined || changeLabelColor == null) ? true : changeLabelColor;
	var label = common.getLabelForInputControl(inputControlId);
	var id = (inputControlId.indexOf('#') === 0) ? inputControlId :'#' + inputControlId; 
	if (common.Trim($(id).val()) === '') {
		if(changeLabelColor){
			$(label).css('color', '#ff0000');
		}
		
		$(id).addClass('invalid');
		return false;
	} 
	
	if(changeLabelColor){
		$(label).css('color', '#000000');
	}
	$(id).removeClass('invalid');
	return true;
}

common.getLabelForInputControl = function(inputControlId){
	return $("label[for='" + inputControlId.replace('#','') + "']")
}

common.populateStateDropdown = function(selectBox, callback) {
    var states = "<option value=\" \">Please Select</option>" +
				"<option value=\"AL\">Alabama</option>" +
				"<option value=\"AK\">Alaska</option>" +
				"<option value=\"AZ\">Arizona</option>" +
				"<option value=\"AR\">Arkansas</option>" +
				"<option value=\"CA\">California</option>" +
				"<option value=\"CO\">Colorado</option>" +
				"<option value=\"CT\">Connecticut</option>" +
				"<option value=\"DE\">Delaware</option>" +
				"<option value=\"DC\">District of Columbia</option>" +
				"<option value=\"FL\">Florida</option>" +
				"<option value=\"GA\">Georgia</option>" +
				"<option value=\"HI\">Hawaii</option>" +
				"<option value=\"ID\">Idaho</option>" +
				"<option value=\"IL\">Illinois</option>" +
				"<option value=\"IN\">Indiana</option>" +
				"<option value=\"IA\">Iowa</option>" +
				"<option value=\"KS\">Kansas</option>" +
				"<option value=\"KY\">Kentucky</option>" +
				"<option value=\"LA\">Louisiana</option>" +
				"<option value=\"ME\">Maine</option>" +
				"<option value=\"MD\">Maryland</option>" +
				"<option value=\"MA\">Massachusetts</option>" +
				"<option value=\"MI\">Michigan</option>" +
				"<option value=\"MN\">Minnesota</option>" +
				"<option value=\"MS\">Mississippi</option>" +
				"<option value=\"MO\">Missouri</option>" +
				"<option value=\"MT\">Montana</option>" +
				"<option value=\"NE\">Nebraska</option>" +
				"<option value=\"NV\">Nevada</option>" +
				"<option value=\"NH\">New Hampshire</option>" +
				"<option value=\"NJ\">New Jersey</option>" +
				"<option value=\"NM\">New Mexico</option>" +
				"<option value=\"NY\">New York</option>" +
				"<option value=\"NC\">North Carolina</option>" +
				"<option value=\"ND\">North Dakota</option>" +
				"<option value=\"OH\">Ohio</option>" +
				"<option value=\"OK\">Oklahoma</option>" +
				"<option value=\"OR\">Oregon</option>" +
				"<option value=\"PA\">Pennsylvania</option>" +
				"<option value=\"RI\">Rhode Island</option>" +
				"<option value=\"SC\">South Carolina</option>" +
				"<option value=\"SD\">South Dakota</option>" +
				"<option value=\"TN\">Tennessee</option>" +
				"<option value=\"TX\">Texas</option>" +
				"<option value=\"UT\">Utah</option>" +
				"<option value=\"VT\">Vermont</option>" +
				"<option value=\"VA\">Virginia</option>" +
				"<option value=\"WA\">Washington</option>" +
				"<option value=\"WV\">West Virginia</option>" +
				"<option value=\"WI\">Wisconsin</option>" +
				"<option value=\"WY\">Wyoming</option>";
    $(selectBox).empty().append(states);
    
	if(callback){
		callback();
	}
}

common.isNotEnterKey = function(evt) {
    var charCode = evt.which ? evt.which : evt.keyCode;
    if (charCode === 13) {
        return false;
    }
    return true;
}

common.hasInvalidRequiredControls = function(changeLabelColor){
	var hasInvalidControls = false;
	
	$('.required').each(function(){
		if(!common.validateDialogInputText($(this).attr('id'), changeLabelColor)){
			hasInvalidControls = true;
		}
	});
	
	//Joe 7/10/2009
	$('.requiredNumeric').each(function(){
		if(!common.validateDialogNumericInputText($(this).attr('id'), changeLabelColor,0)){
			hasInvalidControls = true;
		}
	});
		
	//Joe 7/13/2009
	$('.requiredZip').each(function(){	    
		if(			    		   
		   !(common.validateDialogNumericInputText($(this).attr('id'), changeLabelColor,5))	   
		   ){
			hasInvalidControls = true;
		}
		
		
		
	});
	
	$('.requiredPhone').each(function(){
		if(		    
		    !(common.validateDialogNumericInputText($(this).attr('id'), changeLabelColor,10))
		    
		  ){
			hasInvalidControls = true;
		}
	});
	
	
	
	return hasInvalidControls;
}

common.mask = function(f) {
	var val = $(f).val();
	
	if (val.search(/^\d{10}$/) != -1) {
		var phone = '(';
		val = val.split('');
		
		for (var i = 0; i < val.length; i++) {
			phone += val[i];
			if (i == 2) {
				phone += ')';
			}
			
			if (i == 5) {
				phone += '-';
			}
		}
		
		$(f).val(phone);
		return true;
	} else if (val.search(/^\(\d{3}\)\d{3}-\d{4}$/) != -1 || val === '') {
		return true;
	} else {
		return false;
	}
}

common.preloadImages = function() {
    IMAGEPRELOAD = [];
    for (var i = 0; i < arguments.length; i++) {
        var img = new Image();
        img.src = arguments[i];
        IMAGEPRELOAD.push(img);
    } return IMAGEPRELOAD;
}

common.months = [
	'January', 'February', 'March',
	'April', 'May', 'June',
	'July', 'August', 'September',
	'October', 'November', 'December'];

common.week = [
	'Sunday', 'Monday', 'Tuesday',
	'Wednesday', 'Thursday',
	'Friday', 'Saturday'];

//create special line items use in hardwood cross sell
common.createHardwoodEstimateLineItem = function(lineID) {
    return { LineID: lineID, AreaID: 95, ServiceID: 1, Quantity: 1 }
}

//create special line item used in tile cross sell
common.crateTileEstimateLineItem = function(lineID) {
    return { LineID: lineID, AreaID: 82, ServiceID: 1, Quantity: 1 }
}

common.getDefaultNullDate = function() {
    var defaultNullDateStr = "/Date(-62135578800000)/";
    return defaultNullDateStr;
}

/* -------- CLEARSALEING FUNCTIONS --------- */
//Called after user either logs in or creates a new account in the scheduling checkout
//Accepts operationID and new customer flag
common.clearSaleing_CustomerInfo = function (opID, isNew) {
	resetClearSaleingVariables();

	csSalesStageCode = 'Closed/Won';
	
	
	if (isNew) { 
		csOrderNum = 'CIN-'; 
		csOrderType = 'Customer Info New';
	}
	else  {
		csOrderNum = 'CI-'; 
		csOrderType = 'Customer Info';
	}
	
	if ($.cookie(SESSION_GUID, 'current_tab') == 'duct') {
		csOrderType += ' - AD';
	} 
	else csOrderType += ' - CTG';
	
	csOrderNum += getSessionID();
	csCustomerRating = opID;
	csPostalCode =  $.cookie(SESSION_GUID, 'zip_code');
	
	try {
		executeShoppingCart();
		executeTrackerAJAX("edata.js");
	} catch(ex){}
}
