// *************************************************************************
//		 ___________________________________________________________		#
//		|															|		#
//		|	Miscellaneous functions									|		#
//		|___________________________________________________________|		#
//																			#
// *************************************************************************

// Show Debug on AJAX => (0,1)
var ajaxDebug = 0;

// Items in rent list

function getRef(name) { return document.getElementById(name); }

function goPopup(mylink, windowname) {
	if (!window.focus) return true;
	var href;
	if (typeof(mylink) == 'string') href=mylink;
	else href=mylink.href;
	window.open(href, windowname, 'width=800,height=600,toolbar=no,resizable=yes,scrollbars=yes');
	return false;
}

function setStyleAttribs(bits, attribs, ref) {
	// USAGE:
	// var borders = new Array('borderTop','borderLeft','borderRight');
	// setStyleAttribs(borders, '1px #000 solid', 'id123XXX');
	for (var i = 0; i < bits.length; i++) {
		eval("getRef('"+ref+"').style."+bits[i]+" = '"+attribs+"';");
	}
}


// *************************************************************************
//		 ___________________________________________________________		#
//		|															|		#
//		|	Play in IFRAME											|		#
//		|___________________________________________________________|		#
//																			#
// *************************************************************************

var currentiFrame;

function clear_iframe() {
	frames[currentiFrame].history.back(1);
}

function play_iframe(url,iFrameName) {
	currentiFrame = iFrameName;
	if (iFrameName) {
		frames[iFrameName].location.href = url;
		setTimeout("clear_iframe()",3500);
	}
}


// *************************************************************************
//		 ___________________________________________________________		#
//		|															|		#
//		|	Stop multiple form submits								|		#
//		|___________________________________________________________|		#
//																			#
// *************************************************************************

var formSubmitted = false;

function dubble(theForm) {
	if (!formSubmitted) {
		formSubmitted = true;
		return true;
	}
	else {
		alert("Please wait, this form has already been submitted.");
		return false;
	}
}

// *************************************************************************
//		 ___________________________________________________________		#
//		|															|		#
//		|	Swap DIVs												|		#
//		|___________________________________________________________|		#
//																			#
// *************************************************************************

function blocking(nr) {
	if (document.all) {
		current = (document.all[nr].style.display == 'none') ? 'block' : 'none';
		document.all[nr].style.display = current;
	}
	else if (document.getElementById) {
		vista = (document.getElementById(nr).style.display == 'none') ? 'block' : 'none';
		document.getElementById(nr).style.display = vista;
	}
}

function switchDiv(nr, suffix) {
	var otherdiv = nr + suffix;
	blocking(nr);
	blocking(otherdiv);
}

function blockingInline(nr) {
	if (document.all) {
		current = (document.all[nr].style.display == 'none') ? 'inline' : 'none';
		document.all[nr].style.display = current;
	}
	else if (document.getElementById) {
		vista = (document.getElementById(nr).style.display == 'none') ? 'inline' : 'none';
		document.getElementById(nr).style.display = vista;
	}
}

function switchDivInline(nr, suffix) {
	var otherdiv = nr + suffix;
	blockingInline(nr);
	blockingInline(otherdiv);
}

function navRollOver(obj1, obj2, state) {
	if (!obj2) obj2 = false;
	document.getElementById(obj1).className = (state == 'on') ? 'nav-highlight' : 'nav';
	if (obj2) document.getElementById(obj2).className = (state == 'on') ? 'nav-highlight' : 'nav';
}

// *************************************************************************
//		 ___________________________________________________________		#
//		|															|		#
//		|	Collapse/Expand Div height with acceleration & fading	|		#
//		|___________________________________________________________|		#
//																			#
// *************************************************************************

var pid = 0, i = 0; moving = 0, speed = 1, d = 0, height = 0;
ie5  = (document.all && document.getElementById);
ns6 = (!document.all && document.getElementById);

function callScroll(obj,length,speedfactor){
	basespeed = 0.025;
	var ratio = 1;
	var currentLength = parseInt(getRef(obj).style.height);
	if (ie5) speedfactor *= 3;
	else speedfactor *= 1.5;
	speed = basespeed*speedfactor;
	getRef(obj).style.display = 'block';
	if (!moving) {
		i = 0;
		if (currentLength != length) {
			if (currentLength == 1 || length > currentLength) {
				if (length > currentLength) {
					ratio = currentLength / length;
					i = ratio*Math.asin(1);
				}
				scrollOut(obj,length);
			} else {
				if (length < currentLength) {
					distance = currentLength - length;
					if (length == 1) fade = 1;
					else fade = 0;
					scrollIn(obj,length,distance,fade);
				}
			}
		}
	} else {
		length = currentLength;
		i = 1.25;
	}
	
	if (ajaxDebug) getRef('currentLength').value = currentLength;
	
}

function scrollIn(obj,length,distance,fade){
	if ( i < Math.asin(1)) {
		moving = 1;
		i=i+(speed*3);
		d = parseInt(Math.cos(i)*distance) + length;
		if (d <= (length)) { d = length; }
		getRef(obj).style.height = d;
		if (fade) {
			if(ie5) getRef(obj).filters.alpha.opacity = parseInt((-i+1.4)*100);
			if(ns6) getRef(obj).style.opacity = -i+1.4;
		}
		pid=setTimeout('scrollIn("'+ obj +'",'+ length +','+ distance +','+ fade +')', 15);
	} else {
		clearTimeout(pid);
		getRef(obj).style.height = length;
		moving = i = d = 0;
		if (fade) getRef(obj).style.display = 'none';
	}
	height = parseInt(getRef(obj).style.height);
	if (ajaxDebug) {
		getRef('height').value = height;
		getRef('d').value = d;
		getRef('i').value = i;
		getRef('moving').value = moving;
	}
}

function scrollOut(obj,length){
	if ( i < Math.asin(1)-speed) {
		moving = 1;
		i=i+(speed*1.5);
		d = Math.sin(i)*length;
		getRef(obj).style.height = d;
		if(ie5) getRef(obj).filters.alpha.opacity = parseInt((i-0.2)*100);
		if(ns6) getRef(obj).style.opacity = i-0.2;
		pid=setTimeout('scrollOut("'+ obj +'",'+ length +')', 15);
	} else {
		clearTimeout(pid);
		d = length;
		getRef(obj).style.height = d;
		moving = 0;
	}
	height = parseInt(getRef(obj).style.height);
	if (ajaxDebug) {
		getRef('height').value = height;
		getRef('d').value = d;
		getRef('i').value = i;
		getRef('moving').value = moving;
	}
}

// *************************************************************************
//		 ___________________________________________________________		#
//		|															|		#
//		|	Some http request stuff 								|		#
//		|___________________________________________________________|		#
//																			#
// *************************************************************************



// Pre-load images for AJAX add/reserve buttons.
if (document.images) {
   img1 = new Image();
   img2 = new Image();
   img3 = new Image();
   img4 = new Image();
   img5 = new Image();
   img6 = new Image();
   img1.src = "/images/buttons/Added.gif";
   img2.src = "/images/buttons/Adding.gif";
   img3.src = "/images/buttons/Reserving.gif";
   img4.src = "/images/buttons/Reserved.gif";
   img5.src = "/images/buttons/Removing.gif";
   img6.src = "/images/buttons/Removed.gif";
}

function getHTTPObject() {
	var xmlhttp;
	/*@cc_on 
	@if (@_jscript_version >= 5) try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		}
	} @else xmlhttp = false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	} return xmlhttp;
}
var http = getHTTPObject();
var ajax_rand;
var ajax_id;
var ajax_add_option;
var ajax_add_command;
var ajax_perform;
var ajax_InRentList;
var ajax_add_revert;
var add_logging;


function ajax_log_rating() {
    AJAX.log_rating();
}



// *************************************************************************
//		 ___________________________________________________________		#
//		|															|		#
//		|  AJAX signup trickery              						|		#
//		|___________________________________________________________|		#
//																			#
// *************************************************************************
function lookupPostcode() {
    var postcode = document.getElementById("postcode");
    if ( postcode.value ) {
        window.open('/visitor/sign_up_2_postcode.html?postcode=' + postcode.value,'','width=600,height=200,alwaysRaised,status=no'); 
    }
    return false;
}
function testAddressFields() {
    var address_1 = document.getElementById("address_1");
    var address_2 = document.getElementById("address_2");
    var city = document.getElementById("city");
    var county = document.getElementById("county");
    var postcode = document.getElementById("postcode");
    if ( postcode.value && ! ( address_1.value || address_2.value || city.value || county.value ) ) {
        window.open('/visitor/sign_up_2_postcode.html?postcode=' + postcode.value,'','width=600,height=200,alwaysRaised,status=no'); 
        return false;
    }
    return true;
}

req = null;

function onloadPage(setField) {
    if (getHTTPObject()) {
        resetPage(setField);
    } else {
        document.getElementById("popup").style.display = 'block';
    }
}

function returnedPage(pcid) {
    document.getElementById("change").style.display = 'inline';
    document.getElementById("find").style.display = 'none';
    if (pcid) {
        document.getElementById("postcode").style.display = 'none';
        loadAddress(pcid);
    } else {
        document.getElementById("enter_address").style.display = 'block';
        document.getElementById("contbutton").style.display = 'inline';
    }
}

function resetPage(focusField) {
    document.getElementById("postcode").style.display = 'inline';
    document.getElementById("find").style.display = 'inline';
    setSelectField('Looking up addresses...');
    setAddressFields('','','','','','','',0);
    if (focusField) {
        document.getElementById(focusField).focus()
    }
}

function isEnter(evt) {
    evt = (evt ? evt : event);
    var keyPressed = (evt.which ? evt.which : evt.keyCode);
    if (keyPressed == 13) {
        if (document.getElementById("postcode").style.display == 'inline') {
            lookupPostcode();
        } else if (document.getElementById("enter_address").style.display != 'none') {
            document.forms[1].submit();
        }
        return false;
    }
    return true;
}

function setSelectField(selectText) {
    document.getElementById("address_list").innerHTML = selectText;
    document.getElementById("address_full").style.display = (selectText != '' ? 'none' : 'inline');
    document.getElementById("change").style.display = (selectText != '' ? 'none' : 'inline');
}

function setAddressFields(postcode,address_1,address_2,city,county,mail,barcode,text_only) {
    if (text_only) {
        document.getElementById("postcode").value = postcode;
        document.getElementById("address_postcode").innerHTML = postcode;
    } else {
        document.getElementById("address_postcode").innerHTML = '';
        document.getElementById("select_address").style.display = 'none';
        document.getElementById("address_full").style.display = 'none';
    }
    document.getElementById("address_1").value = address_1;
    document.getElementById("address_2").value = address_2;
    document.getElementById("city").value = city;
    document.getElementById("county").value = county;
    document.getElementById("pca_mailsort").value = mail;
    document.getElementById("pca_barcode").value = barcode;
    document.getElementById("address_1").style.display = (text_only && address_1 ? 'none' : 'inline');
    document.getElementById("address_line1").innerHTML = (text_only && address_1 ? address_1 : '');
    document.getElementById("address_2").style.display = (text_only && address_1 ? 'none' : 'inline');
    document.getElementById("address_line2").innerHTML = (text_only && address_1 ? address_2 : '');
    document.getElementById("city").style.display = (text_only ? 'none' : 'inline');
    document.getElementById("county").style.display = (text_only ? 'none' : 'inline');
    document.getElementById("address_city").innerHTML = (text_only ? city : '');
    document.getElementById("address_county").innerHTML = (text_only ? county : '');
    document.getElementById("enter_address").style.display = (text_only ? 'block' : 'none');
    document.getElementById("findagain").style.display = 'none';
    document.getElementById("contbutton").style.display = (text_only ? 'inline' : 'none');
}
function lookupPostcode() {
    resetPage();
    var postcode = document.getElementById("postcode");
    if (postcode.value) {
        var re = /^BFPO/i;
        document.getElementById("find").style.display = 'none';
        document.getElementById("findagain").style.display = 'none';
        if (postcode.value.search(re) != -1) {
            postcode.style.display = 'none';
            setAddressFields(postcode.value.toUpperCase(),'','','','','','',1);
            document.getElementById("change").style.display = 'inline';
            document.getElementById("address_1").focus();
        } else {
            postcode.disabled = true;
            req = getHTTPObject();
            if (req.overrideMimeType) {
                req.overrideMimeType('text/xml');
            }
            req.onreadystatechange = lookupPostcode_response;
            req.open('get', '/widgets/postcode_lookup.html?postcode=' + postcode.value + '&fr=' + Math.random(), true); 
            req.send(null);
            document.getElementById("select_address").style.display = 'block';
        }
    } else {
        postcode.focus();
    }
}

function lookupPostcode_response() {
    var postcode = document.getElementById("postcode");
    postcode.disabled = false;
	if (req.readyState == 4) {
        var address = req.responseXML.getElementsByTagName("Item");
        if (address.length > 0) {
            postcode.style.display = 'none';
            document.getElementById("address_postcode").innerHTML = postcode.value;
            var addressList = document.getElementById("address_full");
            addressList.length = 0;
            for (var i=0; i<address.length; i++) {
                addressList.options[i] = new Option(address[i].getAttribute("description"),address[i].getAttribute("id"));
            }
            setSelectField('');
        } else {
            setSelectField('No address found for this postcode');
            document.getElementById("findagain").style.display = 'inline';
            document.getElementById("enter_address").style.display = 'block';
            document.getElementById("contbutton").style.display = 'inline';
            document.getElementById("address_1").focus();
        }
        req = null;
    }
}

function loadAddress(preset) {
    req = getHTTPObject();
    if (req.overrideMimeType) {
        req.overrideMimeType('text/xml');
    }
    if (preset) {
        var addressId = preset;
    } else {
        var addressList = document.getElementById("address_full");
        var addressId = addressList.options[addressList.selectedIndex].value;
    }
    document.getElementById("postcode_anywhere_id").value = addressId;
    req.onreadystatechange = loadAddress_response;
    req.open('get', '/widgets/postcode_lookup.html?postcode_anywhere_id=' + addressId + '&fr=' + Math.random(), true); 
    req.send(null);
}

function loadAddress_response() {
	if (req.readyState == 4) {
        if (req.status == 200 && req.responseXML) {
            var address = req.responseXML.getElementsByTagName("Item");
            setAddressFields(address[0].getAttribute("postcode"),address[0].getAttribute("line1"),address[0].getAttribute("line2"),address[0].getAttribute("post_town"),address[0].getAttribute("county"),address[0].getAttribute("mailsort"),address[0].getAttribute("barcode"),1);
            if (!document.getElementById("address_1").value) {
                document.getElementById("address_1").focus();
            }
        }
        req = null;
    }
}
// *************************************************************************
//		 ___________________________________________________________		#
//		|															|		#
//		|	Image transparency slideshow fader						|		#
//		|___________________________________________________________|		#
//																			#
// *************************************************************************

function fadepic() {
	if (curpos<100) {
		curpos+=10
		if (tempobj.filters) tempobj.filters.alpha.opacity=curpos
		else if (tempobj.style.MozOpacity) tempobj.style.MozOpacity=curpos/101
	} else {
		clearInterval(dropslide)
		nextcanvas=(curcanvas=="canvas0")? "canvas0" : "canvas1"
		tempobj=ie4? eval("document.all."+nextcanvas) : document.getElementById(nextcanvas)
		tempobj.innerHTML=insertimage(nextimageindex)
		nextimageindex=(nextimageindex<fadeimages.length-1)? nextimageindex+1 : 0
		var tempobj2=ie4? eval("document.all."+nextcanvas) : document.getElementById(nextcanvas)
		tempobj2.style.visibility="hidden"
		setTimeout("rotateimage()",pause)
	}
}

function insertimage(i) {
	var tempcontainer=fadeimages[i][1]!=""? '<a href="'+fadeimages[i][1]+'" target="'+fadeimages[i][2]+'">' : ""
	tempcontainer+='<img src="'+fadeimages[i][0]+'" border="0">'
	tempcontainer=fadeimages[i][1]!=""? tempcontainer+'</a>' : tempcontainer
	return tempcontainer
}

function rotateimage() {
	if (ie4||dom) {
		resetit(curcanvas)
		var crossobj=tempobj=ie4? eval("document.all."+curcanvas) : document.getElementById(curcanvas)
		crossobj.style.zIndex++
		tempobj.style.visibility="visible"
		var temp='setInterval("fadepic()",50)'
		dropslide=eval(temp)
		curcanvas=(curcanvas=="canvas0")? "canvas1" : "canvas0"
	} else document.images.defaultslide.src=fadeimages[curimageindex][0]
	curimageindex=(curimageindex<fadeimages.length-1)? curimageindex+1 : 0
}

function resetit(what) {
	curpos=10
	var crossobj=ie4? eval("document.all."+what) : document.getElementById(what)
	if (crossobj.filters) crossobj.filters.alpha.opacity=curpos
	else if (crossobj.style.MozOpacity) crossobj.style.MozOpacity=curpos/101
}

function startit(){
	var crossobj=ie4? eval("document.all."+curcanvas) : document.getElementById(curcanvas)
	crossobj.innerHTML=insertimage(curimageindex)
	rotateimage()
}


// *************************************************************************
//       ___________________________________________________________        #
//      |                                                           |       #
//      |   ToolTip AJAX get data                                   |       #
//      |___________________________________________________________|       #
//                                                                          #
// *************************************************************************

var req = null;
var tooltip_id;
function setToolTipFields(id,cssbody,cssheader,header,body,fade,fadespeed,delay,offsetx,offsety) {
	//getRef('tooltip_'+id).title = "cssbody=["+cssbody+"] cssheader=["+cssheader+"] header=["+header+"] body=["+body+"] fade=["+fade+"] fadespeed=["+fadespeed+"] delay=["+delay+"] offsety=["+offsetx+"] offsetx=["+offsety+"]";
	ToolTipNode.boHDR=header;
	ToolTipNode.boBDY=body;
	ToolTipNode.boCSSBDY=cssbody;
	ToolTipNode.boCSSHDR=cssheader;
	ToolTipNode.IEbugfix=false;
	ToolTipNode.fixX=parseInt('');
	ToolTipNode.fixY=parseInt('');
	ToolTipNode.absX=parseInt('');
	ToolTipNode.absY=parseInt('');
	ToolTipNode.offY=parseInt(offsety);
	ToolTipNode.offX=parseInt(offsetx);
	ToolTipNode.fade=(fade=='on')?true:false;
	ToolTipNode.fadespeed=(fadespeed!='')?fadespeed:0.04;
	ToolTipNode.delay=(delay!='')?parseInt(delay):0;
	ToolTipNode.windowLock=true;
	ToolTipNode.title='';
	ToolTipNode.hasbox=0;
}
function loadToolTip(product_id) {
	if (tooltip_id == product_id) return false;
	else {
		tooltip_id = product_id;
		req = getHTTPObject();
		if (req.overrideMimeType) {
			req.overrideMimeType('text/xml');
		}
		req.open('get', '/widgets/tooltip_lookup.html?product_id=' + product_id + '&fr=' + Math.random(), true);
		req.onreadystatechange = loadToolTip_response;
		req.send(null);
	}
}
function loadToolTip_response() {
	if (req.readyState == 4) {
        if (req.status == 200 && req.responseXML) {
			var tooltip = req.responseXML.getElementsByTagName("tooltip");
            var css = req.responseXML.getElementsByTagName("css");
			var header = req.responseXML.getElementsByTagName("header");
			var body = req.responseXML.getElementsByTagName("body");
			var fading = req.responseXML.getElementsByTagName("fading");
			var delay = req.responseXML.getElementsByTagName("delay");
			var offset = req.responseXML.getElementsByTagName("offset");
            setToolTipFields(
				tooltip[0].getAttribute("id"),
				css[0].getAttribute("cssbody"),
				css[0].getAttribute("cssheader"),
				header[0].firstChild.nodeValue,
				body[0].firstChild.nodeValue,
				fading[0].getAttribute("fade"),
				fading[0].getAttribute("fadespeed"),
				delay[0].getAttribute("ms"),
				offset[0].getAttribute("x"),
				offset[0].getAttribute("y"));
        }
        req = null;
    }
}

// *************************************************************************
//       ___________________________________________________________        #
//      |                                                           |       #
//      |   AJAX: Editorial features page                           |       #
//      |___________________________________________________________|       #
//                                                                          #
// *************************************************************************

var req = null;
function loadEditorialList(section,page,count) {
	req = getHTTPObject();
	if (req) {
		url = '/info/ajax_editorial_items.html?page=' + page + '&section=' + section + '&count=' + count + '&r=' + Math.random();
		req.open('get', url, true);
		req.onreadystatechange = loadEditorialList_response;
		req.send(null);
	}
}
function loadEditorialList_response() {
	if (req.readyState == 4) {
        if (req.status == 200) {
			results = req.responseText.split("|");
			getRef('editorialList_'+results[1]).innerHTML = results[2];
        }
        req = null;
    }
}

// *************************************************************************
//       ___________________________________________________________        #
//      |                                                           |       #
//      |   AJAX for Loading Whats on at *your* cinema              |       #
//      |___________________________________________________________|       #
//                                                                          #
// *************************************************************************

var req = null;

// Pre-load images for AJAX add/reserve buttons.
if (document.images) {
   img1 = new Image();
   img1.src = "/images/icons/ajax_load_black.gif";
}

function ajax_getCinema_listing(cinema_id,params) {
    ajax_rand = Math.random();
    var url = '/widgets/ajax_cinema_listings.html?cinema_id='+cinema_id;
    req = getHTTPObject();
    if (req) {
        req.onreadystatechange=updateCinemaList;
        req.open('GET',url+'&r='+ajax_rand,true);
        req.send(params);
    }
}

function ajax_getCinema_horizontal_listing(cinema_id,params) {
    ajax_rand = Math.random();
    var url = '/widgets/ajax_cinema_listings.html?cinema_id='+cinema_id+'&cinema_horiz=1&r='+ajax_rand;
    
    req = getHTTPObject();
    
    if (req) {
        req.onreadystatechange=updateCinemaList;
        req.open('GET',url,true);
        req.send(params);
    }
}


function updateCinemaList() {
    var cinemaDiv = document.getElementById("cinemaList");
    var loadMe = document.getElementById("loadMe");
    var yourCinema = document.getElementById("yourCinema");

    var ready=req.readyState;
    var data=null;

    if (ready==4) {
       data=req.responseText;
        cinemaDiv.innerHTML = data;
        
        containerHeight = new fx.Height('cinemaList', {duration: 500});
        containerHeight.toggle();
        
        yourCinema.style.display = 'inline';
        loadMe.style.display = 'none';
        showHide('showWidget', 1);
        showHide('hideWidget', 0);
    }
}

function getMyCinema(obj) {
    document.location.href=obj.options[obj.selectedIndex].value;
    var cinemaName = document.getElementById('cinemaName');
    var loadMe = document.getElementById("loadMe");
    var yourCinema = document.getElementById("yourCinema");

    checkCinemaHeight('cinemaList');

    yourCinema.style.display = 'none';
    loadMe.style.display = 'inline';

    cinemaName.innerHTML = obj.options[obj.selectedIndex].text;
    showHide('selectLocalCinema', 0);
    showHide('localCinema', 1);

}

function checkCinemaHeight(obj) {
    var myHeight =  parseInt(getRef(obj).offsetHeight);
    var containerHeight = new fx.Height(obj, {duration: 500});
    if (myHeight > 0) {
        containerHeight.toggle();
        showHide('showWidget', 1);
        showHide('hideWidget', 0);
    }
}

function toggleButton(action) {
    containerHeight.toggle();
    if (action == 1) {
        showHide('hideWidget', 0);
        showHide('showWidget', 1);
    }else {
        showHide('showWidget', 0);
        showHide('hideWidget', 1);
    }
}

function showHide(element,action) {
    var element=document.getElementById(element);

    if (element != null && action == 1) {
        element.style.display = 'block';
    }else if (element != null && action == 0) {
        element.style.display = 'none';
    } else {
        return;
    }

}

// *************************************************************************
//       ___________________________________________________________        #
//      |                                                           |       #
//      |   Check screen width for advert display 
//      |___________________________________________________________|       #
//                                                                          #
// *************************************************************************

function doRHSCheck() {
	var x = document.body.scrollWidth;
	var block_x = parseInt(getRef('RHSblock').style.width);
	if (x > (787+(block_x * 2))) {
		getRef('RHSblock').style.display = "block";
	} else {
		getRef('RHSblock').style.display = "none";
	}
}

// *************************************************************************
//       ___________________________________________________________        #
//      |                                                           |       #
//      |   SWAP TABS FOR REVIEWS...
//      |___________________________________________________________|       #
//                                                                          #
// *************************************************************************

var tabcontentIDs=new Object()

    function expandcontent(linkobj){
        var ulid=linkobj.parentNode.parentNode.id //id of UL element
        var ullist=document.getElementById(ulid).getElementsByTagName("li") //get list of LIs corresponding to the tab contents
        for (var i=0; i<ullist.length; i++){
            ullist[i].className=""  //deselect all tabs
            if (typeof tabcontentIDs[ulid][i]!="undefined") //if tab content within this array index exists (exception: More tabs than there are tab contents)
            document.getElementById(tabcontentIDs[ulid][i]).style.display="none" //hide all tab contents
        }
        linkobj.parentNode.className="current"  //highlight currently clicked on tab
        document.getElementById(linkobj.getAttribute("rel")).style.display="block" //expand corresponding tab content
    }

    function savetabcontentids(ulid, relattribute){// save ids of tab content divs
        if (typeof tabcontentIDs[ulid]=="undefined") //if this array doesn't exist yet
        tabcontentIDs[ulid]=new Array()
        tabcontentIDs[ulid][tabcontentIDs[ulid].length]=relattribute
    }


    function getullistlinkbyId(ulid, tabcontentid){ //returns a tab link based on the ID of the associated tab content
        var ullist=document.getElementById(ulid).getElementsByTagName("li")
        for (var i=0; i<ullist.length; i++){
            if (ullist[i].getElementsByTagName("a")[0].getAttribute("rel")==tabcontentid){
                return ullist[i].getElementsByTagName("a")[0]
                break
            }
        }
    }

    function initializetabcontent(){
        for (var i=0; i<arguments.length; i++){ //loop through passed UL ids
            var clickedontab=1 //retrieve ID of last clicked on tab from cookie, if any
            var ulobj=document.getElementById(arguments[i])
            var ulist=ulobj.getElementsByTagName("li") //array containing the LI elements within UL
                for (var x=0; x<ulist.length; x++){ //loop through each LI element
                    var ulistlink=ulist[x].getElementsByTagName("a")[0]
                    if (ulistlink.getAttribute("rel")){
                        savetabcontentids(arguments[i], ulistlink.getAttribute("rel")) //save id of each tab content as loop runs
                        ulistlink.onclick=function(){
                        expandcontent(this)
                        return false
                    }
                    if (ulist[x].className=="current" && clickedontab=="") //if a tab is set to be selected by default
                    expandcontent(ulistlink) //auto load currenly selected tab content
                }
            } //end inner for loop
            if (clickedontab!=""){ //if a tab has been previously clicked on per the cookie value
            var culistlink=getullistlinkbyId(arguments[i], clickedontab)
            if (typeof culistlink!="undefined") //if match found between tabcontent id and rel attribute value
            expandcontent(culistlink) //auto load currenly selected tab content
            else //else if no match found between tabcontent id and rel attribute value (cookie mis-association)
            expandcontent(ulist[0].getElementsByTagName("a")[0]) //just auto load first tab instead
            }
        } //end outer for loop
    }

