pi = parseInt;
var IE6 = function() {
  var msie = window.navigator.userAgent.indexOf('MSIE');
  if ( msie == -1) return false;
  if (window.navigator.userAgent.charAt(msie+5) == '6') return true;
  return false;
};
var IE7 = function() {
  var msie = window.navigator.userAgent.indexOf('MSIE');
  if ( msie == -1) return false;
  if (window.navigator.userAgent.charAt(msie+5) == '7') return true;
  return false;
};
var IE8 = function() {
  var msie = window.navigator.userAgent.indexOf('MSIE');
  if ( msie == -1) return false;
  if (window.navigator.userAgent.charAt(msie+5) == '8') return true;
  return false;
};
var OPERA = function() {
  var opera = window.navigator.userAgent.indexOf('Opera');
  if ( opera == -1) return false;
  return true;
};
var CHROME = function() {
  var chrome = window.navigator.userAgent.indexOf('Chrome');
  if ( chrome == -1) return false;
  return true;
};
var SAFARI = function() {
  if (typeof(window.isSafari) == 'undefined') {
    var safari = window.navigator.userAgent.indexOf('Safari');
    if ( safari == -1) window.isSafari = false;
    else window.isSafari = true;
  }
  return window.isSafari;
};
var IPHONE = function() {
  if (typeof(window.isIPhone) == 'undefined') {
    if ((window.navigator.userAgent.match(/iPhone/i)) || (window.navigator.userAgent.match(/iP[ao]d/i))) {
      window.isIPhone = true;
    }
    else window.isIPhone = false;
  }
  return window.isIPhone;
};
var clearSearchText = function() {
  if (document.getElementById('bbpsearch').value == 'Search Best Bridal Prices') {
    document.getElementById('bbpsearch').value = '';
    return true;
  }
};
var replaceSearchText = function(value) {
  if (value || !document.getElementById('bbpsearch').value) {
    document.getElementById('bbpsearch').value = value ? value : 'Search Best Bridal Prices';
    return true;
  }
  return false;
};
var writeKeywordResults = function(keywords) {
  hideKeywordResults();
  var resContainer = document.getElementById('keyword_results');
  resContainer.style.display="block";
  var dropdown = resContainer.firstChild;
  window.keywords = new Array();
  for (var i=0, j=keywords.length; i<j; i++) {
    var newLi = document.createElement('li');
    var newA = document.createElement('a');
    newLi.appendChild(newA);
    newA.innerHTML = keywords[i];
    window.keywords.push(keywords[i]);
    newA.onclick = mkKwClick(keywords[i]);
    resContainer.firstChild.appendChild(newLi);
  }
};
var hideKeywordResults = function() {
  var resContainer = document.getElementById('keyword_results');
  var dropdown = resContainer.firstChild;
  while(dropdown.childNodes.length) dropdown.removeChild(dropdown.firstChild);
  resContainer.style.display="none";
  window.selectedKeyword = -1;
};
var mkKwClick = function(kw) {
  return function() { document.getElementById('bbpsearch').value = kw; hideKeywordResults();return false; };
};
var keywordUp = function() {
  if(++window.selectedKeyword >= window.keywords.length) window.selectedKeyword = 0;
  highlightKeyword();
  return true;
};
var keywordDown = function() {
  if(--window.selectedKeyword < 0 ) window.selectedKeyword = window.keywords.length-1;
  highlightKeyword();
  return true;
};
var highlightKeyword = function() {
  var kr = document.getElementById('keyword_results');
  if (!kr) return;
  kr = kr.getElementsByTagName('li');
  if (kr.length < window.keywords.length || window.selectedKeyword < 0 || window.selectedKeyword >= kr.length) return;
  for (var i=0, j=kr.length; i<j; i++) {
    if (i == window.selectedKeyword) addClass(kr[i], 'highlighted');
    else addClass(kr[i], '-highlighted' );
  }
};
var selectKeyword = function() {
  if (window.selectedKeyword < 0 || window.selectedKeyword >= window.keywords.length) return true;
  return !mkKwClick(window.keywords[window.selectedKeyword])();
} 
var searchKeywordsSelect = function(e) {
  if (!e) e = window.event;
  if (e && window.keywords) {
    var kc = e.keyCode || e.which;
    if (kc == 13) return selectKeyword();
  }
}
var searchKeywords = function(e) {
  if (!e) e = window.event;
  if (e && window.keywords) {
    var kc = e.keyCode || e.which;
    if (kc == 13) return false;
    if (kc == 40) return keywordUp();
    if (kc == 38) return keywordDown();
  }
  if (!window.lastkws) return;
  var sb = document.getElementById('bbpsearch');
  if (sb.value == '') return hideKeywordResults();
  for (var i=0, j=window.lastkws.length; i<j; i++) {
    if (window.lastkws[i].kws == sb.value) return writeKeywordResults(window.lastkws[i].res);
  }
  window.lastkws.push( { 'kws' : sb.value, 'res' : new Array() });
  window.kwcomms.sendCommand('new_keywords', window.ga_ua_key, {'keywords' : sb.value}, showSearchKeywordResults);
};
var showSearchKeywordResults = function(comm) {
  var keywords = comm.r.keyword;
  var res = comm.r.keywords;
  for (var i=0, j=window.lastkws.length; i<j; i++) {
    if (window.lastkws[i].kws == keywords) return writeKeywordResults(window.lastkws[i].res = res);
  }
};
window.preloadImages = Array();
function preloadImage(src) {
  if (!src) return;
  var i = new Image();
  i.src = src;
  window.preloadImages.push(i);
}
function trim(str) { return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); }
function innerText(obj) {
  if (!obj) return '';
  if (obj.innerText) return obj.innerText;
  if (obj.textContent) return obj.textContent;
  //I don't know what browser this is
  return '';
}
var zoomLevel = function() {
  if (typeof(window.zd) == 'undefined') {
    window.zd = document.getElementById('zd');
  }
  if (!window.zd) return 1;
  var unity = 159; //Haha
  return float(unity)/float(window.zd.offsetLeft);

}
var windowSize = function(w) {
  if (!w) w = window;
  var winW = 800;
  var winH = 600;
  if (pi(navigator.appVersion)>3) {
    if (navigator.appName=="Netscape") {
    winW = w.innerWidth;
    winH = w.innerHeight;
    }
    var de;
    if (de = window.document.documentElement) {
    winW = de.clientWidth;
    winH = de.clientHeight;
    }
  }
  return { 
    'height': winH,
    'y' : winH,
    'width' : winW,
    'x' : winW
  };
};

function windowScroll() {
  if (typeof(window.pageYOffset) == 'number') return {
    'x' : window.pageXOffset,
    'y' : window.pageYOffset
  };
  if (document.body && (document.body.scrollTop || document.body.scrollLeft)) return {
    'x' : document.body.scrollLeft,
    'y' : document.body.scrollTop
  };
  if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) return {
    'x' : document.documentElement.scrollLeft,
    'y' : document.documentElement.scrollTop
  };
  return { 'x':0, 'y':0 };
}

var getElementsByClassName = function (className, tag, elm){
if (document.getElementsByClassName) {
getElementsByClassName = function (className, tag, elm) {
elm = elm || document;
var elements = elm.getElementsByClassName(className),
nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
returnElements = [],
current;
for(var i=0, il=elements.length; i<il; i+=1){
current = elements[i];
if(!nodeName || nodeName.test(current.nodeName)) {
returnElements.push(current);
}
}
return returnElements;
};
}
else if (document.evaluate) {
getElementsByClassName = function (className, tag, elm) {
tag = tag || "*";
elm = elm || document;
var classes = className.split(" "),
classesToCheck = "",
xhtmlNamespace = "http://www.w3.org/1999/xhtml",
namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
returnElements = [],
elements,
node;
for(var j=0, jl=classes.length; j<jl; j+=1){
classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
}
try	{
elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
}
catch (e) {
elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
}
while ((node = elements.iterateNext())) {
returnElements.push(node);
}
return returnElements;
};
}
else {
getElementsByClassName = function (className, tag, elm) {
tag = tag || "*";
elm = elm || document;
var classes = className.split(" "),
classesToCheck = [],
elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
current,
returnElements = [],
match;
for(var k=0, kl=classes.length; k<kl; k+=1){
classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
}
for(var l=0, ll=elements.length; l<ll; l+=1){
current = elements[l];
match = false;
for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
match = classesToCheck[m].test(current.className);
if (!match) {
break;
}
}
if (match) {
returnElements.push(current);
}
}
return returnElements;
};
}
return getElementsByClassName(className, tag, elm);
}

function hideLabel() {
 if ( window.MagicZoom_zooms[0] && window.MagicZoom_zooms[0].bigImageCont && window.MagicZoom_zooms[0].bigImageCont.childNodes[2]) {
  for (var i=0; i < window.MagicZoom_zooms[0].bigImageCont.childNodes.length; i++) {
   if (window.MagicZoom_zooms[0].bigImageCont.childNodes[i].innerHTML.indexOf('Please upgrade') != -1) {
    window.MagicZoom_zooms[0].bigImageCont.childNodes[i].innerHTML = '';
   }
  }
  var popupURL = document.getElementById('popupImagesLocation').value;
  window.MagicZoom_zooms[0].pup.onclick = function(){
  	popupWindowBig(popupURL);
  };
 } else {
  setTimeout('hideLabel()', 50);
 }
}

var fixedMenuPosition = function() {
  return;
  var fixedMenuPos = document.getElementById("fixedMenu");
  if (!fixedMenuPos) return;
  var winVars = windowSize();
  var siteWidth = SAFARI() ? 1120 : 1004; // : 875;
  var offsetXVal = "";
  var scrollLeft = (typeof(window.pageXOffset) != 'undefined') ? window.pageXOffset : 0;
  scrollLeft = scrollLeft / 2;
  offsetXVal = ((winVars.width - siteWidth) / 2) + siteWidth - scrollLeft;
  if (IE7()) { offsetXVal += 1; }
  fixedMenuPos.style.left = offsetXVal+"px";
  return true;
};

var run = function() {
        window.kwcomms = new Communicator('/keyword_fetcher.php')
        window.ga_ua_key = document.getElementById('ga_ua_key').value;
        window.lastkws = new Array();
        if (window.MagicZoom_zooms) hideLabel();
	for (var i = 0; i < runQueue.length; i++) runQueue[i]();
        document.body.onclick = function() { 
          hideKeywordResults();
          return true;
        };
        document.getElementById('bbpsearch').onkeyup = searchKeywords;
        document.getElementById('bbpsearch').onkeydown = searchKeywordsSelect;
        gas();
        window.zd = document.createElement('div');
        window.zd.id='zd';
        document.body.appendChild(window.zd);
        return;
        if (!window.livechat_online) {
          if (document.getElementById('livechat_img')) document.getElementById('livechat_img').style.display="none";
          if (document.getElementById('livechat_link')) document.getElementById('livechat_link').style.display="none";
        }
        if (window.fbsrc) {
          var fb = document.createElement('iframe');
          fb.src=window.fbsrc;
          fb.style.height="1px";
          fb.style.width="1px";
          fb.style.overflow="hidden";
          fb.style.border="none";
          fb.style.margin="0";
          document.body.appendChild(fb);
        }
};
function gas() {
  var _gaq = [['_setAccount', 'UA-346556-39'],['_trackPageview']];
  var ga=document.createElement('script');ga.type='text/javascript';
  ga.async=true;ga.src=('https:'==document.location.protocol?'https://ssl':'http://www')+'.google-analytics.com/ga.js';
  document.body.appendChild(ga);
}
function swapZoomImage(small, large) {
        var im = window.MagicZoom_zooms[0].bigImage;
	var imt = window.MagicZoom_zooms[0].smallImage;
	im.src=large;
	imt.src=small;
	return false;
}
function swapFlatImage(thumb, new_img) {
	var main = document.getElementById('main');
        if (main) {
		main.src = thumb;
	}
	return false;
}

