/* 
 * Archers/Cosmos Tourama Website, Display product javascript
 * Author: Andy Gale
 *
 */

product_details_tab_links = false;

var fistTabLoad = true;

function init_product_details()
{
    pdt = document.getElementById('productdetailstabs');
    if (!pdt) { 
        alert('init_product_details: productdetailstabs not found');
        return;
    }

    tabs = pdt.childNodes;

    product_details_tab_links  = new Array();
    
    for (i = 0; i < tabs.length; i++) { 
        if (tabs[i].tagName != 'li' && tabs[i].tagName != 'LI') { 
            continue;
        }

        tabkids = tabs[i].childNodes;
        
        for (j = 0; j < tabkids.length; j++) { 
            if (tabkids[j].tagName == 'a' || tabkids[j].tagName == 'A') { 
                tabkids[j].onclick = product_details_tab_click;

                a = tabkids[j].href.split('#');

                product_details_tab_links.push(tabkids[j]);
            }
        }
    }

    product_details_tab_links[0].parentNode.className = 'selected';

    product_details_tab_select(product_details_tab_links[0]);

    for (i in product_images) { 
        
        pip = document.getElementById('productimagepopup' + i);
        if (pip) { 
            pip.onclick = product_image_popup_open;
        }
    }        

    for (i in product_maps) { 
        pmp = document.getElementById('productmappopup' + i);
        if (pmp) { 
            pmp.onclick = product_map_popup_open;
        }
    }
	
	for (i in product_deck_plans) {         
        pmp = document.getElementById('productdeckplanpopup' + i);
        if (pmp) { 
            pmp.onclick = product_deck_plan_popup_open;
        }
    }

	/* Only do the next bit if the product_reviews array exists */
	
	init_reviews_from_xml();

	//alert(product_reviews);
	
	if (typeof(product_reviews)!='undefined') {

		for (i in product_reviews) { 
			prp = document.getElementById('productreviewpopup' + i);
			if (prp) { 
				prp.onclick = product_review_popup_open;
			}

		}        

	}
	
	// Init sherlock stuff as well
	page_onload_innit();
}

function product_details_tab_click()
{
    product_details_tab_select(this);

    return false;
}

function product_details_tab_select(selected)
{
    a = selected.href.split('#');
    selected = a[1];
	
    for (i = 0; i < product_details_tab_links.length; i++) { 
        obj = product_details_tab_links[i];
        a = obj.href.split('#');
        current = a[1];
        
        div = document.getElementById(current);
        if (!div) { 
            continue;
        }
        
        if (selected == current) { 
            div.style.display = 'block';
            obj.parentNode.className = 'selected';
        } else {
            div.style.display = 'none';
            obj.parentNode.className = '';
        }
    }
    
		
		// sitestats
		if (fistTabLoad) {
			fistTabLoad = false;
		} else {
			var parameters = "&action=tab&tab_name="+selected;
			parameters += "&product_id="+document.getElementById('sitestat_pid').value;
			parameters += "&version="+document.getElementById('sitestat_version').value;
			parameters += "&related_accom="+document.getElementById('sitestat_raccom').value;
			parameters += "&title="+document.getElementById('sitestat_pname').value;
	
			loadSitestatsImage(
				"-tab/" + selected,											 
				parameters,
				null // noredirect
			);
		}
}

function option_over(e)
{
    if (!e) e = window.event;
    
    this.className = 'over';
}

function option_out(e)
{ 
    if (!e) e = window.event;
    
    this.className = '';
}

function product_review_image_popup_open()
{

	product_review_popup_close();

    popup = document.getElementById('reviewimagespopup');

    if (!popup) { 
        alert('product_review_image_popup_open: reviewimagespopup not found');
        return;
    }

    product_review_image_popup_show_image(product_review_popup_current_review_id, 0);

   // centerElement(popup, 350, 250);
    centerElement(popup, 520, 270);

	w = windowSize();
    width  = w.width;
    tleft = (width / 2) - (520/ 2);
    s = scrollXY();
    tleft += s.x;
    //popup.style.left   = tleft + 'px';
	
	pd = document.getElementById('productdetail');
    if (!pd) { 
        alert('product_review_image_popup_open: productdetail not found');
        return;
    }
    
	o = getElementPosition(pd);

	popup.style.left = tleft  - o.offsetLeft + 'px';;
   // popup.style.top = o.offsetTop;
	
	popup.style.display = 'block';
}

function product_image_popup_open(e)
{
    id = this.id.substr(17);

    product_map_popup_close();
	product_review_popup_close();

    popup = document.getElementById('imagespopup');
    if (!popup) { 
        alert('product_image_popup_open: imagespopup not found');
        return;
    }

    product_image_popup_show_image(id, 0);

   // centerElement(popup, 350, 250);
   centerElement(popup, 350, 270);
	 
	 cnt = document.getElementById('content');
    if (!cnt) { 
        alert('product_image_popup_open: content not found');
        return;
    }
	 
		o = getElementPosition(cnt);
		popup.style.left = (parseInt(popup.style.left) - o.offsetLeft) + 'px';
		popup.style.top = (parseInt(popup.style.top) - o.offsetTop) + 'px';	

		popup.style.display = 'block';
}

product_image_popup_current_product = false;
product_image_popup_current_image   = false;

function product_image_popup_show_image(id, image)
{

   if (product_images[id].length < image || image < 0) { 
        alert(product_images[id].length + '<' + image + ' || ' + image + ' < 0');
        return;
    }

    product_image_popup_current_product = id;
    product_image_popup_current_image   = image;

    ipi = document.getElementById('imagespopupimg');
    if (!ipi) { 
        alert('product_image_popup_show_image: imagespopupimg not found');
        return;
    }
    
    ipi.src = product_images[id][image][1];
    ipi.alt = product_images[id][image][0];
    
    back = document.getElementById('imagespopback');
    if (!back) { 
        alert('product_image_popup_show_image: imagespopback not found');
        return;
    }

    if (image > 0) { 
        back.style.visibility = 'visible';
    } else { 
        back.style.visibility = 'hidden';
    }
    
    back.onclick = product_image_popup_show_image_back;
    
    forward = document.getElementById('imagespopforward');
    if (!forward) { 
        alert('product_image_popup_show_image: imagespopforward not found');
        return;
    }

    if (image < product_images[id].length - 1) { 
        forward.style.visibility = 'visible';
    } else {
        forward.style.visibility = 'hidden';
    }

    forward.onclick = product_image_popup_show_image_forward;
    
    caption = document.getElementById('imagespopcaption');
    if (!caption) {
        alert('product_image_popup_show_image: imagespopcaption not found');
        return;
    }
    
    caption.innerHTML = product_images[id][image][0];

    ipc = document.getElementById('imagespopclose');
    if (!ipc) { 
        alert('product_image_popup_show_image: imagespopclose not found');
        return;
    }

	ipc.value = 'Close';
    ipc.onclick = product_image_popup_show_image_close;
}

function product_review_image_popup_show_image(id, image)
{

   if (product_review_images[id].length < image || image < 0) { 
        alert(product_review_images[id].length + '<' + image + ' || ' + image + ' < 0');
        return;
    }

    product_image_popup_current_product = id;
    product_image_popup_current_image   = image;

    ipi = document.getElementById('reviewimagespopupimg');
    if (!ipi) { 
        alert('product_image_popup_show_image: reviewimagespopupimg not found');
        return;
    }
    
    ipi.src = product_review_images[id][image][1];
    ipi.alt = product_review_images[id][image][0];



    back = document.getElementById('reviewimagespopback');
	caption = document.getElementById('reviewimagespopcaption');
	
    if (!back) { 
        alert('product_image_popup_show_image: reviewimagespopback not found');
        return;
    }

    if (image > 0) { 
        back.style.display = 'block';
    } else { 
        back.style.display = 'none';
		//add class to stop caption jumping around when arrows are hidden
		caption.className = "captionpadleft";
    }
    
    back.onclick = product_review_image_popup_show_image_back;
    
    forward = document.getElementById('reviewimagespopforward');
    if (!forward) { 
        alert('product_image_popup_show_image: reviewimagespopforward not found');
        return;
    }

    if (image < product_review_images[id].length - 1) { 
        forward.style.display = 'block';
    } else {
        forward.style.display = 'none';
		caption.className = "captionpadright";
    }

    forward.onclick = product_review_image_popup_show_image_forward;
    
    caption = document.getElementById('reviewimagespopcaption');
    if (!caption) {
        alert('product_image_popup_show_image: reviewimagespopcaption not found');
        return;
    }
    
    caption.innerHTML = product_review_images[id][image][0];

    ipc = document.getElementById('reviewimagespopclose');
    if (!ipc) { 
        alert('product_image_popup_show_image: reviewimagespopclose not found');
        return;
    }

	ipc.value = 'Back To Review';
    ipc.onclick = product_review_image_popup_show_image_close;

}

function product_image_popup_show_image_back()
{
    product_image_popup_show_image(product_image_popup_current_product, product_image_popup_current_image - 1);

    return false;
}

function product_image_popup_show_image_forward()
{
    product_image_popup_show_image(product_image_popup_current_product, product_image_popup_current_image + 1);
    
    return false;
}

function product_review_image_popup_show_image_back()
{
    product_review_image_popup_show_image(product_review_popup_current_review_id, product_image_popup_current_image - 1);

    return false;
}

function product_review_image_popup_show_image_forward()
{
    product_review_image_popup_show_image(product_review_popup_current_review_id, product_image_popup_current_image + 1);
    
    return false;
}

function product_review_image_popup_show_image_close()
{

    product_image_popup_current_product = false;
    product_image_popup_current_image = false;

	/* Close images popup */

    popup = document.getElementById('reviewimagespopup');

    if (!popup) { 
        alert('product_image_popup_show_image_close: reviewimagespopup not found');
        return;
    }

    popup.style.display = 'none';

/* Show reviews popup again */

    popup = document.getElementById('reviewspopup');

    if (!popup) { 
        alert('product_image_popup_show_image_close: reviewspopup not found');
        return;
    }

    popup.style.display = 'block';
	return false;

}

function _product_review_image_popup_show_image_close()
{
    product_image_popup_current_product = false;
    product_image_popup_current_image = false;
    
    popup = document.getElementById('reviewimagespopup');
    if (!popup) { 
        alert('product_image_popup_show_image_close: review_imagespopup not found');
        return;
    }
    
    popup.style.display = 'none';
	return false;
}

function product_image_popup_show_image_close()
{
    product_image_popup_current_product = false;
    product_image_popup_current_image = false;
    
    popup = document.getElementById('imagespopup');
    if (!popup) { 
        alert('product_image_popup_show_image_close: imagespopup not found');
        return;
    }
    
    popup.style.display = 'none';
}

product_map_popup_current_product = false;
product_map_popup_current_map     = false;
product_map_timer                 = false;

function product_map_popup_open()
{
    id = this.id.substr(15);

    // Close product image popup if it is open.
    product_image_popup_show_image_close();

    product_map_popup_current_product = id;
    product_map_popup_current_map     = 0;

    product_map_popup_show_map(0);
	


    popup = document.getElementById('mappopup');
    if (!popup) { 
        alert('product_map_popup_open: mappopup not found');
        return;
    }
	

    centerElement(popup, 540, 403);
 
    // move map popup away from form elements on right
    popup.style.left = (parseInt(popup.style.left) - 135) + 'px';
    popup.style.display = 'block';

}

function product_map_popup_show_map(map)
{
    if (map >= product_maps[product_map_popup_current_product].length) { 
        map = 0;
    }

    popup = document.getElementById('mappopup');
    if (!popup) { 
        alert('product_map_popup_open: mappopup not found');
        return;
    }

    mpclose = document.getElementById('mapspopclose');
    if (!mpclose) { 
        alert('product_map_popup_open: mapspopclose not found');
        return;
    }

    mpclose.onclick = product_map_popup_close;

    mpimg = document.getElementById('mapspopupimg');
    if (!mpimg) { 
        alert('product_map_popup_open: mapspopupimg not found');
        return;
    }
		

    mpimg.src =  product_maps[id][map];
	
	mpimg.onload = resizeBox;
	
    if (product_maps[product_map_popup_current_product].length > 1) { 
        product_map_timer = window.setTimeout('product_map_popup_show_map(' + (parseInt(map) + 1) + ')', 5000);
    }
	

}

product_review_popup_current_product = false;
product_review_popup_current_review   = false;
product_review_popup_current_review_id = false;

function product_review_popup_open(e)
{
    id = this.id.substr(18);

    product_map_popup_close();

    popup = document.getElementById('reviewspopup');
    if (!popup) { 
        alert('product_review_popup_open: imagespopup not found');
        return;
    }

    product_review_popup_show_review(id, 0);
	centerElement(popup, 520, 270);

    w = windowSize();
    width  = w.width;
    tleft = (width / 2) - (520/ 2);
    s = scrollXY();
    tleft += s.x;
	
	pd = document.getElementById('productdetail');
    if (!pd) { 
        alert('product_review_popup_open: productdetail not found');
        return;
    }
    
	o = getElementPosition(pd);
	popup.style.left = tleft - o.offsetLeft + 'px';
   	popup.style.display = 'block';	
}

function product_review_popup_show_review_close()
{
	product_review_popup_current_product = false;
	product_review_popup_current_review   = false;
	product_review_popup_current_review_id = false;

	popup = document.getElementById('reviewspopup');

	if (!popup) { 
        alert('product_review_popup_show_review_close: reviewspopup not found');
        return;
    }
    
    popup.style.display = 'none';
	return false;
}

function product_review_popup_show_review(id, review)
{
    if (product_reviews[id].length < review || review < 0) { 
        alert(product_reviews[id].length + '<' + review + ' || ' + review + ' < 0');
        return;
    }

    product_review_popup_current_product = id;
    product_review_popup_current_review  = review;
	product_review_popup_current_review_id = product_reviews[id][review][3];
	
	//added by leigh to reset scroll a top of page for next review
	reviewscrollwindow = document.getElementById('reviewspopupcont');
	reviewscrollwindow.scrollTop = 0;
	
//	alert('product ' + id + ' review index ' + review + ' has id ' + product_review_popup_current_review_id);
//	alert('num reviews = ' + product_reviews[id].length);

	var el_content_array = new Array('reviewspopup_customer_name','reviewspopup_customer_location','reviewspopup_review_text');
	var el;

	/* Add content to named elements above */

	for(i=0;i<el_content_array.length;i++) {

		var el = document.getElementById(el_content_array[i]);

		if (!el) { 
			alert('product_review_popup_show_review: ' + el_content_array[i] + ' not found');
			return;
		}

		el.innerHTML = product_reviews[id][review][i];

	}

  /*  sep = document.getElementById('reviewspopsep');

	if (!sep) { 
        alert('product_review_popup_show_review: reviewspopsep (seperator) not found');
        return;
    }
	
	if (review > 0 && (review < product_reviews[id].length - 1)) {
        sep.style.display = 'block';
    } else { 
        sep.style.display = 'none';
    }*/
	
	back = document.getElementById('reviewspopback');
   	back_img = document.getElementById('review_back_img_disabled');
   if (!back) { 
        alert('product_review_popup_show_review: reviewspopback not found');
        return;
    }

	if (review > 0) { 
        back.style.display = 'block';
		back_img.style.display = 'none';
    } else { 
       back.style.display = 'none';
	 	back_img.style.display = 'block';
    }
    
    back.onclick = product_review_popup_show_review_back;
    
    forward = document.getElementById('reviewspopforward');
	forward_img = document.getElementById('review_next_img_disabled');
 	if (!forward) { 
        alert('product_review_popup_show_review: reviewspopforward not found');
        return;
    }

    if (review < product_reviews[id].length - 1) { 
        forward.style.display = 'block';
    	forward_img.style.display = 'none';
	} else {
        forward.style.display = 'none';
		forward_img.style.display = 'block';
    }

    forward.onclick = product_review_popup_show_review_forward;

    images = document.getElementById('reviewspopimages');
    if (!forward) { 
        alert('product_review_popup_show_review: reviewspopimages not found');
        return;
    }

    if (product_review_images[product_review_popup_current_review_id].length > 0) { 
        images.style.display = 'block';
    } else {
        images.style.display = 'none';
    }

    images.onclick = product_review_image_popup_open;

    rpc = document.getElementById('reviewspopclose');
    if (!rpc) { 
        alert('product_review_popup_show_review: reviewspopclose not found');
        return;
    }
    rpc.onclick = product_review_popup_show_review_close;
}

function product_review_popup_show_review_back()
{
    product_review_popup_show_review(product_review_popup_current_product, product_review_popup_current_review - 1);

    return false;
}

function product_review_popup_show_review_forward()
{
    product_review_popup_show_review(product_review_popup_current_product, product_review_popup_current_review + 1);
    
    return false;
}

function product_review_popup_close()
{

    popup = document.getElementById('reviewspopup');
    if (!popup) { 
       
        return;
    }
    
    popup.style.display = 'none';

}

//function product_review_image_popup_open (e) {

//	alert('opening review images for review ' + product_review_popup_current_review_id);
//	product_review_image_popup_open();

//}

function resizeBox(){
	
	 popup = document.getElementById('mappopup');
	 if (!popup) { 
        alert('resizeBox: mappopup not found');
        return;
	}
	
	
	popup.style.width = this.width + 'px';
	popup.style.height = (parseInt(this.height) + 40) + 'px';
}

function product_map_popup_close()
{
    popup = document.getElementById('mappopup');
    if (!popup) { 
        alert('product_map_popup_close: mappopup not found');
        return;
    }
    
    window.clearTimeout(product_map_timer);

    popup.style.display = 'none';
}
 
function product_deck_plan_popup_open()
{
	deck_plan_id = this.id.substr(20);
			
	window.open(product_deck_plans[deck_plan_id], 'deck_plans' + deck_plan_id, 	            
                'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=800,height=800');
	return false;
}

function init_reviews_from_xml()
{	

	var prx = document.getElementById('productreviewsxml');
	if (!prx) { 
		//alert('hello1');
		return;
	}
	
	for (var obj = prx.firstChild; obj && (!obj.tagName || obj.tagName.toLowerCase() != 'reviews'); obj = obj.nextSibling) { 
		//alert('tagName: ' + obj.tagName);
	}

	if (!obj) { 
		alert('<reviews> not found');
		return;
	}
	
	// foreach review...
	
	for (var obj = obj.firstChild; obj; obj = obj.nextSibling) { 
		if (obj.nodeType != 1 || obj.tagName.toLowerCase() != 'review') { 
			continue;
		}

		var rid = obj.getAttribute('id');
		product_review_images[rid] = new Array();
		
		var fields = new Array();
		
		for (var tobj = obj.firstChild; tobj; tobj = tobj.nextSibling) { 
			
			if (tobj.nodeType != 1) { 
				continue;
			}
			
			var name = tobj.tagName;			
			var txt = '';

			for (var uobj = tobj.firstChild; uobj; uobj = uobj.nextSibling) {
				
				if (uobj.nodeType == 1) { 
					
					if (tobj.tagName.toLowerCase() == 'images' && uobj.tagName.toLowerCase() == 'review_image') { 
						
						var image_id = uobj.getAttribute('id');
						var imagesa = new Array();

						for (iobj = uobj.firstChild; iobj; iobj = iobj.nextSibling) { 
							if (iobj.nodeType == 1) {
								imagesa[iobj.tagName.toLowerCase()] = iobj.firstChild.nodeValue;
							}
						}									
						
						product_review_images[rid].push(new Array(imagesa['review_caption'],
						                                product_reviews_image_path + '/' + imagesa['image_name'],
														product_reviews_thumb_path + '/' + imagesa['thumb_name'] ));
					} else if (uobj.nodeValue) { 
						txt += '<' + uobj.tagName + '>' + uobj.nodeValue + '</' + uobj.tagName + '>';
					} else { 
						txt += '<' + uobj.tagName + ' />';
					}
					
				} else if (uobj.nodeType == 3) { 
					txt += uobj.nodeValue;
				}
				//alert('uobj: ' + uobj.nodeType);
			}	

			fields[name.toLowerCase()] = txt;
		}
		
		pid = parseInt(fields['product_id']);
		
		if (typeof(product_reviews[pid])=='undefined') {
			product_reviews[pid] = new Array();
		}
		
		product_reviews[pid].push(new Array(fields['customer_name'], fields['customer_location'], fields['review_text'], rid));
	}
}
