var in_ie_hell = false;
var in_ie6_hell = false;
var cur_page_size;

window.addEvent('domready', function() {
	if(Browser.Engine.trident==true) { 
		in_ie_hell=true; 
		if(Browser.version.toInt()<7) {
			in_ie6_hell = true;
		}
	}
	to_toppers();
	init_slideshows();
	activate_calendar();
	init_vid_links();
	center_right_arrows();
	toggle_calendar();
	// PREVENT TICKET LINKS (temp) $$('a.show_tickets').addEvent('click', function() { return false; });
	check_at_links();
	check_text_dividers();
});
window.addEvent('load', function() {
	init_home_highlighter();	
});

function check_next_year_shows() {
	if($('show_next_year_shows')!=null) {
		var next_shows_div = $('next_year_shows');
		next_shows_div.setStyle('display', 'none');
		$('show_next_year_shows').addEvent('click', function() {
			if(next_shows_div.getStyle('display')=='none') {
				next_shows_div.setStyle('display', 'block');
			} else {
				next_shows_div.setStyle('display', 'none');
			}
			return false;
		});
	}
}

var site_calendar_links, calendar_highlighter, cal_title, cal_location, cal_link;
function activate_calendar() {
	
	site_calendar_links = $$('table#calendar_table a');
	calendar_highlighter = $('calendar_highlight');
	
	cal_title = $('cal_highlight_title');
	cal_location = $('cal_highlight_location');
	cal_link = $('cal_highlight_more');
	
	site_calendar_links.addEvent('mouseover', function() { show_cal_highlight(this); });
	site_calendar_links.addEvent('click', function() { show_cal_highlight(this); });
}
function show_cal_highlight(link) {
	cal_title.innerHTML = link.title;
	cal_location.innerHTML = link.rel;
	cal_link.href = link.href;
	calendar_highlighter.setStyle('display', 'block');
	// SHOW HIGHLIGHT
	site_calendar_links.each(function(site_calendar_link, index) {
		if(site_calendar_link.href==link.href) {
			site_calendar_link.getParent('td').addClass('highlighted');		
		} else {
			site_calendar_link.getParent('td').removeClass('highlighted');		
		}
	});
}

function to_toppers() {
	$$('a.to_top').addEvent('click', function() {
		var scroll_to_top = new Fx.Scroll(document.window).toTop();
		return false;
	});
}

/* ////////////// DEFAULT VALUES UIT INPUTS HALEN ON FOCUS ///////////// */
function activate_auto_fillers() {
	var set_inputs = $$('input.autofill');
	set_inputs.each(function(input_field, index) {
		input_field.his_set_value = input_field.value;
		input_field.addEvent('focus', function() {
			if(input_field.value==input_field.his_set_value) {
				input_field.value='';
			}
		});
		input_field.addEvent('blur', function() {
			if(input_field.value=='') {
				input_field.value=input_field.his_set_value;
			}
		});
	});
}

function center_right_arrows() {
	var right_arrow_holders = $$('#items_overview .overview_item');
	right_arrow_holders.each(function(right_arrow_holder, index) {
		var holder_dims = right_arrow_holder.getSize();
		var holder_h = holder_dims.y.toInt();
		var his_arrow = right_arrow_holder.getChildren('.arrow_right')[0];
		his_arrow.setStyle('top', (holder_h / 2)-10);
	});
	check_next_year_shows();	
}

function init_home_highlighter() {
	if($('highlighted_items')!=null) {
		var highlighted_height = 0;
		var EL_highlighted_items = $('highlighted_items');
		var highlighted_divs = $$('#highlighted_items div.overview_item');
		highlighted_divs.each(function(highlighted_div, index) {
			var div_h = highlighted_div.getSize().y;
			if(div_h>highlighted_height) {
				highlighted_height = div_h;
			}
		});
		// ALLEMAAL EVEN HOOG MAKEN
		highlighted_divs.each(function(highlighted_div, index) {
			highlighted_div.setStyle('height', highlighted_height);
		});		
		EL_highlighted_items.setStyle('height', highlighted_height);
		make_fading_slideshow(EL_highlighted_items, 'div.overview_item');
	}
}

///////////////////////////////////////////////////////////////////////
///////////// READ MORE / LESS TEXT /////////////////////////////////
/////////////////////////////////////////////////////////////////////
function check_text_dividers() {
	if($$('div.read_more_text').length>0) {
		$$('div.read_more_text').each(function(read_more_div, index) {
			var read_more_div_ID = read_more_div.id;
			read_more_div.store('more_link', $('more_'+read_more_div_ID));
			read_more_div.store('less_link', $('less_'+read_more_div_ID));
			read_more_div.setStyle('display', 'none');
			read_more_div.retrieve('more_link').addEvent('click', function() {
				read_more_div.setStyle('display', 'block');
				read_more_div.retrieve('more_link').setStyle('display', 'none');
				return false;
			});
			read_more_div.retrieve('less_link').addEvent('click', function() {
				read_more_div.setStyle('display', 'none');
				read_more_div.retrieve('more_link').setStyle('display', 'block');
				return false;
			});
		});
	}
}
///////////////////////////////////////////////////////////////////////
///////////// FADING SLIDESHOW /////////////////////////////////
/////////////////////////////////////////////////////////////////////
var page_galleries;
function init_slideshows() {
	page_galleries = $$('.gallery');
	page_galleries.each(function(gal, index) {
		var gal_id = gal.id;
		make_fading_slideshow($(gal_id), 'div.slideshow_slide');
	});
}


var gallery_slide_interval = 4000;
var highlighted_interval = 6000;
var fade_speed = 500;
var news_ticker_fade_speed = 500;
var slides_z_index = 0;
var fade_delay;
var auto_play;
var slideshow_auto_play = false;

function make_fading_slideshow(slideshow_holder, element_tag) {
	var slideshow_holder_id = slideshow_holder.id;
	var slides = $$('#'+slideshow_holder_id+' '+element_tag);
	var num_slides = slides.length;
	slideshow_holder.slides_z_index = num_slides;
	
	slideshow_holder.his_slides = slides; 
	slideshow_holder.num_slides = num_slides; 
	slideshow_holder.cur_index = 0;
	
	var has_thumb_slider = false;
	
	var slideshow_thumbs = $$('#'+slideshow_holder_id+' a.show_gal_slide');
	if(slideshow_thumbs.length>0) {
		has_thumb_slider = true;
		slideshow_holder.slide_thumb_holder = $('gallery_thumbs');
		slideshow_holder.thumb_hold_w = slideshow_holder.slide_thumb_holder.getStyle('width').toInt();
		
		slideshow_holder.slide_thumbs_ul = slideshow_holder.slide_thumb_holder.getChildren('ul')[0];
		slideshow_holder.slide_thumbs_ul_w = slideshow_holder.slide_thumbs_ul.getStyle('width').toInt();

		slideshow_holder.slide_thumbs_lis = slideshow_holder.slide_thumbs_ul.getChildren('li');
		slideshow_holder.slide_thumb_links = $$('#'+slideshow_holder_id+' '+'a.show_gal_slide');
		// alert('thumb_hold_w = '+slideshow_holder.thumb_hold_w+ ' slide_thumbs_ul_w: ' +slideshow_holder.slide_thumbs_ul_w)
		
		slideshow_holder.slide_thumb_links.each(function(slide_thumb_link, index) {
			slide_thumb_link.store('his_index', index);
			slide_thumb_link.store('his_par_left', slideshow_holder.slide_thumbs_lis[index].getStyle('left').toInt());
			slide_thumb_link.store('his_holder', slideshow_holder);
			slide_thumb_link.addEvent('click', function() {
				show_slide(slideshow_holder, this.retrieve('his_index'));
				return false;
			});
		});
		
	}
	/*
	thumb links each... 
	- zet index
	- store parent left position
	- on click, show large slide.. + scroll als nodig
	
	// prev next buttons: scrollen thumbscroller mee, indien nodig
	
	*/
	var top_pos, left_pos;
	top_pos = left_pos = 0;
	if(document.body.id!='home') { left_pos = 95; }
	slides.each(function(slide, index) {
		slide.store('his_index', index);
		slide.store('his_z_index', num_slides);
		slide.setStyles({
			position: 'absolute',
			top: top_pos,
			left: left_pos,
			'z-index': num_slides
		});
		num_slides--;
	});

	// CONTROL BUSINESS  / FADE
	slideshow_holder.store('fading', false);
	slideshow_holder.store('auto_play', true);
	var slide_interval = gallery_slide_interval;
	if(slideshow_holder_id=='highlighted_items') { slide_interval = highlighted_interval; }
	slideshow_holder.store('fade_interval', slide_interval);
	
	if(slideshow_holder_id=='intro_slideshow') {	
		slideshow_holder.store('auto_play', true);
	}
	var slideshow_controls = $$('#'+slideshow_holder_id+' a.slider_control');
	slideshow_holder.store('gallery_controls', slideshow_controls);
	if(slideshow_controls.length>0) {
		slideshow_holder.retrieve('gallery_controls').each(function(slide_control, index) {
			if(slide_control.hasClass('prev_slide')) {
				slide_control.addEvent('click', function() {
					var show_is_fading = slideshow_holder.retrieve('fading');
					if(show_is_fading==false) {
						fade_slide_V2(slideshow_holder, 'prev');
					}
					if(slideshow_holder.retrieve('auto_play')==true) {
						// PREVENT AUTO FADING
						// slideshow_holder.store('auto_play', false);
						// clearTimeout(slideshow_holder.retrieve('fade_delay'));
					}
					return false;
				});			
			} else if(slide_control.hasClass('next_slide')) {
				slide_control.addEvent('click', function() {
					var show_is_fading = slideshow_holder.retrieve('fading');
					if(show_is_fading==false) {
						fade_slide_V2(slideshow_holder, 'next');
					}
					if(slideshow_holder.retrieve('auto_play')==true) {
						// PREVENT AUTO FADING
						// slideshow_holder.store('auto_play', false);
						// clearTimeout(slideshow_holder.retrieve('fade_delay'));
					}
					return false;
				});
			}
		});
	}
	if(slideshow_holder.retrieve('auto_play')==true) {
		// slideshow_holder.store('auto_play', false);
		slideshow_holder.store('fade_delay', fade_slide_V2.delay(slideshow_holder.retrieve('fade_interval'), slideshow_holder));
	} else {
		slideshow_holder.store('auto_play', false);
	}
}
function show_slide(slideshow_holder, slide_index) {
	fade_slide_V2(slideshow_holder, 'none', slide_index);
}
function fade_slide_V2(active_slideshow, slideshow_direction, slide_to_show_index) {
	
	if(active_slideshow==undefined) {
		active_slideshow = this;
	}
	active_slideshow.slides_z_index++;
	if(typeof slide_to_show_index=='undefined') {
		slide_to_show_index = -1;
	}
	if(slideshow_direction==undefined) {
		slideshow_direction = 'next';
	}
	if(active_slideshow.id=='news_ticker') {
		active_slideshow.store('this_fade_speed', news_ticker_fade_speed);
	} else {
		active_slideshow.store('this_fade_speed', fade_speed);
	}
	var NEXT_reset_top = false;
	var PREV_reset_top = false;
	var cur_index = active_slideshow.cur_index;
	var slides = active_slideshow.his_slides;
	var num_slides = active_slideshow.num_slides;
	var next_index;
	
	if(slide_to_show_index!=-1) {
		next_index = slide_to_show_index;
	} else if(slideshow_direction=='next') {
		if((cur_index+1)<num_slides) {
			next_index = cur_index+1;
		} else {
			next_index = 0;
		}	
	} else if(slideshow_direction=='prev') {
		if(cur_index==0) {
			next_index = num_slides - 1;
		} else {
			next_index = cur_index - 1;					
		}
	}
	// output('next_index = '+next_index+' | cur_index = '+cur_index)
	if(next_index!=cur_index) {
		active_slideshow.store('fading', true);
		// ZET SLIDE TO SHOW: OPACITY 0, Z-INDEX MAX
		slides[next_index].setStyles({
			opacity: 0,
			'z-index': active_slideshow.slides_z_index
		});
		if(in_ie_hell==true) { slides[next_index].setStyle('display', 'block'); }
		top_opacity_start = 0;
		top_opacity_end = 1;
		update_gallery_scroll_position(active_slideshow, next_index);
		// if(active_slideshow.id=='page_slideshow') {	output('cur_index = '+cur_index+' | next_index = '+next_index); }
	
		var fade_top = new Fx.Tween(slides[next_index], {property: 'opacity', duration: active_slideshow.retrieve('this_fade_speed')});
		fade_top.start(top_opacity_start, top_opacity_end).chain(
				function(){ 
					if(in_ie_hell==true) { slides[cur_index].setStyle('display', 'none'); }
					active_slideshow.cur_index = next_index;
					active_slideshow.store('fading', false);
					var this_auto_play = active_slideshow.retrieve('auto_play');
					if(this_auto_play==true) {
						clearTimeout(active_slideshow.retrieve('fade_delay'));
						active_slideshow.store('fade_delay', fade_slide_V2.delay(active_slideshow.retrieve('fade_interval'), active_slideshow));
					}
				}
		);
	}
}
function update_gallery_scroll_position(slideshow, cur_index) {
	var slideshow_th_list = slideshow.slide_thumbs_ul;
	var slideshow_th_hold_w = slideshow.thumb_hold_w;
	var slideshow_th_list_w = slideshow.slide_thumbs_ul_w;
	if(slideshow_th_list_w>slideshow_th_hold_w) {
		var th_left = slideshow.slide_thumb_links[cur_index].retrieve('his_par_left');
		var slide_to_pos = 0;
		if(slideshow_th_hold_w + th_left<slideshow_th_list_w) {
			slide_to_pos = -1 * th_left;
		} else {
			slide_to_pos = slideshow_th_hold_w - slideshow_th_list_w;
		}
		var slide_thumbs_list = new Fx.Tween(slideshow_th_list, {property: 'left', duration: 200});
		slide_thumbs_list.start(slideshow_th_list.getStyle('left').toInt(), slide_to_pos);
	}
	
}
////////////////////////////////////////////////////////////////////////////////
/////////////////// MODAL BUSINESS ///////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function get_page_size(){
	var scroll_position = window.getScroll();
	scroll_x = scroll_position.x;
	scroll_y = scroll_position.y;

	var body_size =	$(document.body).getScrollSize();
	body_w = body_size.x;
	body_h = body_size.y;
	
	var window_size = window.getSize();
	window_w = window_size.x;
	window_h = window_size.y;
	
	// for small pages with total height less then height of the viewport
	if(body_h < window_h){
		page_h = window_h;
	} else { 
		page_h = body_h;
	}

	// for small pages with total width less then width of the viewport
	if(scroll_x < window_w){	
		page_w = window_w;
	} else {
		page_w = body_w;
	}
	var page_size_object = new Object();
	page_size_object.page_w = page_w;
	page_size_object.page_h = page_h;
	page_size_object.window_w = window_w;
	page_size_object.window_h = window_h;
	return page_size_object;
}

function check_modal_links() {
	var modal_form_links = $$('a.modal_form');
	modal_form_links.addEvent('click', function() {
		show_form_modal(this);
		return false;
	});
}

function show_form_modal(the_link) {
	// LINK DATA
	var link_data = return_string_relevant_info(the_link.href);
	var form_type = link_data[0];
	var extra_query_string='';
	if(link_data.length>2) {
		// #bestel_publicatie-54 
		var item_id = link_data[1];
		var ref_url = unescape(link_data[2]);
		extra_query_string = '&id='+item_id;
	} else {
		// #buy_multiple_contact
		var ref_url = unescape(link_data[1]);
	}
	// SHOW LOADER
	link_insert_loader(the_link);
	// INSERT MODAL HOLDING HTML
	insert_modal_html();
	// MODAL ID
	modal_to_show = 'form_modal';
	// LOAD FILE
	var load_file = '_inc/_content_readers/load_ajax.inc.php?part='+form_type+'&modal_id='+modal_to_show+'&ref_url='+ref_url+extra_query_string;
	// MAKE ZE CALL
	sendRequest(load_file, handle_form_request);
}

function return_string_relevant_info(the_link) {
	var full_href_string = the_link.toString();
	var string_length = full_href_string.length;
	var bracket_index = full_href_string.indexOf("#");
	var relevant_info = full_href_string.substring((bracket_index+1), string_length);
	var relevant_info_array = relevant_info.split('-');
	// REF URL: 
	var ref_url = full_href_string.substring(0, bracket_index);
	relevant_info_array.push(ref_url); 
	return relevant_info_array;
}
function check_at_links() {
	var at_links = $$('a.at_live');
	at_links.addEvent('click', function() {
		at_modal(this);
		return false;
	})
}
var at_iframe_html;
function at_modal(link) {
	var iframe_src = link.href; // 'http://go.mediamogul.nl/NL/speellijst-tickets/';//
	// INSERT MODAL HOLDING HTML
	insert_modal_html();
	// MODAL ID
	modal_to_show = 'at_modal';
	var html_to_show = '<div id="'+modal_to_show+'" class="page_modal"><a class="closer" id="close_modal" href="#close">X</a><iframe src="'+iframe_src+'" width="625" height="475" frameborder="0"></iframe></div>';
	var container = document.getElementById('modal_holder');
	container.innerHTML = html_to_show;
	launch_modal(modal_to_show);
}

function init_vid_links() {
	var vid_links = $$('a.show_video');
	vid_links.addEvent('click', function() {
		pop_up_video(this);
		return false;
	})
}
var vid_iframe_html;
function pop_up_video(link) {
	var vid_data = link.rel.split('###');
	var vid_type = vid_data[0];
	var vid_id = vid_data[1];
	vid_iframe_html = get_video_iframe_code(vid_type, vid_id, 540, 405);
	// INSERT MODAL HOLDING HTML
	insert_modal_html();
	// MODAL ID
	modal_to_show = 'video_modal';
	var html_to_show = '<div id="'+modal_to_show+'" class="page_modal">'+vid_iframe_html+'</div>';
	var container = document.getElementById('modal_holder');
	container.innerHTML = html_to_show;
	launch_modal(modal_to_show);
}
function get_video_iframe_code(type, video_id, vid_w, vid_h) {
	var iframe_code;
	if(type=='youtube') {
		iframe_code = '<iframe src="http://www.youtube.com/embed/'+video_id+'" width="'+vid_w+'" height="'+vid_h+'" frameborder="0"></iframe>';
	} else if(type=='vimeo') {
		iframe_code = '<iframe src="http://player.vimeo.com/video/'+video_id+'" width="'+vid_w+'" height="'+vid_h+'" frameborder="0"></iframe>';
	}
	return iframe_code;	
}
////////////////////////////////////////////////////
/////////////// TOGGLE CALENDAR MO INFO //////////////////////////
////////////////////////////////////////////////////
var cal_items;
function toggle_calendar() {
	cal_items = $$('div.cal_item_show');
	if(cal_items.length>0) {
		cal_items.each(function(cal_item, index) {
			
			cal_item.store('his_header', cal_item.getChildren('div.calendar_item_header')[0]);
			cal_item.store('his_more_info', cal_item.getChildren('div.calendar_more_info')[0]);
			if(!cal_item.hasClass('active_cal_item')) {
				cal_item.retrieve('his_more_info').setStyle('display', 'none');
			}
			cal_item.store('his_index', index);
			cal_item.retrieve('his_header').addEvent('click', function() {
				toggle_calendar_items(cal_item.retrieve('his_index'));
			});
		});
	}
}

function toggle_calendar_items(item_index) {

	cal_items.each(function(cal_item, index) {
		var his_item = cal_item.retrieve('his_more_info');
		if(index==item_index) {
			if(his_item.style.display=='none') {
				his_item.style.display='block';
				cal_item.addClass('active_cal_item');
			} else {
				his_item.style.display='none';
				cal_item.removeClass('active_cal_item');
			}
		} else {
			his_item.style.display='none';
			cal_item.removeClass('active_cal_item');
		}	
	});
}

var modal_to_show = '';
var modal_pic_height=0;
var image_to_enlarge;

function insert_modal_html() {
	// INSERT HTML AT TOP OF PAGE
	var body_tag = document.getElementsByTagName("body").item(0);
	// -- MODAL
	var page_modal = document.createElement("div");
	page_modal.setAttribute('id','modal_holder');
	body_tag.insertBefore(page_modal, body_tag.firstChild);
	// -- OVERLAY
	var overlay_div = document.createElement("div");
	overlay_div.setAttribute('id','overlay');
	body_tag.insertBefore(overlay_div, page_modal.nextSibling);
}

/* -----------------------------------------------------
	SHOW LOADING FUNCTIONS
 -----------------------------------------------------*/
var active_loading_link;
var active_loading_link_html;
var ajax_loader_html = ' <img src="_img/ajax_loader.gif" alt="Loading..." border="0" />';

function link_insert_loader(the_link) {
	active_loading_link = the_link;
	active_loading_link_html = the_link.innerHTML;
	the_link.innerHTML = active_loading_link_html + ajax_loader_html;
}
function hide_inserted_loader() {
	if((active_loading_link!='') && (active_loading_link!=null)) {
		active_loading_link.innerHTML = active_loading_link_html;
	} 
}
/* -----------------------------------------------------
	INSTANT EDIT CALLBACK FUNCTIONS
 -----------------------------------------------------*/

function handle_form_request(req) {
	var html_to_show = req.responseText;
	var container = document.getElementById('modal_holder');
	container.innerHTML = html_to_show;
	hide_inserted_loader();
	launch_modal(modal_to_show);
}

function show_overlay(overlay_height_int) {
	var overlay_height = overlay_height_int + 'px';
	overlay_div.setStyle('height', overlay_height);
	overlay_div.setStyle('display', 'block');
	overlay_div.setStyle('opacity', '0');
	overlay_div.fade(0, 1);
}
/* -----------------------------------------------------
	LAUNCH MODAL
 -----------------------------------------------------*/

function launch_modal(modal_to_display) {

	cur_page_size=get_page_size();

	var target_modal_div = $(modal_to_display);
	// ZET OP ZICHTBAAR
	target_modal_div.setStyle('opacity', '0');
	target_modal_div.style.display = "block";
	//  MODAL DIMENSIONS
	var modal_size = target_modal_div.getSize();
	var modal_div_w = modal_size.x;
	var modal_div_h = modal_size.y;
	
	var page_height = cur_page_size.page_h;
	var overlay_height = page_height;
	if(modal_div_h>page_height) {
		overlay_height = modal_div_h;
	}	
	// CENTER THE MODAL AND MAKE SURE LEFT AND TOP VALUES ARE NOT NEGATIVE
	var modal_div_x = Math.round(((cur_page_size.window_w - modal_div_w) / 2));
	var modal_div_y = Math.round(scroll_y + ((cur_page_size.window_h - modal_div_h) / 2));

	target_modal_div.style.top = (modal_div_y < 0) ? "0px" : modal_div_y + "px";
	target_modal_div.style.left = (modal_div_x < 0) ? "0px" : modal_div_x + "px";

 	// OVERLAY
	overlay_div = $('overlay');
	show_overlay(overlay_height);
	target_modal_div.fade(0, 1);
	
	// CLOSE BUSINESS
	var close_link = $('close_modal');
	if(close_link!=null) {
		close_link.onclick=function() {
			close_cur_modal();
			return false;
		}
	}
	overlay_div.onclick=function() {
		close_cur_modal();
	}
}
var div_fader = new Fx;

function close_cur_modal() {
	if (document.getElementById) {
		// REMOVE THE DYNAMIC DIVS
		if ($(modal_to_show)) { 	
			var modal_to_show_to_del = $(modal_to_show);
			div_fader = new Fx.Tween(modal_to_show_to_del, { property: 'opacity', duration: 150 } ).start(1, 0);
		}
		if ($('overlay')) { 	
			var overlay = $('overlay');
			div_fader = new Fx.Tween(overlay, { property: 'opacity', duration: 150 } ).start(1, 0).chain(
				function() {  
				  	document.body.removeChild(overlay);
			  		var modal_holder = $('modal_holder');
				  	document.body.removeChild(modal_holder);
				}
			);
		}
	}
}
function start_key_functions() {
 	document.onkeydown = check_key;
}
function check_key(event) {
	// IE hack
	if (window.event) { event = window.event; }
	var keycode = event.keyCode;
	var escapeKey;
	if (event.DOM_VK_ESCAPE) {  // mozilla
		escapeKey = event.DOM_VK_ESCAPE;
	} else { // ie
		escapeKey = 27;
	}
	var key = String.fromCharCode(keycode).toLowerCase();
	if (keycode == escapeKey){ // close lightbox
			close_cur_modal();
	}
}
start_key_functions();

/* -----------------------------------------------------
	XMLHTTP Functions
	As found on Quirksmode. You hero.
 -----------------------------------------------------*/

function sendRequest(url,callback,postData) {
	var req = createXMLHTTPObject();
	if (!req) return;
	var method = (postData) ? "POST" : "GET";
	req.open(method,url,true);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (postData)
		req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	req.onreadystatechange = function () {
		if (req.readyState != 4) return;
		if (req.status != 200 && req.status != 304) {
		//	alert('HTTP error ' + req.status);
			return;
		}
		callback(req);
	}
	if (req.readyState == 4) return;
	req.send(postData);
}

function XMLHttpFactories() {
	return [
		function () {return new XMLHttpRequest()},
		function () {return new ActiveXObject("Msxml2.XMLHTTP")},
		function () {return new ActiveXObject("Msxml3.XMLHTTP")},
		function () {return new ActiveXObject("Microsoft.XMLHTTP")}
	];
}

function createXMLHTTPObject() {
	var xmlhttp = false;
	var factories = XMLHttpFactories();
	for (var i=0;i<factories.length;i++) {
		try {
			xmlhttp = factories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}
/* ////////////// VALIDATE ///////////// */
function validate_order(theform) {
	if(!default_check(theform.person_name)) { return false; }
	if(!default_check(theform.person_first_name)) { return false; }
	if(!default_check(theform.person_address)) { return false; }
	if(!default_check(theform.person_postcode)) { return false; }
	if(!default_check(theform.person_city)) { return false; }
	if(!default_check(theform.person_email)) { return false; }
	if (echeck(theform.person_email.value)==false){
		theform.person_email.focus()
		return false;
	}
	return true;
}

function validate_nb_subscribe(theform) {
	if(!default_check(theform.YMP0)) { return false; }
	if (echeck(theform.YMP0.value)==false){
		theform.YMP0.focus()
		return false;
	}
	return true;	
}

function default_check(input) {
	if(input!=undefined) {
		if ((input.value==null)||(input.value=="")){
    		input.style.borderColor="#ff0000";
			input.focus();
			return false;
		} else {
	    	input.style.borderColor='#CCCCCC';
    	    return true;
		}
	} else {
		return true;
	}
}

function echeck(str) {

	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   alert("Please fill out a valid email address")
	   return false
	}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   alert("Please fill out a valid email address")
	   return false
	}	
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		alert("Please fill out a valid email address")
		return false
	}	
	if (str.indexOf(at,(lat+1))!=-1){
		alert("Please fill out a valid email address")
		return false
	}
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		alert("Please fill out a valid email address")
		return false
	}
	if (str.indexOf(dot,(lat+2))==-1){
		alert("Please fill out a valid email address")
		return false
	}
	if (str.indexOf(" ")!=-1){
		alert("Please fill out a valid email address")
		return false
	}
	return true;
}

/* ////////////// OUTPUT DIV ///////////// */
var op_i=0;
var output_div_available;
var output_div;
function output(string) {
	if(output_div_available==undefined) {
		if($('output')!=null) {
			output_div_available=true;
			output_div = $('output');
		} else {
			output_div_available=false;		
		}
	}
	if(output_div_available==true) {
		var cur_content = output_div.innerHTML;
		output_div.innerHTML = cur_content+'<br />'+string;
	}
	return false;
}

function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "	";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}

