/* 
 * Global constants
 */

var ua = navigator.userAgent.toLowerCase(), isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1));
var isSafari = ua.indexOf("safari")!=-1, isLinux = ua.indexOf("linux")!=-1;
var LAST_STEP_TEXT = 'Choose your phone';
var Page = {}; // Var to store page specific settings

$(function() { 
	if (Page.focus && !Page.autoComplete) $(Page.focus).focus(); // jquery.autocomplete has issues if default focus is set on page
	if (Page.lexyFlash) { 
		var loadLexyDemos = function() { for (var i=0; i<Page.lexyFlash.length; i++) { $('#lexy_'+Page.lexyFlash[i].productId).flash(Page.lexyFlash[i].cfg); } }
		$.getScript(Util.baseUrl+'/scripts/jquery/jquery.swfobject.js', loadLexyDemos);
	}
});

var Util = {
    baseUrl: null, // No ending slash
	setBaseUrl: function(url) { Util.baseUrl = url || $('script[src*=scripts/utilities.js]').attr('src').replace(/\/scripts\/utilities.js(.*)$/,''); },
	url: function(url) { return this.baseUrl+'/'+url.replace(/^\/+/, ''); },
	redirect: function(url) { window.location = url.indexOf('http')==0 ? url : this.url(url); }
};  Util.setBaseUrl(); // Get base url from script source path

// Default $.getScript cache to true
$.getScript = function(url, callback, cache){ if (arguments.length<3) cache = true; $.ajax({type:'GET', url:url, success:callback, dataType:'script', cache:cache}); };

/*
 * Utility functions
 */
function initTooltips() { $(function() { $.getScript(Util.baseUrl+'/scripts/jquery/tooltip/jquery.tooltip.js', function(){ $('a.tooltip, img.tooltip').tooltip({showURL:0}); }); }); }
function handleTopCategoryMenu() { $('#leftNav').children().each(function() { if ($(this).hasClass('open')) { if (currPageIsTopCat(this)) $(this).addClass('currIsTopCat'); } }); function currPageIsTopCat(el) { var b = true, li = $(el).children()[1]; $(li).children().each(function() { if ($(this).get()[0].className != '') b = false; }); return b; } }
function popUp(URL, width, height) { width = width || 500; height = height || 350; var day=new Date(), id=day.getTime(); eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=" + width + ",height=" + height + ",left = 390,top = 312');"); }
function autoTab(input, len, e) { var isNN = (navigator.appName.indexOf("Netscape") != -1), keyCode = isNN?e.which:e.keyCode, filter=isNN?[0, 8, 9]:[0, 8, 9, 16, 17, 18, 37, 38, 39, 40, 46]; if (input.value.length >= len && !containsElement(filter, keyCode)) { input.value = input.value.slice(0, len); input.form[(getIndex(input) + 1) % input.form.length].focus(); } function containsElement(arr, ele) { var found=0, index=0; while (!found && index<arr.length) if (arr[index]==ele) found=1; else index++; return found; } function getIndex(input) { var index=-1, i=0, found=0; while (i<input.form.length && index==-1) if (input.form[i]==input) index=i; else i++; return index; } return true; }
function atLeastOneChecked(arr, pfx) { if (!arr || !arr.length) return 0; pfx = pfx || ''; var byEl = typeof arr[0] != 'string'; for(var i=0, j=arr.length; i<j; i++) { var el = byEl?arr[i]:_gel(pfx+arr[i]); if (el.checked) return 1; } return 0; }
function toggleAllCheckboxes(frm, chkName, selAll) { var arrChk = frm[chkName]; if (!arrChk || !arrChk.length || arrChk[0].disabled) return; for (var i=0,j=arrChk.length; i<j; i++) arrChk[i].checked = selAll; }
function enableAllCheckboxes(frm, chkName, enableAll) { var arrChk = frm[chkName]; if (!arrChk || !arrChk.length) return; for (var i=0,j=arrChk.length; i<j; i++) arrChk[i].disabled = !enableAll; }
function checkAllIfNoneChecked(arr) { if (!arr || !arr.length) return; if (!atLeastOneChecked(arr)) for (var i=0; i<arr.length; i++) _chk(arr[i],1); }
function addLoadEvent(func) { var oldOnload = window.onload; if (typeof window.onload != 'function') window.onload = func; else window.onload = function() { if (oldOnload) oldOnload(); func(); } }
function addRemClass(el, addClass, remClass) { if (!el.className) el.className = ''; var clsnm = el.className; if (addClass && !clsnm.match(RegExp("\\b"+addClass+"\\b"))) clsnm = clsnm.replace(/(\S$)/,'$1 ')+addClass; if (remClass) clsnm = clsnm.replace(RegExp("(\\s*\\b"+remClass+"\\b(\\s*))*","g"),'$2'); el.className=clsnm; }
function addCssRule(name,rule) { if (!document.styleSheets) return false; if (document.styleSheets[0].addRule) document.styleSheets[0].addRule(name, rule, 0); else document.styleSheets[0].insertRule(name + " { " + rule + " }", 0); }
function hover(el,isOverLink) { if (isOverLink)	el.style.cursor = 'pointer';el.style.textDecoration = (isOverLink)?'underline':'none'; }
function hand(obj) { obj.style.cursor = 'hand'; obj.style.cursor = 'pointer'; }
function changeLastStepToCufon(num) { addLoadEvent(function(){ if (!_gel('lastStep')) return; _dsp('lastStep',0); _gel('lastStep').innerHTML = '<b>Step '+num+':</b> ' + LAST_STEP_TEXT; }); var fn = function(){Cufon.replace('h2');_dsp('lastStep',1);}; setTimeout(fn,600); setTimeout(fn,1000); }
function changeLastStepTo(num) { addLoadEvent(function(){ if (!_gel('lastStep')) return; _gel('lastStep').innerHTML = '<b>Step '+num+':</b> ' + LAST_STEP_TEXT; }); }
function onSiteSearch() { if (!_trim(_val('fldSearch'))) { alert('Please enter a search keyword.'); _foc('fldSearch'); return false; } return true; }

function _tab(fld,pfx,idx,e) { if(fld.value.length>2 && idx<3) { _gel(pfx+(idx+1)).focus();_fstClr=1;return; } var evt = e || window.event;_fstClr=!_fstClr&&fld.value.length==0;if(fld.value.length==0 && !_fstClr && evt.keyCode==8 && idx>1){_gel(pfx+(idx-1)).focus();_fstClr=0;}} var _fstClr = 0;
function _run(url) { var jsNode=document.createElement("script"); jsNode.type="text/javascript"; jsNode.src=url+'&rand='+Math.random(); document.getElementsByTagName("head")[0].appendChild(jsNode); }
function _gel(id) { return document.getElementById(id); }
function _val(id) { return _gel(id).value; }
function _dsp(id, bool) { if (_gel(id)==null) return; _gel(id).style.display = bool?'':'none'; }
function _enb(id, bool) { _gel(id).disabled = !bool; }
function _chk(id, bool) { _gel(id).checked = bool; }
function _foc(id) { try{ _gel(id).blur(); _gel(id).focus(); } catch(e){} }
function _loc(url) { if(!url) return; window.location=url; }
function _vsb(id) { return _gel(id).style.display != 'none'; }
function _isEnabled(id) { return !_gel(id).disabled; }
function _isChecked(id) { return _gel(id).checked; }
function _isVar(str) { return (eval('typeof '+str) != 'undefined'); }
function _trim(str) { return str.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"); }
function _chkAll(frmObj, bool) { var obj=frmObj; if (!obj || !obj.length) return; for (var i=0; i<obj.length; i++) obj[i].checked = bool; }
function _valRad(frmObj) { var obj=frmObj, l=obj.length; if (!obj) return ''; if (l==undefined) if (obj.checked) return obj.value; else return ''; for (var i=0; i<l; i++) if(obj[i].checked) return obj[i].value; return ''; }
function _populateMenu(id, data, def) { _gel(id).options.length = 0; for ( var i = 0; i < data.length; i++) _gel(id).options[i] = new Option(data[i].name, data[i].id); }