$(document).ready(function() {
	 $('a[rel="external"]').click( function() {
        window.open( $(this).attr('href') );
        return false;
    });
	$('#cLogin,#Login').corner();
	$('#cLogin').attr('href','javascript:void(0);');
	$('#rLoginClick').attr('href','javascript:void(0);');
	$('#PostClick').html('<a href="javascript:void(0);" onclick="PostAndReg();"><img src="/gfx/btns/postjob.gif" width="155" height="40" id="btnPostJob" alt="Post a Job" /></a>');
	$('#PostClickT').html('<a href="javascript:void(0);" onclick="Register_1();"><img src="/gfx/btns/continue.gif" width="157" height="42" id="btnCont" alt="Continue" /></a>');
	$('#PostClickT2').html('<a href="javascript:void(0);" onclick="Register_2();"><img src="/gfx/btns/register.gif" width="157" height="42" id="btnTrade" alt="Register" /></a>');
	$('#searchBtn').html('<a href="javascript:void(0);" onclick="doSearch();"><img src="/gfx/btns/search.gif" width="127" height="34" id="btnSearch" alt="Search" /></a>');
	$('#btnLogin').hover( function(){ $(this).attr('src','/gfx/btns/loginover.gif'); }, function() { $(this).attr('src','/gfx/btns/login.gif'); } );
	$('#BtnRegLogin').hover( function(){ $(this).attr('src','/gfx/btns/clientloginover.gif'); }, function() { $(this).attr('src','/gfx/btns/clientlogin.gif'); } );
	$('#BtnRegLogin2').hover( function(){ $(this).attr('src','/gfx/btns/clientloginover.gif'); }, function() { $(this).attr('src','/gfx/btns/clientlogin.gif'); } );
	$('#btnPostJob').hover( function(){ $(this).attr('src','/gfx/btns/postjobover.gif'); }, function() { $(this).attr('src','/gfx/btns/postjob.gif'); } );
	$('#btnCont').hover( function(){ $(this).attr('src','/gfx/btns/continueover.gif'); }, function() { $(this).attr('src','/gfx/btns/continue.gif'); } );
	$('#btnTrade').hover( function(){ $(this).attr('src','/gfx/btns/registerover.gif'); }, function() { $(this).attr('src','/gfx/btns/register.gif'); } );
	$('#btnSearch').hover( function(){ $(this).attr('src','/gfx/btns/searchover.gif'); }, function() { $(this).attr('src','/gfx/btns/search.gif'); } );
	$('div.vjBtn img').hover( function(){ $(this).attr('src','/gfx/btns/viewjobover.gif'); }, function() { $(this).attr('src','/gfx/btns/viewjob.gif'); } );
	$('#Navigation li').hover( function(){ $(this).find('div.SubMenu').slideDown('fast'); }, function() { $(this).find('div.SubMenu').slideUp('fast'); } );
	$(".Overlay").fancybox();
});
var xopen = false;
function openLogin() {
	$('#Login').slideToggle('fast');
	if (xopen==false) {
		$('#cLogin').css('background','#d8dadb');
		xopen = true;
	} else {
		$('#cLogin').css('background','#fff');
		xopen = false;
	}
}
var ropen = false;
function OpenRegLogin() {
	$('#RegLoginForm').slideToggle('fast');
	if (ropen==false) {
		$('#BtnRegLogin').hide();
		$('.BoxClose').show();
		ropen = true;
	} else {
		$('#BtnRegLogin').show();
		$('.BoxClose').hide();
		ropen = false;
	}
}
function doLogin() {
	$('.Error').hide();
	var error = '';
	if ($('#Pwd').val()=="") { error+= 'Invalid password.<br />'; $('#PwdError').show(); }
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	if (!CheckEmail('#Email')) { error+= 'Invalid email.'; $('#EmailError').show(); }
	if (error=="") { $('#LoginForm').submit(); return; }
	$('#ErrorMsg').html(error).show();
}
function doLoginR() {
	$('.FormElement img').hide();
	$('.FormElement').css('background-color','#dffde0').next().css('color','#38940B');
	$('.FormError').hide();
	var error=false;
	if (!checkrPwd()) { error=true; }
	if (!CheckEmail('#rEmail')) { $('#rEmailError').html('Invalid email address'); doError('#rEmailError'); error=true; }
	if (error) { bindLogin(); return; } else { $('#RegLoginForm').submit(); }
}
function doLoginQ() {
	$('.FormError').hide();
	var error=false;
	if (!checkrPwd()) { $('#qMsg').html('Please enter your password'); error=true; }
	if (!CheckEmail('#qEmail')) { $('#qMsg').html('Invalid email address'); error=true; }
	if (error) { $('#qError').css('padding-left','25px').slideDown('fast'); return false; }
	$.post('/ajax/login.php',{Email: $('#qEmail').val(), Pwd: $('#qPassword').val(), action:'qLogin'}, function(data) {
		if (data=="") { $('#qMsg').html('Invalid login details.'); $('#qError').css('padding-left','25px').slideDown('fast'); } 
		if (data=="102") { $('#qMsg').html('Please register as a tradesman.'); $('#qError').css('margin-left','-35px').slideDown('fast'); } 
		if (data==1){ $('#qLogin').slideUp('fast'); $('#qSignup').slideUp('fast'); $('#QuoteThisJob').slideDown('fast'); }
	});
}
function bindLogin() {
	$('#rPwd').keyup(function() { checkrPwd(); });
	$('#rPwd').blur(function() { checkrPwd(); });
	$('#rEmail').keyup(function() { checkrEmail(); });
	$('#rEmail').blur(function() { checkrEmail(); });
}
function checkrPwd() {
	if ($('#rPwd').val()=="") { $('#rPwdError').html('Please enter your password'); doError('#rPwdError'); return false; }
	unDoError('#rPwdError'); return true;
}
function checkrEmail() {
	if (!CheckEmail('#rEmail')) { $('#rEmailError').html('Invalid email address'); doError('#rEmailError'); return false; }
	unDoError('#rEmailError'); return true;
}

function doError(id) {
	$(id).slideDown().prev().fadeIn().prev().prev().css('color','#ff4300').parent().css('background-color','#fddcbe');
}
function unDoError(id) {
	var color='#38940B';
	var bc = '#dffde0';
	if ($('#t').val()==2) { color='#423c39'; bc = '#edecec'; }
	$(id).html(' ').slideUp().prev().fadeOut().prev().prev().css('color',color).parent().css('background-color',bc);
}
function Register_1() {
	var error=false;
	$('.FormError').hide();
	$('.FormElement img').hide();
	$('.FormElement').css('background-color','#edecec').next().css('color','#423c39');
	checkPostcode();
	if ($('#NewUser').length>0) {
		checkUsername();
		checkRegEmail();
		if (!checkPassword()) { error=true; }
		if (!checkPassword2()) { error=true; }
	}
	if (!checkTown()) { error=true; }
	if (!checkFirstName()) { error=true; }
	if (!checkSurname()) { error=true; }
	if (!checkTel()) { error=true; }
	if (!checkDistance()) { error=true; }
	if (!checkAccept()) { error=true; }
	if (error) { bindValidation(); return; } else { $('#RegForm1').submit(); }
}
function Register_2() {
	var error=false;
	var msg = '';
	if ($(":checkbox:checked").length==0) { msg+= 'Please select at least one trade catery from the list.'; error=true; }
	if (error) { alert(msg); return; } else { $('#TradeForm').submit(); }

}
function PostAndReg() {
	var error=false;
	$('.FormError').hide();
	$('.FormElement img').hide();
	$('.FormElement').css('background-color','#dffde0').next().css('color','#38940B');
	if (!checkCat()) { error=true; }
	if (!checkTitle()) { error=true; }
	if (!checkDetails()) { error=true; }
	if ($('#NewUser').length>0) {
		checkPostcode();
		if (!checkTown()) { error=true; }
		checkUsername();
		if (!checkPassword()) { error=true; }
		if (!checkPassword2()) { error=true; }
	}
	if (!checkAccept()) { error=true; }
	if (error) { bindValidation(); return; } else { $('#JobForm').submit(); }
}
function EditJob() {
	var error=false;
	$('.FormError').hide();
	$('.FormElement img').hide();
	$('.FormElement').css('background-color','#dffde0').next().css('color','#38940B');
	if (!checkCat()) { error=true; }
	if (!checkTitle()) { error=true; }
	if (!checkDetails()) { error=true; }
	checkPostcode();
	if (!checkTown()) { error=true; }
	if (error) { return; } else { $('#JobForm').submit(); }
}
function EditLogin() {
	var error=false;
	$('.FormError').hide();
	$('.FormElement img').hide();
	$('.FormElement').css('background-color','#dffde0').next().css('color','#38940B');
	if (!CheckEmail('#pEmail')) { $('#pEmailError').html('Invalid email address'); doError('#pEmailError'); error=true; }
	if (!checkPassword()) { error=true; }
	if(!error) { $('#JobForm').submit(); }
}
function EditProfile() {
	var error=false;
	$('.FormError').hide();
	$('.FormElement img').hide();
	$('.FormElement').css('background-color','#edecec').next().css('color','#423c39');
	checkPostcode();
	checkRegEmail();
	if (!checkTown()) { error=true; }
	if (!checkPassword()) { error=true; }
	if (!checkPassword2()) { error=true; }
	if (!checkFirstName()) { error=true; }
	if (!checkSurname()) { error=true; }
	if (!checkTel()) { error=true; }
	if (!checkDistance()) { error=true; }
	if (error) { bindValidation(); return; } else { $('#RegForm1').submit(); }
}
function preBindValidation() {
	$('#Category').blur(function() { checkCat(); });
	$('#Title').focus(function() { checkCat(); });
	$('#Title').blur(function() { checkTitle(); });
	$('#Details').blur(function() { checkDetails(); });
	$('#Postcode').blur(function() { checkPostcode(); doGeo(); });
	$('#Town').blur(function() { checkTown(); });
	$('#Username').blur(function() { checkUsername(); });
	$('#Password').blur(function() { checkPassword(); });
	$('#Password2').blur(function() { checkPassword2(); });
	$('#pEmail').blur(function() { checkRegEmail(); });
	$('#FirstName').blur(function() { checkFirstName(); });
	$('#Surname').blur(function() { checkSurname(); });
	$('#Tel').blur(function() { checkTel(); });
	$('#Distance').blur(function() { checkDistance(); });
}
function preBindValidation2() {
	$('#AboutMe').blur(function() { check4Domain('AboutMe'); });
	$('#Qualifications').blur(function() { check4Domain('Qualifications'); });
	$('#MyHistory').blur(function() { check4Domain('MyHistory'); });
}
function bindValidation() {
	$('#Category').change(function() { checkCat(); });
	$('#Title').keyup(function() { checkTitle(); });
	$('#Details').keyup(function() { checkDetails(); });
	$('#Postcode').keyup(function() { checkPostcode(); });
	$('#Town').keyup(function() { checkTown(); });
	$('#Username').keyup(function() { checkUsername(); });
	$('#Password').keyup(function() { checkPassword(); });
	$('#Password2').keyup(function() { checkPassword2(); });
	$('#pEmail').keyup(function() { checkRegEmail(); });
	$('#Accept').click(function() { checkAccept(); });
	$('#FirstName').keyup(function() { checkFirstName(); });
	$('#Surname').keyup(function() { checkSurname(); });
	$('#Tel').keyup(function() { checkTel(); });
	$('#Distance').change(function() { checkDistance(); });
}
function checkFirstName() {
	if ($('#FirstName').val()=="") { $('#FirstNameError').html('Please enter your first name'); doError('#FirstNameError'); return false } else {
		unDoError('#FirstNameError'); return true;
	}
}
function checkSurname() {
	if ($('#Surname').val()=="") { $('#SurnameError').html('Please enter your surname'); doError('#SurnameError'); return false } else {
		unDoError('#SurnameError'); return true;
	}
}
function checkTel() {
	if ($('#Tel').val()=="") { $('#TelError').html('Please enter your telephone number'); doError('#TelError'); return false } else {
		unDoError('#TelError'); return true;
	}
}
function checkDistance() {
	if ($('#Distance').val()=="0") { $('#DistanceError').html('Please select how far you are willing to travel').slideDown().parent().css('background-color','#fddcbe'); $('#DistanceLabel').css('color','#ff4300'); $('#DistanceIcon').fadeIn(); return false; } else {
		$('#DistanceError').html(' ').slideUp().parent().css('background-color','#edecec'); $('#DistanceLabel').css('color','#423c39'); $('#DistanceIcon').fadeOut(); return true;
	}
}
function checkCat() {
	if ($('#Category').val()=="0") { $('#CatError').html('Please select a category').slideDown().parent().css('background-color','#fddcbe'); $('#CatLabel').css('color','#ff4300'); $('#CatIcon').fadeIn(); return false; } else {
		$('#CatError').html(' ').slideUp().parent().css('background-color','#dffde0'); $('#CatLabel').css('color','#38940B'); $('#CatIcon').fadeOut(); return true;
	}
}
function checkTitle() {
	if (($('#Title').val().length<5)||($('#Title').val().length>50)) { $('#TitleError').html('Please enter a short description, between 4 & 50 characters'); doError('#TitleError'); return false } else {
		unDoError('#TitleError'); return true;
	}
}
function checkDetails() {
	if ($('#Details').val().length<20) { $('#DetailsError').html('Please describe the job giving as much information as possible <br /> and using a minimum of 20 characters').slideDown().prev().prev().fadeIn().prev().prev().css('color','#ff4300').parent().css('background-color','#fddcbe'); return false; } else {
		$('#DetailsError').slideUp(' ').hide().prev().prev().fadeOut().prev().prev().css('color','#38940B').parent().css('background-color','#dffde0');; return true;
	}
}
function checkPostcode() {
	if ($('#Postcode').val()=="") { $('#PostcodeError').html('Please enter your postcode so we can find tradesmen in your area'); doError('#PostcodeError'); error=false } else {
		$.post('/ajax/postajob.php',{Postcode: $('#Postcode').val(), action:'checkpostcode'}, function(data) {
			if (data==1) { $('#PostcodeError').html('Please enter a valid UK postcode'); doError('#PostcodeError'); error=false; } else { unDoError('#PostcodeError'); error=true; }
		});
	}
}
function checkTown() {
	if ($('#Town').val()=="") { $('#TownError').html('Please enter your town or city'); doError('#TownError'); return false } else {
		unDoError('#TownError'); return true;
	}
}
function checkUsername() {
	var username = $('#Username').val();
	if ((username.length<3)||(username>20)) { $('#UsernameError').html('Please choose a public username between 3 &amp; 20 characters, this is the name you will be referred to publicly throughout this website'); doError('#UsernameError'); error=false; } else {
		$.post('/ajax/postajob.php',{Username: username,action:'checkusername'},function(data) {
			switch(data) {
				case "2": $('#UsernameError').html('This username has been taken, please choose another'); doError('#UsernameError'); error=false; break;
				case "4": $('#UsernameError').html('Username must only contain Numbers, Letters, a Dash or an Underscore'); doError('#UsernameError'); error=false; break;
				case "5": $('#UsernameError').html('You can not use a web address as your username'); doError('#UsernameError'); error=false; break;
				case "6": $('#UsernameError').html('This is not a valid username'); doError('#UsernameError'); error=false; break;
				default: unDoError('#UsernameError'); error=true; break;
			}
		});
	}
}
function checkPassword() {
	var pwd = $('#Password').val();
	if ((pwd.length<3)||(pwd>20)) { $('#PasswordError').html('Please choose a password between 3 &amp; 20 characters'); doError('#PasswordError'); return false } else {
		unDoError('#PasswordError'); return true;
	}
}
function checkPassword2() {
	if ($('#Password').val()!=$('#Password2').val()) { $('#Password2Error').html('Your password does not match'); doError('#Password2Error'); return false } else {
		unDoError('#Password2Error'); return true;
	}
}
function checkRegEmail() {
	var pemail = $('#pEmail').val();
	if (pemail=="") { $('#pEmailError').html('Please enter your email address'); doError('#pEmailError'); return true; }
	if (!CheckEmail('#pEmail')) { $('#pEmailError').html('Invalid email address'); doError('#pEmailError'); return true; }
	$.post('/ajax/postajob.php',{Email: pemail,action:'checkemail'},function(data) {
		switch(data) { 
			case "1": $('#pEmailError').html('Invalid email address'); doError('#pEmailError'); return true; break;
			case "2": $('#pEmailError').html('This email address is already registered, please login'); doError('#pEmailError'); return true; break;
			case "0": unDoError('#pEmailError'); return false; break;
		}
	});
}
function checkAccept() {
	if (!$('#Accept').attr('checked')) { $('#AcceptError').html('You must accept the terms & conditions').slideDown().prev().fadeIn().prev().css('color','#ff4300').parent().css('background-color','#fddcbe'); return false; } else {
		$('#AcceptError').html(' ').slideUp().prev().fadeOut().prev().css('color','#38940B').parent().css('background-color','#dffde0'); return true;
	}
}
function check4Domain(id) {
	$.post('/ajax/postajob.php',{elem: $('#'+id).val(),action:'check4domain'},function(data) {
		if (data=="1") { $('#'+id+'Error').html('Domain names are not allowed here!'); doError('#'+id+'Error'); return false; } else { unDoError('#'+id+'Error'); return true; }
	});
}
function CheckEmail(id) {
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	if (!emailPattern.test($(id).val())) { return false; }
	return true;
}
function doSearch() {
	var postcode = $('#Postcode').val();
	$('#PostcodeError').hide();
	if (!postcode=="") {
		doGeo();
		setTimeout('$("#SearchForm").submit();',500);
	} else {
		$('#SearchForm').submit();
	}
}
function doGeo() {
	if ($('#Postcode').val()=="") { $('#PostcodeOverlay').show(); return; }
	geoPostcode($('#Postcode').val(),
    function (point) {
	  $('#xLat').val(point.lat());
	  $('#xLon').val(point.lng());
      })
}
function geoPostcode(postcode, callbackFunction) {
  localSearch.setSearchCompleteCallback(null, 
    function() {
      if (localSearch.results[0]) {    
        //console.log(localSearch.results);
		var resultLat = localSearch.results[0].lat;
        var resultLng = localSearch.results[0].lng;
        var point = new google.maps.LatLng(resultLat,resultLng);
		
		var geocoder;
		geocoder = new google.maps.Geocoder();
		geocoder.geocode({'latLng': point,region:'GB'}, function(results, status) {
		//console.log(results);
		var address = results[0].formatted_address;
		var A = address.split(', ');
		var city = A[0];
		var county = A[1];
		console.log(city+'#'+county);
		$('#Town').val(city);
		});
        callbackFunction(point);
      }
    });
  localSearch.execute(postcode + ", UK");
}
function getReviews(id,type) {
	$('.mFeedback a').removeClass('OnPage');
	$('#R'+type).addClass('OnPage');
	$('#MyProfile').slideUp('fast');$('#MyFeedback').slideDown('fast');
	$.post('/ajax/reviews.php',{UserID: id, action: 'getreview', Type: type }, function(data) {
		$('#Feedback').html(data);
	});
}
function AddReview(id) {
	var d = $('#Details').val();
	unDoError('#DetailsError');
	if (d=="") { $('#DetailsError').html('Please add your review in the box above'); doError('#DetailsError'); return }
	$.post('/ajax/reviews.php',$('#RatingForm').serialize()+'&JobID='+id+'&action=addreview', function(data) {
		switch(data) {
			case "2": $('#DetailsError').html('Please check your spelling'); doError('#DetailsError'); break;
			case "3": $('#DetailsError').html('Swear words are not allowed!'); doError('#DetailsError'); break;
			default: $('#SysMessage').html(data); $('#AddReview').slideUp('fast'); break;
		}
	});
}
function Respond(id) {
	var d = $('#ReviewRsponse'+id).val();
	unDoError('#Response'+id+'Error');
	if (d=="") { $('#Response'+id+'Error').html('Please add your response in the box above'); doError('#Response'+id+'Error'); return }
	$.post('/ajax/reviews.php','Response='+d+'&ReviewID='+id+'&action=respond', function(data) {
		switch(data) {
			case "2": $('#Response'+id+'Error').html('Please check your spelling'); doError('#Response'+id+'Error'); break;
			case "3": $('#Response'+id+'Error').html('Swear words are not allowed!'); doError('#Response'+id+'Error'); break;
			default: $('#Response'+id).html(data); $('#Resp1').hide(); break;
		}
	});
}
function OpenResponse(id) {
	$('#Response'+id).slideDown('fast');
	$('#Resp'+id+' img').slideDown('fast');
	$('.Response').hide();
	//$('.RespBtn').hide();
	
}
function SendQuote(id) {
	$('.FormError').hide();
	unDoError('#DetailsError'); $('#Details').prev().css('color','#595954');
	unDoError('#PriceError');
	$('.FormElement').css('background','#fff');
	if ($('#Quote').val()=="x") { alert('Please select if you want to give a price now!'); return; }
	if ($('#Details').val()=="") { $('#DetailsError').html('Please write your comments in the box above.'); doError('#DetailsError'); return; }
	$('#btnSQ').html('<img src="/gfx/ajax.gif" /> ... SENDING YOUR QUOTE').css('color','#2279e8');
	$.post('/ajax/quote.php',$('#QuoteForm').serialize()+'&JobID='+id, function(data) {
		switch(data) {
			case "1": $('#QuoteThisJob').slideUp('fast').html('<div style="padding:0 40px 30px 40px; color:#2279e8; font-weight:bold;">Thank you, your email has been sent.</div>').slideDown('fast'); break;
			case "2": $('#DetailsError').html('Please correct spelling mistakes.'); doError('#DetailsError'); break;
			case "3": $('#PriceError').html('Numbers only please.'); doError('#PriceError'); break;
			case "4": $('#DetailsError').html('Phone numbers or Prices are not allowed in your emails!. If you want to quote then please use the box above.'); doError('#DetailsError'); break;
			default: $('#DetailsError').html('There was an error please try again.'); doError('#DetailsError'); break;
		}
		$('#btnSQ').html('<a href="javascript:void(0);" onclick="SendQuote('+id+');"><img src="/gfx/btns/sendquote.gif" id="btnSendQuote" width="199" height="50" alt="Send Quote" /></a>');
	});
}
function getMail(type,owner) {
	$('#MessagePane').html('<img src="/gfx/ajax.gif" />');
	$('#Mail img').removeClass('MailOn');
	$('#inbox').attr('src','/gfx/btns/inbox'+owner+'.gif');
	$('#sent').attr('src','/gfx/btns/sent'+owner+'.gif');
	$('#deleted').attr('src','/gfx/btns/deleted'+owner+'.gif');
	$('#'+type).addClass('MailOn').attr('src','/gfx/btns/'+type+owner+'over.gif');
	$.post('/ajax/quote.php','action='+type, function(data) {
		$('#MessagePane').html(data);
	});
}
function ViewEmail(id) {
	$('.Open').each(function(i,e) { var id=$(e).attr('id');id=id.replace('e','');CloseEmail(id) });
	$('#e'+id+' a[class="view"]').removeAttr('href');
	$('#e'+id).addClass('Open').removeClass('EmailNotRead').hover(function() { $(this).css('background','#e4e2e1'); }, function() { $(this).css('background','#e4e2e1'); });
	$('#e'+id+' td').each(function() { $(this).css({'border-bottom':'none','font-weight':'bold'}); });
	$('#r'+id).html('<td colspan="5"><img src="/gfx/ajax.gif" /></td>').show().css('background','#e4e2e1');
	$.post('/ajax/quote.php','action=view&id='+id, function(data) {
		$('#r'+id).html(data);
		$('#e'+id+' a[class="view"]').attr('href','javascript:ViewEmail('+id+')');
	});
	var x=$('#NewMail').css('display');
	if(x=="block") {
		var d=$('tr').filter('.EmailNotRead').size();
		if (d=="0") { $('#NewMail').slideUp('fast'); }
	}
}
function ReplyToEmail(id) {
	$('#r'+id).html('<td colspan="5"><img src="/gfx/ajax.gif" /></td>').show().css('background','#e4e2e1');
	$('#e'+id).removeClass('EmailNotRead');
	$.post('/ajax/quote.php','action=view&id='+id, function(data) {
		$('#r'+id).html(data);
		$('#xReply').slideDown('fast');
	});
}
function EmailReply(id) {
	$('#MailSend').html('<img src="/gfx/ajax.gif" /> .. Sending reply');
	$.post('/ajax/quote.php',$('#eDetails').serialize()+'&'+$('#Price').serialize()+'&action=reply&id='+id, function(data) {
		$('#MailSend').html('<a href="javascript:EmailReply('+id+')"><img id="btnsendemail" src="/gfx/btns/sendemail.gif" /></a>');
		switch(data) {
			case "2": alert('Please check your spelling!'); break;
			case "3": alert('You can only enter Numbers in the quote box'); break;
			case "4": alert('Phone numbers or Prices are not allowed in your emails!'); break;
			case "5": alert('Please type your reply in the box above.'); break;
			default: $('#xReply').slideUp('fast');$('#MessageSent').html(data).slideDown('fast'); break;
		}
	});
}
function CloseEmail(id) {
	$('#e'+id).removeClass('Open').css('background','#fff').hover(function() { $(this).css('background','#d7e6fb'); }, function() { $(this).css('background','#fff'); });
	$('#e'+id+' td').each(function() { $(this).css({'border-bottom':'1px solid #000','font-weight':'normal'}); });
	$('#r'+id).hide();
}
function DeleteEmail(id) {
	if (confirm('Are you sure you wish to delete this email ?')) {
		$('#r'+id).hide();
		$('#e'+id).slideUp('fast');
		$.post('/ajax/quote.php','action=delete&id='+id);
	}
}
function FlagEmail(x,id) {
	$('#f'+id).removeAttr('href');
	var y=1; if(x==1) { y=0; }
	$.post('/ajax/quote.php','action=flagemail&id='+id+'&Flag='+x, function(data) {
		$('#f'+id+' img').attr('src','/gfx/icons/'+data+'.png');
		$('#f'+id).attr('href','javascript:FlagEmail('+y+','+id+')');
	});
}
function ClearText() {
	if ($('#eDetails').val()=="Type your message in here.") { $('#eDetails').val(''); }
}
function AcceptQuote(id) {
	if (confirm('Click OK to confirm you accept this quote.')) {
		$('#r'+id).html('<td colspan="5"><img src="/gfx/ajax.gif" /></td>')
		$.post('/ajax/quote.php','&action=accept&id='+id, function(data) {
			$('#r'+id).html('<td colspan="5">'+data+'</td>');
		});
	}
}
function QuoteToggle() {
	if ($('#Quote').val()=="1") { $('#xPrice').slideDown('fast'); } else { $('#xPrice').slideUp('fast'); }
}
function CancelAccount() {
	$.post('/ajax/payments.php','action=CancelAccount',function(data) {
		$('#InvoiceDetails').html(data);
	});
}
function doAjax(action,id,elem) {
	$.post('/ajax/class.ajax-functions.php','action='+action+'&id='+id+'&elem='+elem,function(d) { $('#'+elem).html(d)});
}

/* */
;(function($) { 
var style = document.createElement('div').style;
var moz = style['MozBorderRadius'] !== undefined;
var webkit = style['WebkitBorderRadius'] !== undefined;
var radius = style['BorderRadius'] !== undefined;
var mode = document.documentMode || 0;
var noBottomFold = $.browser.msie && (($.browser.version < 8 && !mode) || mode < 8);
var expr = $.browser.msie && (function() {
    var div = document.createElement('div');
    try { div.style.setExpression('width','0+0'); div.style.removeExpression('width'); }
    catch(e) { return false; }
    return true;
})();    
function sz(el, p) { 
    return parseInt($.css(el,p))||0; 
};
function hex2(s) {
    var s = parseInt(s).toString(16);
    return ( s.length < 2 ) ? '0'+s : s;
};
function gpc(node) {
    for ( ; node && node.nodeName.toLowerCase() != 'html'; node = node.parentNode ) {
        var v = $.css(node,'backgroundColor');
        if (v == 'rgba(0, 0, 0, 0)')
            continue; // webkit
        if (v.indexOf('rgb') >= 0) { 
            var rgb = v.match(/\d+/g); 
            return '#'+ hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]);
        }
        if ( v && v != 'transparent' )
            return v;
    }
    return '#ffffff';
};

function getWidth(fx, i, width) {
    switch(fx) {
    case 'round':  return Math.round(width*(1-Math.cos(Math.asin(i/width))));
    case 'cool':   return Math.round(width*(1+Math.cos(Math.asin(i/width))));
    case 'sharp':  return Math.round(width*(1-Math.cos(Math.acos(i/width))));
    case 'bite':   return Math.round(width*(Math.cos(Math.asin((width-i-1)/width))));
    case 'slide':  return Math.round(width*(Math.atan2(i,width/i)));
    case 'jut':    return Math.round(width*(Math.atan2(width,(width-i-1))));
    case 'curl':   return Math.round(width*(Math.atan(i)));
    case 'tear':   return Math.round(width*(Math.cos(i)));
    case 'wicked': return Math.round(width*(Math.tan(i)));
    case 'long':   return Math.round(width*(Math.sqrt(i)));
    case 'sculpt': return Math.round(width*(Math.log((width-i-1),width)));
	case 'dogfold':
    case 'dog':    return (i&1) ? (i+1) : width;
    case 'dog2':   return (i&2) ? (i+1) : width;
    case 'dog3':   return (i&3) ? (i+1) : width;
    case 'fray':   return (i%2)*width;
    case 'notch':  return width; 
	case 'bevelfold':
    case 'bevel':  return i+1;
    }
};

$.fn.corner = function(options) {
    // in 1.3+ we can fix mistakes with the ready state
	if (this.length == 0) {
        if (!$.isReady && this.selector) {
            var s = this.selector, c = this.context;
            $(function() {
                $(s,c).corner(options);
            });
        }
        return this;
	}

    return this.each(function(index){
		var $this = $(this);
		// meta values override options
		var o = [$this.attr($.fn.corner.defaults.metaAttr) || '', options || ''].join(' ').toLowerCase();
		var keep = /keep/.test(o);                       // keep borders?
		var cc = ((o.match(/cc:(#[0-9a-f]+)/)||[])[1]);  // corner color
		var sc = ((o.match(/sc:(#[0-9a-f]+)/)||[])[1]);  // strip color
		var width = parseInt((o.match(/(\d+)px/)||[])[1]) || 10; // corner width
		var re = /round|bevelfold|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dogfold|dog/;
		var fx = ((o.match(re)||['round'])[0]);
		var fold = /dogfold|bevelfold/.test(o);
		var edges = { T:0, B:1 };
		var opts = {
			TL:  /top|tl|left/.test(o),       TR:  /top|tr|right/.test(o),
			BL:  /bottom|bl|left/.test(o),    BR:  /bottom|br|right/.test(o)
		};
		if ( !opts.TL && !opts.TR && !opts.BL && !opts.BR )
			opts = { TL:1, TR:1, BL:1, BR:1 };
			
		// support native rounding
		if ($.fn.corner.defaults.useNative && fx == 'round' && (radius || moz || webkit) && !cc && !sc) {
			if (opts.TL)
				$this.css(radius ? 'border-top-left-radius' : moz ? '-moz-border-radius-topleft' : '-webkit-border-top-left-radius', width + 'px');
			if (opts.TR)
				$this.css(radius ? 'border-top-right-radius' : moz ? '-moz-border-radius-topright' : '-webkit-border-top-right-radius', width + 'px');
			if (opts.BL)
				$this.css(radius ? 'border-bottom-left-radius' : moz ? '-moz-border-radius-bottomleft' : '-webkit-border-bottom-left-radius', width + 'px');
			if (opts.BR)
				$this.css(radius ? 'border-bottom-right-radius' : moz ? '-moz-border-radius-bottomright' : '-webkit-border-bottom-right-radius', width + 'px');
			return;
		}
			
		var strip = document.createElement('div');
		$(strip).css({
			overflow: 'hidden',
			height: '1px',
			minHeight: '1px',
			fontSize: '1px',
			backgroundColor: sc || 'transparent',
			borderStyle: 'solid'
		});
	
        var pad = {
            T: parseInt($.css(this,'paddingTop'))||0,     R: parseInt($.css(this,'paddingRight'))||0,
            B: parseInt($.css(this,'paddingBottom'))||0,  L: parseInt($.css(this,'paddingLeft'))||0
        };

        if (typeof this.style.zoom != undefined) this.style.zoom = 1; // force 'hasLayout' in IE
        if (!keep) this.style.border = 'none';
        strip.style.borderColor = cc || gpc(this.parentNode);
        var cssHeight = $.curCSS(this, 'height');

        for (var j in edges) {
            var bot = edges[j];
            // only add stips if needed
            if ((bot && (opts.BL || opts.BR)) || (!bot && (opts.TL || opts.TR))) {
                strip.style.borderStyle = 'none '+(opts[j+'R']?'solid':'none')+' none '+(opts[j+'L']?'solid':'none');
                var d = document.createElement('div');
                $(d).addClass('jquery-corner');
                var ds = d.style;

                bot ? this.appendChild(d) : this.insertBefore(d, this.firstChild);

                if (bot && cssHeight != 'auto') {
                    if ($.css(this,'position') == 'static')
                        this.style.position = 'relative';
                    ds.position = 'absolute';
                    ds.bottom = ds.left = ds.padding = ds.margin = '0';
                    if (expr)
                        ds.setExpression('width', 'this.parentNode.offsetWidth');
                    else
                        ds.width = '100%';
                }
                else if (!bot && $.browser.msie) {
                    if ($.css(this,'position') == 'static')
                        this.style.position = 'relative';
                    ds.position = 'absolute';
                    ds.top = ds.left = ds.right = ds.padding = ds.margin = '0';
                    
                    // fix ie6 problem when blocked element has a border width
                    if (expr) {
                        var bw = sz(this,'borderLeftWidth') + sz(this,'borderRightWidth');
                        ds.setExpression('width', 'this.parentNode.offsetWidth - '+bw+'+ "px"');
                    }
                    else
                        ds.width = '100%';
                }
                else {
                	ds.position = 'relative';
                    ds.margin = !bot ? '-'+pad.T+'px -'+pad.R+'px '+(pad.T-width)+'px -'+pad.L+'px' : 
                                        (pad.B-width)+'px -'+pad.R+'px -'+pad.B+'px -'+pad.L+'px';                
                }

                for (var i=0; i < width; i++) {
                    var w = Math.max(0,getWidth(fx,i, width));
                    var e = strip.cloneNode(false);
                    e.style.borderWidth = '0 '+(opts[j+'R']?w:0)+'px 0 '+(opts[j+'L']?w:0)+'px';
                    bot ? d.appendChild(e) : d.insertBefore(e, d.firstChild);
                }
				
				if (fold && $.support.boxModel) {
					if (bot && noBottomFold) continue;
					for (var c in opts) {
						if (!opts[c]) continue;
						if (bot && (c == 'TL' || c == 'TR')) continue;
						if (!bot && (c == 'BL' || c == 'BR')) continue;
						
						var common = { position: 'absolute', border: 'none', margin: 0, padding: 0, overflow: 'hidden', backgroundColor: strip.style.borderColor };
						var $horz = $('<div/>').css(common).css({ width: width + 'px', height: '1px' });
						switch(c) {
						case 'TL': $horz.css({ bottom: 0, left: 0 }); break;
						case 'TR': $horz.css({ bottom: 0, right: 0 }); break;
						case 'BL': $horz.css({ top: 0, left: 0 }); break;
						case 'BR': $horz.css({ top: 0, right: 0 }); break;
						}
						d.appendChild($horz[0]);
						
						var $vert = $('<div/>').css(common).css({ top: 0, bottom: 0, width: '1px', height: width + 'px' });
						switch(c) {
						case 'TL': $vert.css({ left: width }); break;
						case 'TR': $vert.css({ right: width }); break;
						case 'BL': $vert.css({ left: width }); break;
						case 'BR': $vert.css({ right: width }); break;
						}
						d.appendChild($vert[0]);
					}
				}
            }
        }
    });
};

$.fn.uncorner = function() { 
	if (radius || moz || webkit)
		this.css(radius ? 'border-radius' : moz ? '-moz-border-radius' : '-webkit-border-radius', 0);
	$('div.jquery-corner', this).remove();
	return this;
};

// expose options
$.fn.corner.defaults = {
	useNative: true, // true if plugin should attempt to use native browser support for border radius rounding
	metaAttr:  'data-corner' // name of meta attribute to use for options
};
    
})(jQuery);
/*
 * OVERLAY
*/
;(function($) {
	$.fn.fixPNG = function() {
		return this.each(function () {
			var image = $(this).css('backgroundImage');

			if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) {
				image = RegExp.$1;
				$(this).css({
					'backgroundImage': 'none',
					'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=" + ($(this).css('backgroundRepeat') == 'no-repeat' ? 'crop' : 'scale') + ", src='" + image + "')"
				}).each(function () {
					var position = $(this).css('position');
					if (position != 'absolute' && position != 'relative')
						$(this).css('position', 'relative');
				});
			}
		});
	};

	var elem, opts, busy = false, imagePreloader = new Image, loadingTimer, loadingFrame = 1, imageRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i;
	var ieQuirks = null, IE6 = $.browser.msie && $.browser.version.substr(0,1) == 6 && !window.XMLHttpRequest, oldIE = IE6 || ($.browser.msie && $.browser.version.substr(0,1) == 7);

	$.fn.fancybox = function(o) {
		var settings		= $.extend({}, $.fn.fancybox.defaults, o);
		var matchedGroup	= this;

		function _initialize() {
			elem = this;
			opts = $.extend({}, settings);

			_start();

			return false;
		};

		function _start() {
			if (busy) return;

			if ($.isFunction(opts.callbackOnStart)) {
				opts.callbackOnStart();
			}

			opts.itemArray		= [];
			opts.itemCurrent	= 0;

			if (settings.itemArray.length > 0) {
				opts.itemArray = settings.itemArray;

			} else {
				var item = {};

				if (!elem.rel || elem.rel == '') {
					var item = {href: elem.href, title: elem.title};

					if ($(elem).children("img:first").length) {
						item.orig = $(elem).children("img:first");
					} else {
						item.orig = $(elem);
					}

					if (item.title == '' || typeof item.title == 'undefined') {
						item.title = item.orig.attr('alt');
					}
					
					opts.itemArray.push( item );

				} else {
					var subGroup = $(matchedGroup).filter("a[rel=" + elem.rel + "]");
					var item = {};

					for (var i = 0; i < subGroup.length; i++) {
						item = {href: subGroup[i].href, title: subGroup[i].title};

						if ($(subGroup[i]).children("img:first").length) {
							item.orig = $(subGroup[i]).children("img:first");
						} else {
							item.orig = $(subGroup[i]);
						}

						if (item.title == '' || typeof item.title == 'undefined') {
							item.title = item.orig.attr('alt');
						}

						opts.itemArray.push( item );
					}
				}
			}

			while ( opts.itemArray[ opts.itemCurrent ].href != elem.href ) {
				opts.itemCurrent++;
			}

			if (opts.overlayShow) {
				if (IE6) {
					$('embed, object, select').css('visibility', 'hidden');
					$("#fancy_overlay").css('height', $(document).height());
				}

				$("#fancy_overlay").css({
					'background-color'	: opts.overlayColor,
					'opacity'			: opts.overlayOpacity
				}).show();
			}
			
			$(window).bind("resize.fb scroll.fb", $.fn.fancybox.scrollBox);

			_change_item();
		};

		function _change_item() {
			$("#fancy_right, #fancy_left, #fancy_close, #fancy_title").hide();

			var href = opts.itemArray[ opts.itemCurrent ].href;

			if (href.match("iframe") || elem.className.indexOf("iframe") >= 0) {
				$.fn.fancybox.showLoading();
				_set_content('<iframe id="fancy_frame" onload="jQuery.fn.fancybox.showIframe()" name="fancy_iframe' + Math.round(Math.random()*1000) + '" frameborder="0" hspace="0" src="' + href + '"></iframe>', opts.frameWidth, opts.frameHeight);

			} else if (href.match(/#/)) {
				var target = window.location.href.split('#')[0]; target = href.replace(target, ''); target = target.substr(target.indexOf('#'));

				_set_content('<div id="fancy_div">' + $(target).html() + '</div>', opts.frameWidth, opts.frameHeight);

			} else if (href.match(imageRegExp)) {
				imagePreloader = new Image; imagePreloader.src = href;

				if (imagePreloader.complete) {
					_proceed_image();

				} else {
					$.fn.fancybox.showLoading();
					$(imagePreloader).unbind().bind('load', function() {
						$("#fancy_loading").hide();

						_proceed_image();
					});
				}
			} else {
				$.fn.fancybox.showLoading();
				$.get(href, function(data) {
					$("#fancy_loading").hide();
					_set_content( '<div id="fancy_ajax">' + data + '</div>', opts.frameWidth, opts.frameHeight );
				});
			}
		};

		function _proceed_image() {
			var width	= imagePreloader.width;
			var height	= imagePreloader.height;

			var horizontal_space	= (opts.padding * 2) + 40;
			var vertical_space		= (opts.padding * 2) + 60;

			var w = $.fn.fancybox.getViewport();
			
			if (opts.imageScale && (width > (w[0] - horizontal_space) || height > (w[1] - vertical_space))) {
				var ratio = Math.min(Math.min(w[0] - horizontal_space, width) / width, Math.min(w[1] - vertical_space, height) / height);

				width	= Math.round(ratio * width);
				height	= Math.round(ratio * height);
			}

			_set_content('<img alt="" id="fancy_img" src="' + imagePreloader.src + '" />', width, height);
		};

		function _preload_neighbor_images() {
			if ((opts.itemArray.length -1) > opts.itemCurrent) {
				var href = opts.itemArray[opts.itemCurrent + 1].href || false;

				if (href && href.match(imageRegExp)) {
					objNext = new Image();
					objNext.src = href;
				}
			}

			if (opts.itemCurrent > 0) {
				var href = opts.itemArray[opts.itemCurrent -1].href || false;

				if (href && href.match(imageRegExp)) {
					objNext = new Image();
					objNext.src = href;
				}
			}
		};

		function _set_content(value, width, height) {
			busy = true;

			var pad = opts.padding;

			if (oldIE || ieQuirks) {
				$("#fancy_content")[0].style.removeExpression("height");
				$("#fancy_content")[0].style.removeExpression("width");
			}

			if (pad > 0) {
				width	+= pad * 2;
				height	+= pad * 2;

				$("#fancy_content").css({
					'top'		: pad + 'px',
					'right'		: pad + 'px',
					'bottom'	: pad + 'px',
					'left'		: pad + 'px',
					'width'		: 'auto',
					'height'	: 'auto'
				});

				if (oldIE || ieQuirks) {
					$("#fancy_content")[0].style.setExpression('height',	'(this.parentNode.clientHeight - '	+ pad * 2 + ')');
					$("#fancy_content")[0].style.setExpression('width',		'(this.parentNode.clientWidth - '	+ pad * 2 + ')');
				}
			} else {
				$("#fancy_content").css({
					'top'		: 0,
					'right'		: 0,
					'bottom'	: 0,
					'left'		: 0,
					'width'		: '100%',
					'height'	: '100%'
				});
			}

			if ($("#fancy_outer").is(":visible") && width == $("#fancy_outer").width() && height == $("#fancy_outer").height()) {
				$("#fancy_content").fadeOut('fast', function() {
					$("#fancy_content").empty().append($(value)).fadeIn("normal", function() {
						_finish();
					});
				});

				return;
			}

			var w = $.fn.fancybox.getViewport();

			var itemTop		= (height	+ 60) > w[1] ? w[3] : (w[3] + Math.round((w[1] - height	- 60) * 0.5));
			var itemLeft	= (width	+ 40) > w[0] ? w[2] : (w[2] + Math.round((w[0] - width	- 40) * 0.5));

			var itemOpts = {
				'left':		itemLeft,
				'top':		itemTop,
				'width':	width + 'px',
				'height':	height + 'px'
			};

			if ($("#fancy_outer").is(":visible")) {
				$("#fancy_content").fadeOut("normal", function() {
					$("#fancy_content").empty();
					$("#fancy_outer").animate(itemOpts, opts.zoomSpeedChange, opts.easingChange, function() {
						$("#fancy_content").append($(value)).fadeIn("normal", function() {
							_finish();
						});
					});
				});

			} else {

				if (opts.zoomSpeedIn > 0 && opts.itemArray[opts.itemCurrent].orig !== undefined) {
					$("#fancy_content").empty().append($(value));

					var orig_item	= opts.itemArray[opts.itemCurrent].orig;
					var orig_pos	= $.fn.fancybox.getPosition(orig_item);

					$("#fancy_outer").css({
						'left':		(orig_pos.left	- 20 - opts.padding) + 'px',
						'top':		(orig_pos.top	- 20 - opts.padding) + 'px',
						'width':	$(orig_item).width() + (opts.padding * 2),
						'height':	$(orig_item).height() + (opts.padding * 2)


					});

					if (opts.zoomOpacity) {
						itemOpts.opacity = 'show';
					}

					$("#fancy_outer").animate(itemOpts, opts.zoomSpeedIn, opts.easingIn, function() {
						_finish();
					});

				} else {

					$("#fancy_content").hide().empty().append($(value)).show();
					$("#fancy_outer").css(itemOpts).fadeIn("normal", function() {
						_finish();
					});
				}
			}
		};

		function _set_navigation() {
			if (opts.itemCurrent !== 0) {
				$("#fancy_left, #fancy_left_ico").unbind().bind("click", function(e) {
					e.stopPropagation();

					opts.itemCurrent--;
					_change_item();

					return false;
				});

				$("#fancy_left").show();
			}

			if (opts.itemCurrent != ( opts.itemArray.length -1)) {
				$("#fancy_right, #fancy_right_ico").unbind().bind("click", function(e) {
					e.stopPropagation();

					opts.itemCurrent++;
					_change_item();

					return false;
				});

				$("#fancy_right").show();
			}
		};

		function _finish() {
			if ($.browser.msie) {
				$("#fancy_content")[0].style.removeAttribute('filter');
				$("#fancy_outer")[0].style.removeAttribute('filter');
			}

			_set_navigation();

			_preload_neighbor_images();

			$(document).bind("keydown.fb", function(e) {
				if (e.keyCode == 27 && opts.enableEscapeButton) {
					$.fn.fancybox.close();

				} else if(e.keyCode == 37 && opts.itemCurrent !== 0) {
					$(document).unbind("keydown.fb");
					opts.itemCurrent--;
					_change_item();
					

				} else if(e.keyCode == 39 && opts.itemCurrent != (opts.itemArray.length - 1)) {
					$(document).unbind("keydown.fb");
					opts.itemCurrent++;
					_change_item();
				}
			});

			if (opts.hideOnContentClick) {
				$("#fancy_content").click($.fn.fancybox.close);
			}

			if (opts.overlayShow && opts.hideOnOverlayClick) {
				$("#fancy_overlay").bind("click", $.fn.fancybox.close);
			}

			if (opts.showCloseButton) {
				$("#fancy_close").bind("click", $.fn.fancybox.close).show();
			}

			if (typeof opts.itemArray[ opts.itemCurrent ].title !== 'undefined' && opts.itemArray[ opts.itemCurrent ].title.length > 0) {
				var pos = $("#fancy_outer").position();

				$('#fancy_title div').text( opts.itemArray[ opts.itemCurrent ].title).html();

				$('#fancy_title').css({
					'top'	: pos.top + $("#fancy_outer").outerHeight() - 32,
					'left'	: pos.left + (($("#fancy_outer").outerWidth() * 0.5) - ($('#fancy_title').width() * 0.5))
				}).show();
			}

			if (opts.overlayShow && IE6) {
				$('embed, object, select', $('#fancy_content')).css('visibility', 'visible');
			}

			if ($.isFunction(opts.callbackOnShow)) {
				opts.callbackOnShow( opts.itemArray[ opts.itemCurrent ] );
			}

			if ($.browser.msie) {
				$("#fancy_outer")[0].style.removeAttribute('filter'); 
				$("#fancy_content")[0].style.removeAttribute('filter'); 
			}
			
			busy = false;
		};

		return this.unbind('click.fb').bind('click.fb', _initialize);
	};

	$.fn.fancybox.scrollBox = function() {
		var w = $.fn.fancybox.getViewport();
		
		if (opts.centerOnScroll && $("#fancy_outer").is(':visible')) {
			var ow	= $("#fancy_outer").outerWidth();
			var oh	= $("#fancy_outer").outerHeight();

			var pos	= {
				'top'	: (oh > w[1] ? w[3] : w[3] + Math.round((w[1] - oh) * 0.5)),
				'left'	: (ow > w[0] ? w[2] : w[2] + Math.round((w[0] - ow) * 0.5))
			};

			$("#fancy_outer").css(pos);

			$('#fancy_title').css({
				'top'	: pos.top	+ oh - 32,
				'left'	: pos.left	+ ((ow * 0.5) - ($('#fancy_title').width() * 0.5))
			});
		}
		
		if (IE6 && $("#fancy_overlay").is(':visible')) {
			$("#fancy_overlay").css({
				'height' : $(document).height()
			});
		}
		
		if ($("#fancy_loading").is(':visible')) {
			$("#fancy_loading").css({'left': ((w[0] - 40) * 0.5 + w[2]), 'top': ((w[1] - 40) * 0.5 + w[3])});
		}
	};

	$.fn.fancybox.getNumeric = function(el, prop) {
		return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
	};

	$.fn.fancybox.getPosition = function(el) {
		var pos = el.offset();



		pos.top	+= $.fn.fancybox.getNumeric(el, 'paddingTop');
		pos.top	+= $.fn.fancybox.getNumeric(el, 'borderTopWidth');

		pos.left += $.fn.fancybox.getNumeric(el, 'paddingLeft');
		pos.left += $.fn.fancybox.getNumeric(el, 'borderLeftWidth');

		return pos;
	};

	$.fn.fancybox.showIframe = function() {
		$("#fancy_loading").hide();
		$("#fancy_frame").show();
	};

	$.fn.fancybox.getViewport = function() {
		return [$(window).width(), $(window).height(), $(document).scrollLeft(), $(document).scrollTop() ];
	};

	$.fn.fancybox.animateLoading = function() {
		if (!$("#fancy_loading").is(':visible')){
			clearInterval(loadingTimer);
			return;
		}

		$("#fancy_loading > div").css('top', (loadingFrame * -40) + 'px');

		loadingFrame = (loadingFrame + 1) % 12;
	};

	$.fn.fancybox.showLoading = function() {
		clearInterval(loadingTimer);

		var w = $.fn.fancybox.getViewport();

		$("#fancy_loading").css({'left': ((w[0] - 40) * 0.5 + w[2]), 'top': ((w[1] - 40) * 0.5 + w[3])}).show();
		$("#fancy_loading").bind('click', $.fn.fancybox.close);

		loadingTimer = setInterval($.fn.fancybox.animateLoading, 66);
	};

	$.fn.fancybox.close = function() {
		busy = true;

		$(imagePreloader).unbind();

		$(document).unbind("keydown.fb");
		$(window).unbind("resize.fb scroll.fb");

		$("#fancy_overlay, #fancy_content, #fancy_close").unbind();

		$("#fancy_close, #fancy_loading, #fancy_left, #fancy_right, #fancy_title").hide();

		__cleanup = function() {
			if ($("#fancy_overlay").is(':visible')) {
				$("#fancy_overlay").fadeOut("fast");
			}

			$("#fancy_content").empty();
			
			if (opts.centerOnScroll) {
				$(window).unbind("resize.fb scroll.fb");
			}

			if (IE6) {
				$('embed, object, select').css('visibility', 'visible');
			}

			if ($.isFunction(opts.callbackOnClose)) {
				opts.callbackOnClose();
			}

			busy = false;
		};

		if ($("#fancy_outer").is(":visible") !== false) {
			if (opts.zoomSpeedOut > 0 && opts.itemArray[opts.itemCurrent].orig !== undefined) {
				var orig_item	= opts.itemArray[opts.itemCurrent].orig;
				var orig_pos	= $.fn.fancybox.getPosition(orig_item);

				var itemOpts = {
					'left':		(orig_pos.left	- 20 - opts.padding) + 'px',
					'top': 		(orig_pos.top	- 20 - opts.padding) + 'px',
					'width':	$(orig_item).width() + (opts.padding * 2),
					'height':	$(orig_item).height() + (opts.padding * 2)
				};

				if (opts.zoomOpacity) {
					itemOpts.opacity = 'hide';
				}

				$("#fancy_outer").stop(false, true).animate(itemOpts, opts.zoomSpeedOut, opts.easingOut, __cleanup);

			} else {
				$("#fancy_outer").stop(false, true).fadeOut('fast', __cleanup);
			}

		} else {
			__cleanup();
		}

		return false;
	};

	$.fn.fancybox.build = function() {
		var html = '';

		html += '<div id="fancy_overlay"></div>';
		html += '<div id="fancy_loading"><div></div></div>';

		html += '<div id="fancy_outer">';
		html += '<div id="fancy_inner">';

		html += '<div id="fancy_close"></div>';

		html += '<div id="fancy_bg"><div class="fancy_bg" id="fancy_bg_n"></div><div class="fancy_bg" id="fancy_bg_ne"></div><div class="fancy_bg" id="fancy_bg_e"></div><div class="fancy_bg" id="fancy_bg_se"></div><div class="fancy_bg" id="fancy_bg_s"></div><div class="fancy_bg" id="fancy_bg_sw"></div><div class="fancy_bg" id="fancy_bg_w"></div><div class="fancy_bg" id="fancy_bg_nw"></div></div>';

		html += '<a href="javascript:;" id="fancy_left"><span class="fancy_ico" id="fancy_left_ico"></span></a><a href="javascript:;" id="fancy_right"><span class="fancy_ico" id="fancy_right_ico"></span></a>';

		html += '<div id="fancy_content"></div>';

		html += '</div>';
		html += '</div>';
		
		html += '<div id="fancy_title"></div>';
		
		$(html).appendTo("body");

		$('<table cellspacing="0" cellpadding="0" border="0"><tr><td class="fancy_title" id="fancy_title_left"></td><td class="fancy_title" id="fancy_title_main"><div></div></td><td class="fancy_title" id="fancy_title_right"></td></tr></table>').appendTo('#fancy_title');

		if ($.browser.msie) {
			$(".fancy_bg").fixPNG();
		}

		if (IE6) {
			$("div#fancy_overlay").css("position", "absolute");
			$("#fancy_loading div, #fancy_close, .fancy_title, .fancy_ico").fixPNG();

			$("#fancy_inner").prepend('<iframe id="fancy_bigIframe" src="javascript:false;" scrolling="no" frameborder="0"></iframe>');

			// Get rid of the 'false' text introduced by the URL of the iframe
			var frameDoc = $('#fancy_bigIframe')[0].contentWindow.document;
			frameDoc.open();
			frameDoc.close();
			
		}
	};

	$.fn.fancybox.defaults = {
		padding				:	10,
		imageScale			:	true,
		zoomOpacity			:	true,
		zoomSpeedIn			:	0,
		zoomSpeedOut		:	0,
		zoomSpeedChange		:	300,
		easingIn			:	'swing',
		easingOut			:	'swing',
		easingChange		:	'swing',
		frameWidth			:	562,
		frameHeight			:	550,
		overlayShow			:	true,
		overlayOpacity		:	0.71,
		overlayColor		:	'#3073B1',
		enableEscapeButton	:	true,
		showCloseButton		:	true,
		hideOnOverlayClick	:	true,
		hideOnContentClick	:	true,
		centerOnScroll		:	true,
		itemArray			:	[],
		callbackOnStart		:	null,
		callbackOnShow		:	null,
		callbackOnClose		:	null
	};

	$(document).ready(function() {
		ieQuirks = $.browser.msie && !$.boxModel;

		if ($("#fancy_outer").length < 1) {
			$.fn.fancybox.build();
		}
	});

})(jQuery);
