var contentLoadedFlag = false; // true when AJAX has done its stuff
var loadedobjects = "";// used in css & js load functions
var preloadFlag = false;
var hotspot_items = []; // array holding menu contstruction strings for hotspots
var hotspots_DOM = []; // DOM object array for hotspots
var media_player_open = false; // true when media player div has been slid open
var timeout = null; // used for setting timeout of 'waiting' animating
var signup_email = null; // value used to block it being sent again by double clicking the button if server response is slow
var jumpIsPresent = false; // flag for anchor tag within page content
var returnees_page = -1; // keeps track of pages displayed on 'Returnees' page
var qcq_page = -1; // same mechanism as used on 'Returnees' page
var current_url = ""; // placeholder so we don't get error if EPG loads first
var blogObjs = []; // Blog Objects
var emailHasBeenSent = false;
var emailSwitchState = false; // false = normal email sent from site : true = IM system

	

	
	if(window.location.hostname.indexOf("www") ==-1) window.location.assign("http://www.radiocaroline.co.uk/"); // reload if "www" is missed off by user
	
	String.prototype.isNumeric = function () {
		return parseFloat(this)==this;
	}

	

	
	// goto external URL
	function gotoURL(url){
	window.location = url;
	}
	

	
	// Button rollovers
	function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
		}
	}


	function changeImages(itsid,changeTo) {
	var this_button = document.getElementById(itsid);
	this_button.src = changeTo;
	}

	


function preloadImages() {
	if (document.images) {
		var imageArray = [
		["images/donate_button_selected_5.png"],
		["images/donate_button_5.png"],
		["images/donate_button_selected_10.png"],
		["images/donate_button_10.png"],
		["images/donate_button_selected_25.png"],
		["images/donate_button_25.png"],
		["images/donate_button_selected_50.png"],
		["images/donate_button_50.png"],
		["images/donate_panel.jpg"],
		["images/previous_button_over.png"],
		["images/previous_button.png"],
		["images/next_button_over.png"],
		["images/next_button.png"],
		["images/directly_help_button_over.jpg"],
		["images/directly_help_button.jpg"],
		["images/profile_new_bknd.png"],
		["images/bt_synergy_phone.png"],
		["images/more_streams.jpg"],
		["images/more_streams_over.jpg"],
		["images/arrow_036.png"],	
		["images/crf_background.jpg"]
		]
	// deal with widescreen ad for Home page
	//if (getBrowserWidth() > 1330){
	//imageArray.push("images/mastihari_village_ad_right_wide.jpg");	
	//}else{
	//imageArray.push("images/mastihari_village_ad_right.jpg");		
	//}
	var itslength = imageArray.length
	var imageObj = new Image();
	 for(var i=0;i < itslength;i++) {
		imageObj.src = imageArray[i];
	 }
	 preloadFlag = true;
	 }
   }

   	function makeZebras(tbl, oddColour, evenColour){
	var table = document.getElementById(tbl);
	var tr = table.getElementsByTagName("tr");
	var len = tr.length;
	 for(var i=0;i < len;i++) {
		 if(i % 2){
			tr[i].style.backgroundColor = "#"+oddColour;	 
		 }else{
			tr[i].style.backgroundColor = "#"+evenColour;	 
		}
	  }
	}
	
	
	 // delete text from email field on Contact Page
	function delete_content(obj){
	if(document.getElementById("contact_email_address").value == "Your e-mail address (if you want a reply)") obj.value = "";
	}
	
	function post_data_to_studio(){
	if (emailHasBeenSent) return;
	if(emailSwitchState) data_to_im_database(); // also send data to IM system
    var ajaxRequest = setupAJAX();
	if (!ajaxRequest){
	alert ("Sorry, there was a problem,\nplease use your email program instead.");
	return;
	}
	// get message and check for any nasties
	var message = document.getElementById('contact_message').value;
	message = message.replace(new RegExp(/^\s+/),""); // remove any leading white space
    message = message.replace(new RegExp(/\s+$/),""); // remove any trailing white space
	if ((message == 'Don\'t forget your name!') || (message.length < 5)) return; // someone's playing silly buggers
	message = encodeURIComponent(message);
	// get e-mail address
	var email_address = document.getElementById('contact_email_address').value;
	if ((email_address == 'Your e-mail address (if you want a reply)') || (message.length < 5)) email_address = "e-mail address: No return address given";
	email_address = encodeURIComponent(email_address);
	var timestamp = String(new Date());
	var sendstring = 'email_address='+email_address+'&message='+message+'&timestamp='+timestamp;
	document.getElementById("messageDiv").style.display = "block"; // show waiting icon
	post_data(sendstring, "php/email_to_studio.php", "messageDiv");
	emailHasBeenSent = true;
	setTimeout(antiBounce, 2000); // release after 2 second - acts as 'anti-bounce' device to prevent multiple posts
	}
	 
	 
	function antiBounce(){
	emailHasBeenSent = false;	
	}
	
	
	function signup(){
	if (signup_email) return; // block multiple clicks
	var ajaxRequest = setupAJAX();
	signup_email = document.getElementById("email").value;
	ajaxRequest.open("GET","php/get_request.php?email="+signup_email, true);
	//read returned data from server and place it in div
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
		if (ajaxRequest.status == 200) {
			document.getElementById("msg").innerHTML=ajaxRequest.responseText;
			}else{
			document.getElementById("msg").value= "Sorry there was an error";
			}
	      }
	    }
	   ajaxRequest.send(null); 
	  }
	 
	function post_data(poststring, php_url, messageDiv, callback){
	var ajaxRequest = setupAJAX();
	ajaxRequest.open("POST", php_url, true);
	ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajaxRequest.onreadystatechange = function() {
	if(ajaxRequest.readyState == 4){
		if (ajaxRequest.status == 200) {
			var returned_message = ajaxRequest.responseText;
			if(messageDiv != "undefined")document.getElementById(messageDiv).innerHTML = returned_message;
			if(callback) setTimeout(function(){ executeJS(callback),300 }); // delay to allow DOM to load
			}else{
            alert ("Sorry, there was a server problem, please try again later.\n\nIf the problem persists please use your email program instead.");			
            }
	      }
	    }
	ajaxRequest.send(poststring);

	}
	
	/// communicate with EPG iframe
	
	function switch_to_schedule_page(){
	window.frames["epg"].display_current_schedule(); // fire function in iframe
	}
	
	function boot_EPG(){
	window.frames["epg"].get_schedule(); // fire function in iframe
	}
	
	
	  
	// generic function to return the ContentDoc of an iframe node
	function get_iframeBody(theiframe){
	var myiFrame = document.getElementById(theiframe);
  			var myiFrameContentDoc = myiFrame.contentWindow || myiFrame.contentDocument;
  			if (myiFrameContentDoc.document) {
    		myiFrameContentDoc = myiFrameContentDoc.document;
   			}
   			return myiFrameContentDoc;
	        }
	
	function get_media_player(){
	var isWin = navigator.userAgent.toLowerCase().indexOf("windows") != -1;
    if (isWin) { 
   	start_WMplayer()
     }else{
	start_quicktime_player();
    }
	}
	
	function start_quicktime_player(){
	toggleBasicSlide('Quicktime_slideDiv');
	get_other_content('php/create_quicktime_player.php', 'quicktime_player');
	}
	
	function start_WMplayer(){
	if (media_player_open)  {
	toggleBasicSlide('WMP_slideDiv'); // slide up
	var wmplayer = document.getElementById("wmplayer");
	deleteprior(wmplayer); // remove player on close to prevent it restarting
	media_player_open = false;
	}else{
	toggleBasicSlide('WMP_slideDiv'); // slide down
	get_other_content('php/create_wmplayer.php', 'wmplayer');
	media_player_open = true;
	}
	}
	
	
	
	function submit_ross_open_day(){
	document.getElementById("messageDiv").style.display = "block"; // show waiting icon
	var ross_name = encodeURIComponent(document.getElementById("ross_name").value);
	var ross_email = encodeURIComponent(document.getElementById("ross_email").value);
	var ross_date = encodeURIComponent(document.getElementById("ross_prefered_date").value);
	var sendstring = "ross_name="+ross_name+"&ross_email="+ross_email+"&ross_date="+ross_date;
	post_data(sendstring, "php/post_ross_open_day.php", "messageDiv");
	}
	
	
	function passBlogName(presenter){
	window.location.hash = "blogs.html";
	window.location.search = presenter;
	load_blog(presenter);
	}
	
	function open_blogs_page(presenter){
	loading();
	blogObjs = []; // reset
	var ajaxRequest = setupAJAX();
	ajaxRequest.open("GET","php/get_blogs_ii.php", true);
	//read returned data from server and place it in div
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
		if (ajaxRequest.status == 200) {
			var content_wrapper = document.getElementById("content_wrapper");
			content_wrapper.innerHTML = "<div class='header5'>Presenter Blogs</div>";
			
			var items = ajaxRequest.responseText.split("**");
			var itemsLength = items.length-1;

			for (var i=0; i<itemsLength; i++){
			var thisBlogsObj = new make_blogObjs(items[i]);
			thisBlogsObj.keynum = i; // add keynum property
			blogObjs.push(thisBlogsObj);
			content_wrapper.appendChild(thisBlogsObj.blog_wrapper);
			}
					if(presenter != null) load_blog(presenter); // if we're coming from teaser panel on Home Page
			}else{
			alert("Sorry there was an error");
			}
	      }
	    }
	   ajaxRequest.send(null);
	  if(current_menu_ref) current_menu_ref.delatch(); // de-highlight current menu
	   main_menu["blogs"].latch(); // latch menu colour as grey
	   current_menu_ref = main_menu["blogs"]; // pass
	  
	}
	
	
	
	function make_blogObjs(items){
	var splits = items.split("|");
	var presenter = splits[0];
	var imageURL = splits[1];
	var blog_count = splits[2];
	var presenter_underscored = presenter.replace(/ /g, '_');// replace spaces with underscores
	var newSlide = null;
	var slidename = presenter_underscored+"_slide_div";
	var slidetable = presenter_underscored+"_slide_table";
	var blog_content_div_name = presenter_underscored+"_content";	
	this.presenter = presenter;
	// create wrapper div so we can have alternating 'blogMenuDiv' and 'slide_div's
	var wrapper = document.createElement("div");
	var blogMenuDiv = document.createElement("div");
	blogMenuDiv.id = presenter_underscored+"_blog_wrapper";
	blogMenuDiv.style.cssText = "position: relative; background-color: #eee; height: 61px; margin-bottom: 6px; display:block; overflow:hidden;";
	// create mugshot
	//var mugshot = new Image(46,61); // Google Chrome doesn't seeem to support this method
	var mugshot = document.createElement("img");
	mugshot.src = "epg/"+imageURL;
	mugshot.style.cssText = "width: 46px; height: 61px;"
	blogMenuDiv.appendChild(mugshot);
	// create presenter text
	var p = document.createElement("p");
	p.setAttribute("class","blogger_name"); // style set in css but IE doesn't want to use it so we have to also define as below
	p.style.cssText = "position: absolute; width: 300px; left: 100px; top: 5px; font-size: 24px; color: #666666;";
	var mytextnode = document.createTextNode(presenter);
	p.appendChild(mytextnode);
	blogMenuDiv.appendChild(p);
	// create blog_count div
	var blog_count_div = document.createElement("div");
	blog_count_div.setAttribute("class","blog_count");
	blog_count_div.style.cssText = "position: absolute; left: 100px; top: 40px; width: 100px; font-size: 12px; font-weight: bold;"
	if (blog_count > 1){
	var mytextnode = document.createTextNode(blog_count+" Entries");	
	}else{
	var mytextnode = document.createTextNode(blog_count+" Entry");	
	}
	blog_count_div.appendChild(mytextnode);
	blogMenuDiv.appendChild(blog_count_div);
	// create reveal_blog_div
	var reveal_blog_div = document.createElement("div");
	reveal_blog_div.setAttribute("class","reveal_blog_div");
	reveal_blog_div.style.cssText = "position: absolute; left: 170px; top: 40px; color: #333333; cursor: pointer;"
	reveal_blog_div.onclick = function(){load_blog(presenter)};
	reveal_blog_div.onmouseover = function(){this.style.color = "#666666"};
	reveal_blog_div.onmouseout = function(){this.style.color = "#333333"};
	var mytextnode = document.createTextNode("Read/Hide");
	reveal_blog_div.appendChild(mytextnode);
	blogMenuDiv.appendChild(reveal_blog_div);
	wrapper.appendChild(blogMenuDiv);
	// create loading icon
	var loadingIcon = new Image();
	loadingIcon.src = "images/ajax-loader-small.gif";
	loadingIcon.style.cssText = "position: absolute; display: none; left: 230px; top: 32px"; 
	blogMenuDiv.appendChild(loadingIcon);
	// create slide_div
	var slide_div = document.createElement("div");
	slide_div.id = slidename;
	slide_div.style.cssText = "background-color: #fff; margin-bottom: 6px; margin-top: 6px; height: auto; width: auto; display:none; overflow:hidden;";
	// create slide_table
	var slide_table = document.createElement("table");
	var slide_table_body = document.createElement("tbody");
	slide_table.id = slidetable;
	slide_table.style.width = "100%";
	var tr = document.createElement("tr");
	var td = document.createElement("td");
	// create blog_content_div
	var blog_content_div = document.createElement("div");
	blog_content_div.id = blog_content_div_name;
	td.appendChild(blog_content_div); // append blog_content_div to table cell
	tr.appendChild(td); // cell to row
	slide_table_body.appendChild(tr); // row to tbody
	slide_table.appendChild(slide_table_body); // tbody to table
	slide_div.appendChild(slide_table); // table to slide div
	wrapper.appendChild(slide_div); // slide div to wrapper
	// create blog menu slide functions
	this.doMenuSlideDown = function(){
		basicslidedown(presenter_underscored+"_blog_wrapper");
	}
	this.doMenuSlideUp = function(){
		basicslideup(presenter_underscored+"_blog_wrapper");
	}
	// create blog text slide function
	this.doBlogSlide = function(){
		//universalSlide(slidename, slidetable); // open div to reveal blog text
		newSlide = new universalSlide();
		newSlide.toggleSlide(slidename, slidetable,loadingIcon);
	}
	// create function to display 'loading' animation
	this.loading = function(){
		loadingIcon.style.display = "block";
	}
	// create function that deletes slide code after use
	this.deleteSlide = function(){
	delete(newSlide); // do garbage
	}
	
	this.blogMenuIsDisplayed = true; // normal state
	this.blogTextIsDisplayed = false; // ditto
	this.slide_div = slide_div; // representing blog area
	this.blog_wrapper = wrapper; // representing blog menu area
	}
	
	// close blog 'menu' divs if appearing above current one
	function slideBlogDivs(blogKey){
			var blogObjsLength = blogObjs.length;
			for (var i=0; i<blogObjsLength; i++){
			if(blogObjs[i].keynum < blogKey) {
				blogObjs[i].doMenuSlideUp();
				blogObjs[i].blogMenuIsDisplayed = false;
			}
			}	
	}
	
	
	
	function load_blog(presenter){
	var blogKey = null;
	if(slideIsInMotion) return; // set in rcsg_slides.js - used to block while slide is in motion
	// close any open blogs before we do anything else
	var blogObjsLength = blogObjs.length;
	window.scrollTo(0,0);// scroll to top of page	
	for (var i=0; i<blogObjsLength; i++){

		 if(blogObjs[i].presenter == presenter) blogKey = i; // find key

	if(blogObjs[i].blogTextIsDisplayed){
		 blogObjs[i].doBlogSlide();
		 blogObjs[i].blogTextIsDisplayed = false;
	}
	}
	var presenter_underscored = presenter.replace(/ /g, '_');// replace spaces with underscores
	var blog_content_div_name = presenter_underscored+"_content";
	if (blogObjs[blogKey].slide_div.style.display == "block"){
	// blog area is open so close it and open all closed menu areas
	var blogObjsLength = blogObjs.length;
			for (var i=0; i< blogObjsLength; i++){
			if(blogObjs[i].blogMenuIsDisplayed == false) {
			    blogObjs[i].doMenuSlideDown();
				blogObjs[i].blogMenuIsDisplayed = true;
			}
			}
	}else{
	// blog area is closed so open it and hide all closed menu areas above
	blogObjs[blogKey].loading(); // display loading animation if we are loading blog
	var url = "php/get_individule_blog.php?presenter="+presenter;
	var ajaxRequest = setupAJAX();
	var bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
	ajaxRequest.open("GET",url, true);
	//read returned data from server and place it in div
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
		if (ajaxRequest.status == 200) {
			var blog_content_div =  document.getElementById(blog_content_div_name);// pick up div name which is different for each presenter
			blog_content_div.innerHTML = ajaxRequest.responseText;
			blog_content_div.style.cssText = "border-left: 1px solid #ddd; border-right: 1px solid #ddd; padding-left:15px; padding-right:15px;";
			slideBlogDivs(blogKey); // slide up any bloggers above
			blogObjs[blogKey].doBlogSlide(); // open div to reveal blog text
			blogObjs[blogKey].blogTextIsDisplayed = true;
			}else{
			document.getElementById(blog_content_div).innerHTML= "Sorry there was an error";
			}
	      }
	    }
	   ajaxRequest.send(null); 
	}
		
	}
	
	function next_returnees(){
	loading();
	returnees_page++; // accrue for next batch
	get_other_content("php/get_returnees.php?page="+returnees_page ,"content_wrapper");
	window.scrollTo(0,0);// scroll to top of page
	delete_ads(); // get rid of any ads that may be placed down sides
	get_side_ads();
	}
	function previous_returnees(){
	loading();
	returnees_page--; // accrue for previous batch
	get_other_content("php/get_returnees.php?page="+returnees_page ,"content_wrapper");
	window.scrollTo(0,0);// scroll to top of page
	delete_ads(); // get rid of any ads that may be placed down sides
	get_side_ads();
	}
	
	function next_qcq(){
	loading();
	qcq_page++; // accrue for next batch
	get_other_content("php/get_qcq_from_DB.php?page="+qcq_page ,"content_wrapper");
	window.scrollTo(0,0);// scroll to top of page
	delete_ads(); // get rid of any ads that may be placed down sides
	get_side_ads();
	}
	function previous_qcq(){
	loading();
	qcq_page--; // accrue for previous batch
	get_other_content("php/get_qcq_from_DB.php?page="+qcq_page ,"content_wrapper");
	window.scrollTo(0,0);// scroll to top of page
	delete_ads(); // get rid of any ads that may be placed down sides
	get_side_ads();
	}
	
	function uw_switch(){
	parse_menu_item('uw.html');
	var ajaxRequest = setupAJAX();
	ajaxRequest.open("GET","php/uw.php", true);
	ajaxRequest.send(null); 
	}
	
	
	
	function getBrowserWidth(){

	if (window.innerWidth)
	{
		return window.innerWidth;
	}
	else if (document.documentElement && document.documentElement.clientWidth != 0)
	{
		return document.documentElement.clientWidth;
	}
	else if (document.body)
	{
		return document.body.clientWidth;
	}
	
	return 0;
};


	function loadStaffTop500(){
	get_other_content("php/get_staff_top_500.php","top500")	
	}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function write_log(text){
	return;// block for live site
	var logDiv = document.getElementById('logDiv');
	var mytextnode = document.createTextNode(text);
	logDiv.appendChild(mytextnode);
	var mybr = document.createElement("br");
	logDiv.appendChild(mybr);
	}
	
	function data_to_im_database(){
    var ajaxRequest = setupAJAX();
	if (!ajaxRequest){
	alert ("Sorry, there was a problem,\nplease use your email program instead.");
	return;
	}
	// get message and check for any nasties
	var message = document.getElementById('contact_message').value;
	message.replace(/\r\n|\n/g,"\n" ); // replace nasty Windoze line endings
	message = message.replace(new RegExp(/^\s+/),""); // remove any leading white space
    message = message.replace(new RegExp(/\s+$/),""); // remove any trailing white space
	if ((message == 'Don\'t forget your name!') || (message.length < 5)) return; // someone's playing silly buggers
	message = encodeURIComponent(message);
	// get e-mail address
	var email_address = document.getElementById('contact_email_address').value;
	if ((email_address == 'Your e-mail address (if you want a reply)') || (message.length < 5)) email_address = "e-mail address: No return address given";
	email_address = encodeURIComponent(email_address);
	var timestamp = String(new Date());
	var poststring = 'email_address='+email_address+'&message='+message+'&timestamp='+timestamp;
	document.getElementById("messageDiv").style.display = "block"; // show waiting icon
	var ajaxRequest = setupAJAX();
	ajaxRequest.open("POST", "php/sendIM.php", true);
	ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajaxRequest.onreadystatechange = function() {
	if(ajaxRequest.readyState == 4){
		if (ajaxRequest.status == 200) {
			var returned_message = ajaxRequest.responseText;
			document.getElementById("messageDiv").innerHTML = returned_message;
			}else{
            alert ("Sorry, there was a server problem, please try again later.\n\nIf the problem persists please use your email program instead.");			
            }
	      }
	    }
	ajaxRequest.send(poststring);
	emailHasBeenSent = true;
	setTimeout(antiBounce, 2000); // released after 2 second - acts as 'anti-bounce' device to prevent multipule posts
	}
		
