var detected_font_size = null;

function positionBleeder(bleeder){
  var bleeder_info = parseBleederId(bleeder.id);
  var container_id = bleeder_info[1];
  var rel_position = bleeder_info[2];
  var v_position = bleeder_info[3];
  var h_position = bleeder_info[4];

  //get x and y for containing box
  var container = document.getElementById(container_id);
  if(!container){
    return false;
  }
    // getPixFromTop in column_links.js
  var v = getPixFromTop(container); //top
  var h = getPixFromLeft(container); //left

  if(rel_position.indexOf('bottom') != -1){
      //adjust for bottom alignment
      v += container.clientHeight - bleeder.clientHeight;
  }
  if(rel_position.indexOf('right') != -1){
    //adjust for right alignment
    h += container.clientWidth - bleeder.clientWidth;
  }

  //make adjustments from id
  if(v_position.substr(0,1) == 'u'){
    //move up
    v -= 1*v_position.substr(1);
  }
  else if(v_position.substr(0,1) == 'd'){
    //move down
    v += 1*v_position.substr(1);
  }

  if(h_position.substr(0,1) == 'l'){
    //move left
    h -= 1*h_position.substr(1);
  }
  else if(h_position.substr(0,1) == 'r'){
    //move right
    h += 1*h_position.substr(1);
  }
  
  bleeder.style.top = v + 'px';
  bleeder.style.left = h + 'px';

}

function setManualCheck(){
  try{
  /*** for Opera/IE 7 ***/
  var new_size =document.body.offsetHeight;
//  alert(new_size);

  if(detected_font_size != new_size){
    initBleeders();
    detected_font_size = new_size;
  }

  setTimeout(setManualCheck,1000);
  }
  catch(e){
//    alert(e);
  }

}

function parseBleederId(bleeder_id){
  var idExp = /^bleed-(\w+)-(topleft|topright|bottomleft|bottomright)-([ud]\d+)-([lr]\d+)(-\d+)?$/
  return idExp.exec(bleeder_id);

}

function initResizeDetector()  {

  try{
  var user_agent = window.navigator.userAgent;
  /******
   for browsers other than opera/IE7, we can add an event to check - no prob
   for IE7/opera, we need to check manually
  ***/

  if(user_agent.indexOf('Opera') != -1 ||
     user_agent.indexOf('MSIE 7') != -1){
    detected_font_size = document.body.offsetHeight;
    setManualCheck();

  }
  else{
    detected_font_size = TextResizeDetector.addEventListener(onFontResize,null);
  }
  }
  catch(e){
 //   alert(e);
  }
}

function onFontResize(e,args) {
  detected_font_size = args[0].iSize;
  initBleeders();
}

function getBleeders(bleeder_wrapper){
  var bleeders = bleeder_wrapper.getElementsByTagName('img');
  return bleeders;
}

function visifyBleeders(bleeder_wrapper){

  bleeder_wrapper.style.display = 'block';
  /********
   by giving a timeout with callback, the bleeder images get width;
   otherwise, on initial load and hard refresh, images are placed 
   strangely on the page, not fixed until cache-refresh or resize

  **********/

  setTimeout('positionBleeders()',50);

}

function bleederMouseOver(){
      //id has some weirdness with 'this'
      if(this.attributes){
	var attrs = this.attributes;
      }
      else if(event.srcElement.attributes){
	var attrs = event.srcElement.attributes;
      }
      else{
	return false;
      }

      //parse url from href
      var href = '';
      for(var i = 0; i < attrs.length; i++){
	var attr = attrs[i]
	if(attr.nodeName == 'onclick'){
	  href = attr.nodeValue.match(/href='(.+)'/)[1];
	  i = attrs.length;
	}
      }

      if(href == ''){
	return false;
      }

      //check to see if url has domain
      if(!href.match(/www\.fontshop\.com/)){
	href = 'www.fontshop.com' + href;
      }
      //check to see if url has http
      if(!href.match(/http:\/\//)){
	href = 'http://' + href;
      }

      window.status = href;
      
}

function bleederMouseOut(){
  window.status = '';
}

function setBleederEvents(bleeder){
  if(bleeder.onclick){
    if(bleeder.addEventListener){
      bleeder.addEventListener('mouseover', bleederMouseOver, false);
      bleeder.addEventListener('mouseout', bleederMouseOut, false);
    }
    else if(bleeder.attachEvent){
      bleeder.attachEvent('onmouseover', bleederMouseOver);
      bleeder.attachEvent('onmouseout', bleederMouseOut);
    }
    else{
      bleeder.onmouseover = bleederMouseOver;
      bleeder.onmouseout = bleederMouseOut;
    }
  }
}

function positionBleeders(){
  var bleeder_wrapper = document.getElementById('bleeders');
  var bleeders = getBleeders(bleeder_wrapper);

  for(var i = 0; i < bleeders.length; i++){
    var bleeder = bleeders[i];
    positionBleeder(bleeder);
    setBleederEvents(bleeder);
  }
}

function initBleeders(){
  try{
    var bleeder_wrapper = document.getElementById('bleeders');
    if(bleeder_wrapper){
      visifyBleeders(bleeder_wrapper);
    }
  }
  catch(e){
 //   alert(e);
  }

}

TextResizeDetector.TARGET_ELEMENT_ID = 'resize_detector';
TextResizeDetector.USER_INIT_FUNC = initResizeDetector;
