function getFrameBody(ifr) {
  if (ifr.contentWindow.document) {
   return ifr.contentWindow.document[getDocBody(ifr.contentWindow)];
  }
  else if (ifr.document) {
   return ifr.document[getDocBody(null)];
  }
}

function getDocBody(win){
  if (!win) win=window;
  if (win.document.compatMode && win.document.compatMode != 'BackCompat') { //standards compliant mode 
    return "documentElement";
  }
  return "body";
}

function getChildElement(el, id) {
    el = $(el);
    if (!el || !el.descendants) return null;
    var elements = el.descendants();
    var child = null;
    for (var i = 0; i < elements.length; i++) {
     if (elements[i].id == id) {
      child = elements[i];
      break;
     }
    }
    return child;
}    

function preloadImages() { 
	var d = document; 
	if (!d.p) d.p = new Array();
	var i, j = d.p.length, a=preloadImages.arguments; 
	for(i=0; i < a.length; i++) {
		d.p[j] = new Image; d.p[j++].src = a[i];
	}
}

function replaceLinkWithImages(className, imagePath) {
	var img  = document.createElement('img');
	var navs = document.getElementsByClassName(className);
	var l    = navs.length;
	var newImg;
	for (var i = 0; i < l; i++) {
		newImg = img.cloneNode(true);
		newImg.src = newImg.out_src	= imagePath.replace("*", navs[i].name);
		newImg.over_src = imagePath.replace("*", navs[i].name + "_over");
		newImg.alt 	= navs[i].text;
		newImg.onmouseover = function() { this.src = this.over_src; };
		newImg.onmouseout  = function() { this.src = this.out_src; };
		navs[i].replaceChild(newImg, navs[i].firstChild);
	}
}
var currentPhoto;
var price_plans = new Array();
var selectedPlan;
var selectedBuyFile;

function switchPhoto(id, print_size, filename, thumb_print_url, full_url, medium_url, large_url, coolname, loc, subject) {
  $('photo_loading').show();
  currentPhoto = id;
  var base_url = 'http://flockphotography.com';
  $('photo').setOpacity(0);
  $('photo_link').href     = large_url;
  $('photo_img').src       = medium_url;
  //$('buy_photo_url').value = base_url + full_url.gsub('wm-photos', 'photos');
  //$('buy_thumb_url').value = base_url + thumb_print_url.gsub('wm-photos', 'photos');

  var name = filename.gsub('wm-photos', 'photos');
  selectedBuyFile = name;
  
  var ifr = $('ss_frame');
  var ifrBody = getFrameBody(ifr);
  var form = getChildElement(ifrBody, 'addtoBasketForm');
  getChildElement(form, 'buy_filename').value  = name;
  
  $('coolname').innerHTML  = coolname;
  $('loc').innerHTML  = loc;
  $('subject').innerHTML   = subject;
  $('photo_img').onload = function() {
    $('photo_loading').hide();
    Effect.Appear('photo');
  };
  
  if (selectedPlan) {
   getChildElement(ifrBody, 'price_plan_'+selectedPlan).hide();
   price_plans[selectedPlan].name = 'bunk';
   price_plans[selectedPlan].id = 'bunk';
  }
  
  getChildElement(ifrBody, 'price_plan_'+print_size).show();
  if (price_plans[print_size]) {
   //price_plans[print_size].name = 'category_name';
   //price_plans[print_size].id = 'category_name';
   selectedPlan = print_size;
  
   // enable buttons
   getChildElement(form, 'add_to_basket').disabled = false;
   getChildElement(form, 'checkout_btn').disabled = false;
  }
  else {
   // disable buttons
   getChildElement(form, 'add_to_basket').disabled = true;
   getChildElement(form, 'checkout_btn').disabled = true;
  }   
  
  initLightbox();
  viewPhotoAs(id);
}
function like_this(link, id) {
	location = link + '/' + id;
}
var selectedSearch;
var selectedParent;
function toggleSearch(search, parent) {
	if (search == selectedSearch) {
		hideSearch(search);
		selectedSearch = null;
	} else if (selectedSearch) {
		if (parent == 'none') {
			hideSearch(selectedSearch);
			if (selectedParent != null) {
				// check if parent is inactive; hide only if true
				var hide = $(selectedParent).previous().hasClassName("inactive");
				if (hide) {
					hideSearch(selectedParent);
					selectedParent = null;
				}
			}
		}
		else {
			if (parent != selectedSearch) {
				hideSearch(selectedSearch);
			}
			selectedParent = parent;
		}
		showSearch(search);
		selectedSearch = search;
	} else {
		showSearch(search);
		selectedSearch = search;
	}
}
function toggleHelp(search, parent) {
	if (selectedSearch == null || search != selectedSearch) {
		toggleSearch(search, parent);
	}
}
function hideSearch(search) {
	Element.hide(search);
	Element.show(search + '_arrow');
	Element.hide(search + '_arrow_down');
}
function showSearch(search) {
	Element.show(search);
	Element.hide(search + '_arrow');
	Element.show(search + '_arrow_down');
}

function hideFlash() {
  Element.hide('flash');
  Element.show('home_top');
}

function switchLeadContent(content) {
	$('lead_content').update(content);
}

function setFormElement(theForm, name, value) {
	for (var i = 0; i < theForm.length; i++) {
		var el = theForm.elements[i];
		if (el.name == name) {
			if (el.type == 'checkbox' || el.type == 'radio') {
				if (el.value == value) {
					el.checked = true;
					break;
				}
			}
			else {
				el.value = value;
				break;
			}
		}
	}
}

function getFormElement(theForm, name) {
	for (var i = 0; i < theForm.length; i++) {
		var el = theForm.elements[i];
		if (el.name == name) {
			if (el.type == 'checkbox' || el.type == 'radio') {
				if (el.checked) {
					return el.value;
				}
			}
			else {
				return el.value;
			}
		}
	}
	return null;
}

function doSearch(formName, args) {
	var theForm = null;
	for (var i = 0; i < document.forms.length; i++) {
		if (formName == document.forms[i].name) {
			theForm = document.forms[i];
			break;
		}
	}
	if (theForm != null) {
		// set form elements
		for (var i = 0; i < args.length; i++) {
			var arg = args[i];
			setFormElement(theForm, arg['key'], arg['value']);
		}
		// submit the form
		theForm.submit();
	}
}

function doStyleSearch(style) {
	doSearch('interior_style', [$H({key : 'style', value : style})]);
}

function doRoomsSearch(room) {
	doSearch('rooms', [$H({key : 'rooms[]', value : room})]);
}

function doSubjectsSearch(subject) {
	doSearch('subjects', [$H({key : 'subjects[]', value : subject})]);
}

function doFeelingsSearch(feeling) {
	doSearch('feelings', [$H({key : 'feelings[]', value : feeling})]);
}

function doLocationSearch(geoloc1, geoloc2) {
	// the location widget uses 2 params; geoloc1 is dynamically updated
	// via AJAX - here we simulate it by sending a 'hidden' form variable
	$('geoloc1').update("<input type='hidden' name='geoloc1' id='geoloc1' value='" + geoloc1 + "'/>");
	doSearch('location', [$H({key : 'geoloc2', value : geoloc2})]);
}

var roundelContent = $H();
function setRoundelContent(name, content) {
	roundelContent[name] = content;
}

function selectRoundel(name) {
	switchLeadContent(roundelContent[name]);
	toggleHomeSearch(name + "_widget");
}

function rolloverSwatch(hex, footer, x, y) {
	$('rollover').show();
	$('tin_swatch').setStyle({
		background: hex
	});
	$('swatch_footer').update(footer);
}

function viewPhotoAs(photo_id, cat_id) {
	var target = "photo";
	var params = $H();
	params['photo_id'] = photo_id;
	if (cat_id) {
		params['cat_id'] = cat_id;
	}
	else {
		params['init'] = true;
		target = "view_photo_as";
	}
	new Ajax.Updater(target, '/search/view_photo_as', { parameters: params });
}	