var timers={};
$.removeAlert=function(){
  jQuery('#alert').remove();
}
jQuery.makeExternalLinks=function(baseurl,external_class,not){
  var baseurl=(baseurl || '/'),external_class=(external_class || 'external'),not=(not || '[href^="'+baseurl+'"]');
  jQuery('a[href^="http://"],a[href^="https://"],a[rel="external"],a.'+external_class).not(not).each(function(){
    var e=jQuery(this),href=e.attr('href'),title=(e.attr('title').length>0)? e.attr('title') : e.text();
    title+=" (opens in new window)";
    e.removeAttr('onclick').unbind('click').bind('click',function(){
      var newWindow=window.open(href,'_blank');
      if(typeof(newWindow)=='object'){
        newWindow.focus();
        return false;
      }
      return true;
    }).attr('title',title);
    if(e.find('img').length==0){jQuery(this).addClass(external_class);}
  });
}
$.makeAlert=function(msg,delay,dismiss){
  if(!msg) return false;
  if(dismiss) msg+='<div class="dismiss"><a href="#">'+(dismiss.length>1? dismiss : 'Dismiss')+'</a></div>'
  if(jQuery('#alert').text()==jQuery('<div>').html(msg).text()) return true;
  var alert=jQuery('<div>').css('display','none').html(msg);
  jQuery('#alert .dismiss a').live('click',function(){jQuery.removeAlert();return false;})
  alert.attr({id:'alert',class:'no print'});
  jQuery.removeAlert();
  jQuery('body').append(alert);
  if(delay) alert.fadeIn(delay);
  else alert.show();
  return true;
}
$.addHighlight=function(element){
  $('.highlight').removeClass('highlight');
  element.addClass('highlight');
}
$.removeHighlight=function(element){
  if(typeof(timers.rH)!=undefined){clearTimeout(timers.rH);}
  timers.rH=setTimeout(function(){element.removeClass('highlight');},750);
}
$(document).ready(function(){
  if($("#ie6Warning").length>0)
    setTimeout('$("#ie6Warning").slideUp()',30000);
  if($(".delayFade").length>0)
    setTimeout('$(".delayFade").fadeOut(500)',5000);
  $.makeExternalLinks('http://rachellockwood.co.uk','external');
  $('.focusOnFirstInput input,select,textarea').eq(0).focus();
  $('.onChangeSubmit').each(function(){
    var form=$(this).closest('form');
    submit_button=$('input[type="submit"]:eq(0)',form);
    if(submit_button.length==0 || form.length==0) return;
    submit_button.hide().closest('tr').hide();
    $(this).change(function(){submit_button.click();});
  });
  if($.datepicker){
    $.datepicker.setDefaults({
      showOn: 'button',
      changeMonth: true,
      changeYear: true,
      showButtonPanel: false,
      buttonText: 'Select date...',
      buttonImageOnly: true,
      buttonImage: 'images/icons/datepicker.gif'
    });
    $(".datepicker").datepicker({dateFormat: 'yy-mm-dd'});
  }
  $('.toggleShowHide').each(function(i){
    var elementToToggle=$(this),toggleID="tsh"+i;
    elementToToggle.hide().wrap('<div id="'+toggleID+'"></div>');
    $('#'+toggleID).css({
      'margin': elementToToggle.css('margin'),
      'padding': '1px',
      'max-height': '20em',
      'overflow': 'auto'})
      .prepend('<a href="#'+toggleID+'" id="'+toggleID+'" name="'+toggleID+'" style="font-size:0.8em;font-style:oblique;opacity:0.8;"></a>');
    elementToToggle.css('margin','5px 0');
    var toggleLink=$('#'+toggleID+' a:eq(0)'),showText='Show',hideText='Hide',elementTitle=elementToToggle.attr('title');
    if(elementTitle.length>0){
      showText+=' '+elementTitle;
      hideText+=' '+elementTitle;
    }
    toggleLink.html(showText).toggle(function(){
      elementToToggle.fadeIn(200);
      $(this).html(hideText);
      },function(){
      elementToToggle.fadeOut(100);
      $(this).html(showText);
      }
    );
  });
  var getDifference=function(a,b){
    return (a>b)? a-b : b-a;
  },
  getScrollOffset=function(){
    if(window.scrollY){return window.scrollY;}
    if(document.body.parentNode.scrollTop){return document.body.parentNode.scrollTop;}
    if(document.body.scrollTop){return document.body.scrollTop;}
    return 0;
  };
  $('.fieldname[title]').each(function(){
    var field_identifier=$(this).attr('title'),
      target_element=$("label[for='"+field_identifier+"']");
    $(this).removeAttr('title');
    if(target_element.length!=1){return;}
    $(this).css('cursor','pointer').click(function(){
      var scrolltarget=target_element.offset().top,targetheight=target_element.height(),
        diff=getDifference(scrolltarget,getScrollOffset()),windowheight=$(window).height(),
        aimFor=windowheight-targetheight-30;
      if(windowheight!==0 && diff<aimFor){
        $.addHighlight(target_element);
        $.removeHighlight(target_element);
        return false;
      }
      $.addHighlight(target_element);
      scrolltarget-=aimFor;
      $('html').animate({'scrollTop': scrolltarget},400,function(){
        $.removeHighlight(target_element);
      });
      return false;
    });
  });
  $.ajaxSetup({url:'ajax.php',type:'GET'});
  $("body").bind('ajaxSend',function(){
      $.makeAlert("Loading, please wait...",500);
  }).bind('ajaxError',function(event,xhr,settings){
      if(xhr.status!=200 && escape(xhr.status).length>0){
        errormsg="Error ("+xhr.status+((xhr.statusText.length>0)? " "+xhr.statusText+")" : ")");
      }
      else{
        errormsg="Error (unknown)";
      }
      if(settings.url){
        var cleanurl=(strpos(settings.url,'?'))? settings.url.substr(0,strpos(settings.url,'?')) : settings.url;
        errormsg+='<div style="font-size:0.9em;font-style:oblique;">URL: '+cleanurl+'</div>';
      }
      $.makeAlert(errormsg,0,1);
  }).bind('ajaxSuccess',function(){
      $.removeAlert();
  });
});
function strpos (haystack, needle, offset) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Onno Marsman    
    // +   bugfixed by: Daniel Esteban
    var i = (haystack+'').indexOf(needle, (offset ? offset : 0));
    return i === -1 ? false : i;
}

