//Global JS functions for adding events and ajax cross browser
function addEvent(obj, evType, fn, useCapture){
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, useCapture);
		return true;
	}else if(obj.attachEvent){
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	}else{
		//error
	}
}

function featured_snapto(snapto){
	for(var x = 1; x <= featured_max; x++){
		if (x == snapto){
			document.getElementById('feat_img').src = featured_img[x];
			document.getElementById('feat_url').href = featured_url[x];
			document.getElementById('feat_blob_' + x).className = 'home-promo-box-selected';
			featured_selected = x;
		}else{
			document.getElementById('feat_blob_' + x).className = 'home-promo-box';
		}
	}
}

function featured_next(){
	if (featured_selected >= featured_max){
		featured_snapto(1);
	}else{
		featured_snapto(featured_selected + 1);
	}
}

function featured_prev(){
	if (featured_selected <= 1){
		featured_snapto(featured_max);
	}else{
		featured_snapto(featured_selected - 1);
	}
}

function featured_timer(){
	if (feat_mo == 0){
		featured_next();
	}
}

function featured_preload(){
	var imgpreload = new Array();
	for(var x = 1; x <= featured_max; x++){
		imgpreload[x] = new Image();
		imgpreload[x].src = featured_img[x];
	}
}

function featured_play(){
	featured_interval = setInterval("featured_timer()",3000);
}

function featured_pause(){
	clearInterval(featured_interval);
}

var featured_selected = 1;
var feat_mo = 0;
var featured_interval = 0;

function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		ro = new XMLHttpRequest();
	}
	return ro;
}

function nocache(){
	var d = new Date();
	return ((d.getTime())*1)
}

function is_child(parent_name, child_ele){
	if (child_ele.tagName != 'BODY'){
		if (child_ele.id == parent_name){
			return true;
		}else{
			return is_child(parent_name, child_ele.parentNode);
		}
	}else{
		return false;
	}
}

//end global functions

// Delete contents of a text box
function del_contents(ele, text){
	if (ele.value == text){
		ele.value = "";
	}
}
// ... then add them back in
function add_contents(ele, text){
	if (ele.value == ""){
		ele.value = text;
	}
}

//start ajax search
var search_obj = createRequestObject();
var search_sent = 0;

function search_type(ele){
	if (ele.value.length <= 2){
		document.getElementById('search_results').innerHTML = '&nbsp;';
	}else{
		//Category
		var catdd = document.getElementById('q_cat');
		var catid = catdd.options[catdd.selectedIndex].value;
		//Brand
		//var branddd = document.getElementById('q_brand');
		//var brandid = branddd.options[branddd.selectedIndex].value;
		
		search_obj.abort();
		search_obj.open('get', PATH + 'ajax_search.php?q=' + ele.value + '&q_cat=' + catid + '&nocache=' + nocache());
		search_obj.onreadystatechange = search_response;
		search_obj.send(null);
	}
}

function search_response(){
	if(search_obj.readyState == 4){
		if(search_obj.status == 200){
			search_show();
			document.getElementById('search_results').innerHTML = search_obj.responseText;
		}
	}
}

var recent_click_obj = '';

addEvent(document,"click",hide_menus);

function hide_menus(event){
	if (!event){
        event = window.event;
    }
	target = event.target ? event.target : event.srcElement;
	
	recent_click_obj = target;
	if(document.getElementById('search_results_container')){
		if (is_child('search',recent_click_obj) != true){
			search_hide();
		}
	}
	if(document.getElementById('find_filter_results')){
		if (is_child('find_filter_results',recent_click_obj) != true){
			document.getElementById('find_filter_results').style.display='none';
		}
	}
}

function search_show(){
	document.getElementById('search_results_container').style.display = 'block';
}

function search_hide(){
	document.getElementById('search_results_container').style.display = 'none';
	document.getElementById('search_results').innerHTML = '&nbsp;';
}
//end ajax search

//side tabs

function side_tab(tabid){
	if (tabid == 2){
		document.getElementById('side_tab_1').className = 'side_tab_featured';
		document.getElementById('side_tab_2').className = 'side_tab_top_sellers_sel';
		document.getElementById('side_tab_content_1').style.display = 'none';
		document.getElementById('side_tab_content_2').style.display = 'block';
	}else{
		document.getElementById('side_tab_1').className = 'side_tab_featured_sel';
		document.getElementById('side_tab_2').className = 'side_tab_top_sellers';
		document.getElementById('side_tab_content_1').style.display = 'block';
		document.getElementById('side_tab_content_2').style.display = 'none';
	}
}

//dropdown menu

function m_over(ele){
	for (var i=0; i<ele.childNodes.length; i++) {
		node = ele.childNodes[i];
		if (node.nodeName=="DIV") {
			if (node.className == 'submenu'){
				ele.className = 'category_level1_hover ';
				node.style.display='block';
			}
		}
	}
}

function m_out(ele){
	for (var i=0; i<ele.childNodes.length; i++) {
		node = ele.childNodes[i];
		if (node.nodeName=="DIV") {
			if (node.className == 'submenu'){
				ele.className = 'category_level1';
				node.style.display='none';
			}
		}
	}
}

/* image preloading
img_src = Array(
"/images/add_to_basket_hover.jpg",
"/images/add_to_basket_listing_hover.jpg",
"/images/button_vsmall_hover.jpg",
"/images/button_small_hover.jpg",
"/images/button_med_hover.jpg",
"/images/button_signup_hover.jpg",
"/images/button_enquiry_hover.jpg",
"/images/button_large_hover.jpg"
);

img_array = new Array();

for (counter in img_src) {
	img_array[counter] = new Image();
	img_array[counter].src = img_src[counter];
}*/

/* disabled on this site 
// Product Scroller
var scroll_size = 20;
var scroll_time = 50;
var scroll_flag = 0;

function scroll_left_start(){
	scroll_flag = setInterval('scroll_left()',scroll_time);
}
function scroll_right_start(){
	scroll_flag = setInterval('scroll_right()',scroll_time);
}
function scroll_end(){
	clearInterval(scroll_flag);
}

function scroll_left(){
	var outer = document.getElementById('scroller_outer');
	outer.scrollLeft = (parseInt(outer.scrollLeft) - scroll_size);
	if (parseInt(outer.scrollLeft) < scroll_size){
		outer.scrollLeft = 0;
		scroll_end();
	}
}
function scroll_right(){
	var outer = document.getElementById('scroller_outer');
	outer.scrollLeft = (parseInt(outer.scrollLeft) + scroll_size);
	if (outer.scrollLeft > (outer.scrollWidth - scroll_size)){
		outer.scrollLeft = outer.scrollWidth;
		scroll_end();
	}
}
*/
var hide_child = 0;
var hide_child_timer = 0;
var hide_child_l2 = 0;
var hide_child_timer_l2 = 0;

var menu_displayed = new Array;
function menu_child_select(child_id, level, exclude_selected){
	if (menu_displayed[level] > 0){
		menu_child_hide(menu_displayed[level], level, 0);
	}
	if (level == 1){
		if (menu_displayed[2] > 0){
			menu_child_hide(menu_displayed[2], 2, 0);
		}	
	}
	clearTimeout(hide_child_timer);
	clearTimeout(hide_child_timer_l2);
	menu_displayed[level] = child_id;
	if (!exclude_selected){
		document.getElementById('menu_item_' + child_id).className = 'menu_item_selected';
	}
	if (document.getElementById('menu_' + child_id)){
		document.getElementById('menu_' + child_id).style.display='block';
	}
}

function menu_child_hide_timed(child_id, level){
	if (level == 1){
		hide_child = child_id;
		clearTimeout(hide_child_timer);
		hide_child_timer = setTimeout("menu_child_hide(" + child_id + "," + level + ",1)",500);
	}else{
		hide_child_l2 = child_id;
		clearTimeout(hide_child_timer_l2);
		hide_child_timer_l2 = setTimeout("menu_child_hide(" + child_id + "," + level + ",1)",500);
	}
}

function menu_child_hide(child_id, level, showdefault){
	document.getElementById('menu_item_' + child_id).className = '';
	if (document.getElementById('menu_' + child_id)){
		document.getElementById('menu_' + child_id).style.display='none';
	}
	if (showdefault){
		menu_child_select(menu_l1_selected,1,1);
		menu_child_select(menu_l2_selected,2,1);
	}
}

function menu_hide_level(level){
	if (menu_displayed[level] > 0){
		menu_child_hide(menu_displayed[level], level);
	}
}

function menu_child_keep(menuid, level){
	if (level == 2){
		clearTimeout(hide_child_timer_l2);
	}
	clearTimeout(hide_child_timer);
}

function toggle_filters(){
	if(document.getElementById('filters').style.display=='none'){
		document.getElementById('filters').style.display='block';
		document.getElementById('filters_header').innerHTML='Refine Your Results <img src="' + IMAGE_PATH + 'filters_contract.png" alt="Hide filters" align="right" class="img_valign" />';
	}else{
		document.getElementById('filters').style.display='none';
		document.getElementById('filters_header').innerHTML='Refine Your Results <img src="' + IMAGE_PATH + 'filters_expand.png" alt="Show filters" align="right" class="img_valign" />';
	}
}

function show_cart(){
	document.getElementById('cart_mini').style.display='block';
	document.getElementById('menu_product_search_basket').className='mini_cart_link_open';
}

function hide_cart(){
	document.getElementById('cart_mini').style.display='none';
	document.getElementById('menu_product_search_basket').className='mini_cart_link';
}

var overlay_obj = createRequestObject();
var overlay_sent = 0;

function overlay_show(lurl){
	overlay_obj.abort();
	overlay_obj.open('get',  PATH + 'olay/' + lurl + '&nocache=' + nocache());
	overlay_obj.onreadystatechange = overlay_show_response;
	overlay_obj.send(null);
	return false;
}

function overlay_show_response(){
	if(overlay_obj.readyState == 4){
		if(overlay_obj.status == 200){
			document.getElementById('olay_content').innerHTML = overlay_obj.responseText;
			document.getElementById('olay').style.display = '';
		}
	}
}

function overlay_hide(){
	document.getElementById('olay').style.display = 'none';
}

function toggle_sub_cats(ele_id, bg_class){
	if(document.getElementById('js_container_block_' + ele_id).style.display=='none'){
		document.getElementById('js_container_block_' + ele_id).style.display = 'block';
		if(bg_class){
			document.getElementById('js_top_cat_' + ele_id).className = bg_class + ' js_cat_menu_open';
		}
		document.getElementById('js_top_cat_' + ele_id).title = 'Click (-) to hide this section';
	}else{
		document.getElementById('js_container_block_' + ele_id).style.display = 'none';
		if(bg_class){
			document.getElementById('js_top_cat_' + ele_id).className = bg_class + ' js_cat_toggle';
		}
		document.getElementById('js_top_cat_' + ele_id).title = 'Click (+) to expand this section';
	}
}

function toggle_sub_lists(ele_id, bg_class){
	if(document.getElementById('js_list_container_block_' + ele_id).style.display=='none'){
		document.getElementById('js_list_container_block_' + ele_id).style.display = 'block';
		if(bg_class){
			document.getElementById('js_top_cat_' + ele_id).className = bg_class + ' js_cat_menu_open';
		}
		document.getElementById('js_top_cat_' + ele_id).title = 'Click (-) to hide this section';
	}else{
		document.getElementById('js_list_container_block_' + ele_id).style.display = 'none';
		if(bg_class){
			document.getElementById('js_top_cat_' + ele_id).className = bg_class + ' js_cat_toggle';
		}
		document.getElementById('js_top_cat_' + ele_id).title = 'Click (+) to expand this section';
	}
}


// listing page - update properties
var prop_obj = createRequestObject();
var prop_sent = 0;

function update_properties(opt_id){
	prop_obj.abort();
	prop_obj.open('get',  PATH + 'ajax_properties.php?opt_id=' + opt_id + '&nocache=' + nocache());
	prop_obj.onreadystatechange = update_propertes_response;
	prop_obj.send(null);
}

function update_propertes_response(){
	if(prop_obj.readyState == 4){
		if(prop_obj.status == 200){	
			document.getElementById('properties').innerHTML = prop_obj.responseText;
		}
	}
}

// listing page - update properties
var thumbs_obj = createRequestObject();
var prop_sent = 0;

function update_thumbs(opt_id){
	thumbs_obj.abort();
	thumbs_obj.open('get',  PATH + 'ajax_thumbs.php?opt_id=' + opt_id + '&nocache=' + nocache());
	thumbs_obj.onreadystatechange = update_thumbs_response;
	thumbs_obj.send(null);
}

function update_thumbs_response(){
	if(thumbs_obj.readyState == 4){
		if(thumbs_obj.status == 200){	
			document.getElementById('listing_img_thumbs').innerHTML = thumbs_obj.responseText;
		}
	}
}

//listing page - update main image
function update_image(seloption, imgmain, imglarge){
	if (seloption){
		document.getElementById('listing_main').src=OPT_image[seloption];
		document.getElementById('listing_main_link').href=OPT_imagebig[seloption];
	}else{
		document.getElementById('listing_main').src=imgmain;
		document.getElementById('listing_main_link').href=imglarge;
	}
	myLightbox.updateImageList();
}

//product list - adjust row heights
function height_correct(container){
	var height_max = 0;
	var height_cur = 0;
	var rowele = new Array();
	var z = 0;
	var cont = document.getElementById(container);
	for(var x=0; x < cont.childNodes.length; x++){
		for(var y=0; y < cont.childNodes[x].childNodes.length; y++){
			var curele = cont.childNodes[x].childNodes[y]
			if (curele.nodeName == 'DIV'){
				if (curele.className.indexOf('prod_text') > -1){
					rowele[z] = curele;
					z++;
					height_cur = parseInt(curele.offsetHeight);
					if (height_cur > height_max){
						height_max = height_cur;
					}
				}
			}
		}
		var curele = cont.childNodes[x];
		if (curele.nodeName == 'DIV'){
			if (curele.className.indexOf('clear') > -1){
				for(z=0; z < rowele.length; z++){
					rowele[z].style.height = height_max + 'px';
				}
				height_max = 0;
				z = 0;
				var rowele = new Array();
			}
		}
	}
}

function height_correct_class(className){
	var highest = 0;
	var height = 0;
	$(className).each(function(){
		height = $(this).height();
		if(height > highest){
			highest = height;	
		}
	});
	$(className).height(highest);
}

//custom filter search
var filter_obj = createRequestObject();

function ajax_find_filter(ele){
	filter_obj.abort();
	filter_obj.open('get', PATH + 'ajax_filter.php?phrase=' + ele.value + '&nocache=' + nocache());
	filter_obj.onreadystatechange = ajax_find_filter_response;
	filter_obj.send(null);
}

function ajax_find_filter_response(){
	if(filter_obj.readyState == 4){
		if(filter_obj.status == 200){
			document.getElementById('find_filter_results').style.display='block';
			document.getElementById('find_filter_results').innerHTML = filter_obj.responseText;
		}
	}
}

function wait(msecs)
{
var start = new Date().getTime();
var cur = start
while(cur - start < msecs)
{
cur = new Date().getTime();
}	
} 
