
// ------------------ GLOBALS ----------------------//
var ajx_rootPath = '/';
var ajx_tax = 0.0;//825;
var ajx_lastGroupID = 0; // identifies which group the current items should be added to

function ajx_getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

// ------------------ LOADING ----------------------//
document.write('<div id="ajx_loading">loading...</div>');

function ajx_showLoading(){
	var loading = document.getElementById('ajx_loading');
	loading.style.zIndex = ajx_curtainIndex + 1;
	loading.style.display = 'block';
}

function ajx_hideLoading(){
	document.getElementById('ajx_loading').style.display = 'none';
}



//------------------- CURTAIN -----------------------//
var ajx_curtainIndex = -1;
document.write('<div id="ajx_curtain"></div>');
function ajx_openCurtain(){
	var curtain = document.getElementById('ajx_curtain');
	ajx_curtainIndex++;
	curtain.style.zIndex = ajx_curtainIndex;
	curtain.style.display='block';
	curtain.style.height= document.body.scrollHeight + 'px';
}

function ajx_closeCurtain(){
	var curtain = document.getElementById('ajx_curtain');
	ajx_curtainIndex--;
	curtain.style.zIndex = ajx_curtainIndex;
	if(ajx_curtainIndex == -1){
		curtain.style.display='none';
	}
}


//----------------------- CART ---------------------------//

var ajx_cartRowIndex = 0;
var ajx_cartTotal = 0;
var ajx_cartSubtotal = 0;

var ajx_cartItems = new Array();
var html = '';
html += '<div id="ajx_cartOuter">';
	html += '<div id="ajx_cartInner">';
		html += '<div id="ajx_cartClose" onClick="ajx_hideCart();"><a href="#"></a></div><div style="clear: both;"></div><div id="ajx_cartTitle"><img src="images/cart/yourcart.gif" alt="yourcart" /></div><div style="float: right; margin-right:4px;">';
		//html += '<a id="ajx_checkOutLinkTop" style="cursor:pointer;" href="checkout.htm"><img id="ajx_checkoutImgTop" border="0" src="images/cart/checkoutc.gif" alt="checkout" /></a>';
		html += '</div>';
		html += '<div id="ajx_cartHead"></div>';
		html += '<table id="ajx_cartRowHead"><tr>';
			html += '<td class="ajx_cartDel">&nbsp;</td>';
			html += '<td class="ajx_cartItem"></td>';
			html += '<td class="ajx_cartDesc">item</td>';
			html += '<td class="ajx_cartQuantity">quantity</td>';
			html += '<td class="ajx_cartPrice">price</td>';
		html += '</tr></table>';
		html += '<div id="ajx_cartItemList"></div>';
		html += '<div id="ajx_cartSubtotal"></div>';
		html += '<div id="ajx_cartTotal"></div>';
		//html += '<div id="ajx_cartFoot"><div style="float: left;"><span style="cursor: pointer;" onClick="ajx_hideCart();"><img src="images/cart/continueshoppingc.gif" alt="continue shopping" /></span></div>';		
		html += '<div id="ajx_cartFoot"><div style="float: left;"><span style="cursor: pointer;" onClick="ajx_hideCart();"></span></div>';
			html += '<a id="ajx_checkOutLinkBtm" style="cursor:pointer;" href="checkout.htm"><img id="ajx_checkoutImgBtm" border="0" src="images/cart/blankbutton.JPG" alt="checkout" /></a>';
		html += '</div>';	
		html += '<div id="ajx_msg"></div>';
	html += '</div>';
html += '</div>';
document.write(html);

document.getElementById('ajx_cartInner').innerHTML += '';

ajx_loadFromSession();
var ajx_checOutPage = false;

document.write('<div id="ajx_alert"></div>');
function ajx_alert(msg){
	var alertBox = document.getElementById('ajx_alert');
	alertBox.innerHTML = '<img src="images/cart/'+msg+'.gif" alt="" />';
	var xy = ajx_getScrollXY();
	alertBox.style.top = ( document.body.clientHeight/2 + xy[1] - 64) + 'px';
	alertBox.style.left = ( document.body.clientWidth/2 + xy[0] - 58) +'px';
	alertBox.style.display = 'block';
	setTimeout("document.getElementById('ajx_alert').style.display='none';", 1000);
}


function ajx_showCart(){
	
	ajx_openCurtain();
	document.getElementById('ajx_cartOuter').style.display = 'block';
	//var loading = document.getElementById('ajx_cartOuter');
	//loading.style.zIndex = ajx_curtainIndex + 1;
	//ajx_fadeIn('ajx_cartOuter', 0, 30);
}

function ajx_hideCart(){
	//ajx_fadeOut('ajx_cartOuter', 100, 30);
	//setTimeout("ajx_closeCurtain()", 500);
	document.getElementById('ajx_cartOuter').style.display = 'none';
	ajx_closeCurtain()
}

function ajx_loadFromSession(){
	rebuildFromCookie(); // get the values of the cart from the cookie
	saveCookie(); // update the cookie to expire in 30 minutes, we do this everytime the page loads
}


function ajx_cartItemStrHandler(itemStr){
	var splitA = itemStr.split('&');
	var fieldArray = new Array();
	for(var i=0; i<splitA.length; i++){
		var splitB = splitA[i].split('=');
			if(splitB.length != 2){
				return ajx_error(1);
			}
		fieldArray[splitB[0]] = splitB[1];
		//set the checkout links and images
		if(splitB[0] == 'destUrl'){
			//document.getElementById('ajx_checkOutLinkTop').href = splitB[1];
			document.getElementById('ajx_checkOutLinkBtm').href = splitB[1];
		}
		if(splitB[0] == 'destImg'){
			//document.getElementById('ajx_checkoutImgTop').src = splitB[1];
			document.getElementById('ajx_checkoutImgBtm').src = splitB[1];
		}
	}
	return fieldArray;
}


function ajx_cartSend(itemStr){
	ajx_cartAddErrorFlag(ajx_cartItemStrHandler(itemStr));
	ajx_cartAddItem(ajx_cartItemStrHandler(itemStr));
	saveCookie(); // save the change to the cookie/session
	ajx_cartListItems();
	ajx_cartRowIndex++;
	ajx_showCart();
}

//add item to the item list array
function ajx_cartAddErrorFlag(itemInfo)
{
	var id = itemInfo['id'];
	var splitkey = new Array();

	//check if its a rate plan
	if(  '201' == id || '202' == id || '203' == id || '204' == id || '205' == id || '206' == id )
	{
		var existFlag = false;
		//search if item already exist in cart
		for (key in ajx_cartItems){
			splitkey = key.split('_');
			if( splitkey[0] == '201' || splitkey[0] == '202' || splitkey[0] == '203' || splitkey[0] == '204' || splitkey[0] == '205' || splitkey[0] == '206' )
			{
				//if it comes in here means there is already a rate plan, so send them to the already exists rate plan page
				resetCart();
				location.href="oops.php";	
			}
		}		
	}	
}
	

//add item to the item list array
function ajx_cartAddItem(itemInfo){
	var id = itemInfo['id'] + '_' + ajx_lastGroupID;
	var existFlag = false;
	//search if item already exist in cart
	for (key in ajx_cartItems){
		if(key == id){
			existFlag = true;	
		}
	}
	if(!existFlag){
		ajx_cartItems[id] = new Array();
		ajx_cartItems[id]['id'] = itemInfo['id'];
		ajx_cartItems[id]['name'] = itemInfo['name'];
		ajx_cartItems[id]['desc'] = itemInfo['desc'];
		ajx_cartItems[id]['image'] = itemInfo['image'];
		ajx_cartItems[id]['price'] = itemInfo['price'];
		ajx_cartItems[id]['url'] = itemInfo['url'];
		ajx_cartItems[id]['related'] = itemInfo['related'];
		ajx_cartItems[id]['destUrl'] = itemInfo['destUrl'];
		ajx_cartItems[id]['destImg'] = itemInfo['destImg'];
		ajx_cartItems[id]['quantity'] = 1;
		ajx_cartItems[id]['group'] = ajx_lastGroupID;
	}
	else{
		ajx_cartItems[id]['quantity']++; // increment quantity if already exist
	}
	ajx_cartUpdateTotals();
}

function ajx_completeGroup() {
    // This method is called after a service is added to the cart, thereby completing the package
    ajx_lastGroupID = ajx_lastGroupID + 1;
    saveCookie();
}

function ajx_carRemoveItem(id){
	delete(ajx_cartItems[id]);
	ajx_cartUpdateTotals();
	ajx_cartListItems();
	ajx_alert('itemdeleted');
	saveCookie(); // save the changes to the cookie/session
	
}

//create the innerhtml that will show the list of items in the cart

function ajx_cartListItems(){
	var html = '<table id="ajx_cartItemListBody" class="ajx_cartItemRow">';
	var notEmptyFlag = false;
	var rowCount = 0;
	
	var prevRelated = '';
	var prevGroup = 0;
	for (key in ajx_cartItems){
		notEmptyFlag = true;
		var itemInfo = ajx_cartItems[key]; 
		html += '<tr';
		// Add in a border if this is not the same group
		if(rowCount > 0 && prevGroup == itemInfo['group'])
		{
		    // This is not the first item, and it is a new group, show a border
		    html += ' class="noB"';
		}
		html += '>';
		html += '<td class="ajx_cartDel"></td>';
		html += '<td class="ajx_cartItem">';
		if(itemInfo['image'].length > 0){
			html += '<a href="'+itemInfo['url']+'"><img src="'+itemInfo['image']+'" width="80" style="border:0px;"></a>';
		}
		html += '</td>';
		html += '<td class="ajx_cartDesc"><a href="'+itemInfo['url']+'">'+itemInfo['name']+'</a><br />'+itemInfo['desc']+'</td>';
		html += '<td class="ajx_cartQuantity">';
		html += '<div class="left"><input type="text" class="ajx_cartInput" id="ajx_cartQuan'+key+'" value="'+itemInfo['quantity']+'" /><br /><a style="cursor:pointer; text-decoration:underline; color:#5daadb;" onclick="ajx_cartUpdate();">Update</a></div>';
		html += '<a href="#" onClick="ajx_carRemoveItem(\''+ key +'\');"></a></td>';
		html += '<td class="ajx_cartPrice">'+ajx_formatCurrency(itemInfo['price'] * itemInfo['quantity'])+'<br/>';
		html += '('+ ajx_formatCurrency(itemInfo['price']) +' each)</td>';
		html += '</tr>';
		rowCount++;
		prevGroup = itemInfo['group'];
		prevRelated = itemInfo['related'];
	}
	if(!notEmptyFlag){
		html += '<tr class="noB center"><td width="100%">your shopping cart is empty</td></tr>';
	}
	
	html += '</table>';
	document.getElementById('ajx_cartItemList').innerHTML = html;
}


//up date totals
function ajx_cartUpdateTotals(){
	ajx_cartSubtotal = 0;
	for (key in ajx_cartItems){
		ajx_cartSubtotal += parseFloat(ajx_cartItems[key]['quantity']) * parseFloat(ajx_cartItems[key]['price']);
	}
	ajx_cartTotal = (ajx_tax * ajx_cartSubtotal) + ajx_cartSubtotal;
	document.getElementById('ajx_cartSubtotal').innerHTML = 'Subtotal: '+ ajx_formatCurrency(ajx_cartSubtotal);
	document.getElementById('ajx_cartTotal').innerHTML = 'Order Total: '+ ajx_formatCurrency(ajx_cartTotal);
}

function ajx_cartUpdate(){
	//validate numbers
	
	for (key in ajx_cartItems){
		var quantity = document.getElementById('ajx_cartQuan'+key).value;
		if(isNaN(quantity) ){
			alert('please a number');
			document.getElementById('ajx_cartQuan'+key).focus();
			return false;
		}
	}
	var updateStr = new Array(); // for updating session
	for (key in ajx_cartItems){
		var quantity = document.getElementById('ajx_cartQuan'+key).value;
		updateStr[updateStr.length] = key +'='+ quantity;
		if(quantity<=0){
			delete(ajx_cartItems[key]);
		}
		else{
			ajx_cartItems[key]['quantity'] = quantity;
		}
	}
	ajx_cartUpdateTotals();
	ajx_cartListItems();
	ajx_alert('cartupdated');
	saveCookie(); // save the changes to the cookie/session
}


function ajx_formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function ajx_request(url){
	var request = null;

	try {
		request = new XMLHttpRequest();
	}catch (trymicrosoft){
		try{
			request = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (othermicrosoft){
			try{
				request = new ActiveXObject("Microsoft.XMLHTTP");
			}catch (failed){
				request = null;
			}
		}
	}
	request.open("GET", url, true);
	request.send(null);
}

// --- START: Added by Bellwether Web Solutions --- //

// --- START: Checkout functions - BWS --- //

// --- END: Checkout functions - BWS --- //

// --- START: Cookie functions - BWS --- //
function saveCookie()
{
	// This saves a cookie of the cart items for 30 minutes,
	//	we'll call this every time a page
	//	is loaded in effect creating a session
	var date = new Date();
	date.setTime(date.getTime()+(30*60*1000));
	var cookieValue = "";
	for (i in ajx_cartItems)
	{	    
	    // IDwithGroup~ID~Name~Desc~Image~Price~url~related~destUrl~destImg~quantity
	    var cartItem = "";
	    cartItem = i + "~" + ajx_cartItems[i]['id'] + "~" + ajx_cartItems[i]['name'] + "~" + ajx_cartItems[i]['desc'] + "~";
	    cartItem = cartItem + ajx_cartItems[i]['image'] + "~" + ajx_cartItems[i]['price'] + "~";
	    cartItem = cartItem + ajx_cartItems[i]['url'] + "~" + ajx_cartItems[i]['related'] + "~";
	    cartItem = cartItem + ajx_cartItems[i]['destUrl'] + "~" + ajx_cartItems[i]['destImg'] + "~";
	    cartItem = cartItem + ajx_cartItems[i]['quantity'] + "~" + ajx_cartItems[i]['group'];
	    
	    // Add the cart item to the cookieValue
	    cookieValue = cookieValue + "|" + cartItem;
	}
	
	// Remove the leading | that we'll have after the loop
	if(cookieValue.length > 0)
	{
	    cookieValue = cookieValue.substring(1);
	}
	
	// Add the last group id to the cookie
	cookieValue = ajx_lastGroupID + "|" + cookieValue;
	
	// Make sure we don't have bad characters in the cookie value
	cookieValue = escape(cookieValue);
	
	// Save the cookie
	document.cookie = "finawirelesscart=" + cookieValue + "; expires=" + date.toGMTString() + "; path=/";
}

function rebuildFromCookie() {
    // This rebuilds the ajx_cartItems array from the cookie
    ajx_cartItems = new Array();
    
    // Get the finawireless cookie
    var cookiesArray = document.cookie.split(';');
    var cookieName = "finawirelesscart";
    var cartInfo = "";
    for(var i = 0; i < cookiesArray.length; i++)
    {
        var cookie = cookiesArray[i];
        // remove leading whitespace
        while(cookie.charAt(0) == ' ')
        {
            cookie = cookie.substring(1);
        }
        // Check if this is the cart cookie
        if(cookie.indexOf(cookieName) == 0)
        {
            // get our cart info
            cartInfo = cookie.substring(cookieName.length + 1);
            // and break out of the loop
            i = cookiesArray.length;
        }
    }
    
    // Process the cart info (if we have it)
    if(cartInfo == "")
    {
        // no cart info, reset the cart items
        ajx_cartItems = new Array();
        return;
    }
    
    // Get the cart items array
    cartItems = unescape(cartInfo).split('|');
    
    // The cart items are as follows:
    //      cartItems[0] = ajx_lastGroupID
    //      cartItems[1...n] = itemInfo
    
    // Get the ajx_lastGroupID value
    if(cartItems.length > 0) { ajx_lastGroupID = cartItems[0]; }
    else { ajx_lastGroupID = 0; }
    
    // turn the cart items into values the ajx_cartItems wants
    for(var j = 1; j < cartItems.length; j++)
    {
        // IDwithGroup~ID~Name~Desc~Image~Price~url~related~destUrl~destImg~quantity~group //
        var cartItemInfo = cartItems[j].split('~');
        if(cartItemInfo.length < 12)
        {
            // this isn't a cart item we understand
            continue;
        }
        
        // Populate the ajx_cartItems with this cart item
        var id = cartItemInfo[0];
        ajx_cartItems[id] = new Array();
        ajx_cartItems[id]['id'] = cartItemInfo[1];
		ajx_cartItems[id]['name'] = cartItemInfo[2];
		ajx_cartItems[id]['desc'] = cartItemInfo[3];
		ajx_cartItems[id]['image'] = cartItemInfo[4];
		ajx_cartItems[id]['price'] = cartItemInfo[5];
		ajx_cartItems[id]['url'] = cartItemInfo[6];
		ajx_cartItems[id]['related'] = cartItemInfo[7];
		ajx_cartItems[id]['destUrl'] = cartItemInfo[8];
		ajx_cartItems[id]['destImg'] = cartItemInfo[9];
		ajx_cartItems[id]['quantity'] = cartItemInfo[10];
		ajx_cartItems[id]['group'] = cartItemInfo[11];
    }
    
    // Now that the ajx_CartItems has been updated, recalculate the totals
    ajx_cartUpdateTotals();
}

function resetCart()
{
    // This removes the cart cookie
    var date = new Date();
	date.setTime(date.getTime()+(-1*24*60*60*1000));
    document.cookie = "finawirelesscart=; expires=" + date.toGMTString() + "; path=/";
    ajx_cartItems = new Array();
}

// --- END: Cookie functions - BWS --- //

// --- START: Cart functions - BWS --- //
function getCartSummary(objElement, objShipRate)
{
    // Updates the supplied objElement.innerHTML with the cart summary
    var bExists = false;
    if(ajx_cartItems)
    {
        for(key in ajx_cartItems)
        {
            if(ajx_cartItems[key])
            {
                bExists = true;
                break;
            }
        }
    }
    
    if(!bExists)
    {
        window.location = "productpage.htm";
        return;
    }
    
    var objContainer = getElement(objElement);
    if(objContainer)
    {
        var html = '<ul><li class="summary_header"><span class="item">Item</span><span class="qty">Quantity</span><span class="price">Price</span></li>';
        var cartSubtotal = 0;
        var rowCount = 0;
        
        var prevGroup = 0;
        var cssStyle = '';
        
        for(key in ajx_cartItems)
        {
            if(rowCount > 0 && prevGroup != ajx_cartItems[key]['group'])
		    {
		        // This is not the first item, and it is a new group, show a border
		        cssStyle = ' style="border-top:1px solid #cdcdcd;"';
		    }
		    
            html +=
                '<li class="item"' + cssStyle + '><span class="item">' + ajx_cartItems[key]['name'] + '<small>' +
                ajx_cartItems[key]['desc'] + '</small></span><span class="qty">' +
                ajx_cartItems[key]['quantity'] + '</span><span class="price">' +
                ajx_formatCurrency(ajx_cartItems[key]['price'] * ajx_cartItems[key]['quantity']) +
                '<small>(' + ajx_formatCurrency(ajx_cartItems[key]['price']) + ' each)</small></span></li>';
                
            cartSubtotal += parseFloat(ajx_cartItems[key]['quantity']) * parseFloat(ajx_cartItems[key]['price']);
            
            rowCount++;
            prevGroup = ajx_cartItems[key]['group'];
            cssStyle = '';
        }
        
        // Add the order totals
        var cartTax = ajx_tax * cartSubtotal;
        var cartShipping = parseFloat(getValueFromRadioButtonGroup("radioShipOption"));
        var cartTotal = cartTax + cartSubtotal + cartShipping;
        html +=
        '<li class="calc grey">' +
            '<span class="item">&nbsp;</span>' +
            '<span class="qty">Subtotal:</span>' +
            '<span class="price">' + ajx_formatCurrency(cartSubtotal) + '</span>' +
        '</li>' +
        '<li class="grey">' +
            '<span class="item">&nbsp;</span>' +
            '<span class="qty">Shipping:</span>' +
            '<span class="price">' + ajx_formatCurrency(cartShipping) + '</span>' +
        '</li>' +
        '<li class="grey">' +
            '<span class="item">&nbsp;</span>' +
            '<span class="qty">Tax:</span>' +
            '<span class="price">' + ajx_formatCurrency(cartTax) + '</span>' +
        '</li>' +
        '<li class="summary_header">' +
            '<span class="item"></span>' +
            '<span class="qty">Order Total:</span>' +
            '<span class="price">' + ajx_formatCurrency(cartTotal) + '</span>' +
        '</li></ul>';
        
        objContainer.innerHTML = html;
    }
}

function getElement(id)
{
    if (document.getElementById)
        var returnVar = document.getElementById(id);
    else if (document.all)
        var returnVar = document.all[id];
    else if (document.layers)
        var returnVar = document.layers[id];
    return returnVar;
}

// --- END: Cart functions - BWS --- //

// --- END: Added by Bellwether Web Solutions --- //