// JavaScript Document
// this outputs the menu
// Martin Gittins
// Interface New Media
// v3.0
//March 2008


//set the base href of the server

//basehref="http://www.mcmorranmedia.com/clients/bbc/radioresources.com/"
basehref="http://www.bbcradioresources.com/";
//basehref="http://duffel/bbcrr/";
// basehref="http://217.169.1.77/bbcrr/";
append="";

var urlVars=getUrlVars();
//alert(urlVars['test']);
var testMode = urlVars['test'];
if (testMode == "1"){
	basehref="http://duffel/bbcrr/";
	//basehref="http://217.169.1.77/bbcrr/";
	append="?test=1";
} else {
	//basehref="http://217.169.1.77/bbcrr/";
	append="";
}



function Init() {
this.length = Init.arguments.length;
for ( var i = 0; i < this.length; i++ ) this[ i + 1 ] = Init.arguments[ i ];
}

function goHome() {
	//redirect to home page
window.location="http://www.bbcradioresources.com/";
}

function YeartoRoman() {
var d = new Date();
//get the current year
var number=d.getFullYear();

if (number < 1) { alert(number+" is too small\nMinumum value is 1"); number = 1; }
if (number > 5999) { alert(number+" it too big\nMaximum value is 5999"); number = 5999; }
var roman_unit = new Init("","I","II","III","IV","V","VI","VII","VIII","IX");
var roman_tens = new Init("","X","XX","XXX","XL","L","LX","LXX","LXXX","XC");
var roman_hund = new Init("","C","CC","CCC","CD","D","DC","DCC","DCCC","CM");
var roman_thou = new Init("","M","MM","MMM","MMMM","MMMMM");

var v = 0; var w = 0; var x = 0; var y = 0;
v = ((number - (number % 1000)) / 1000) + 1;
number = (number % 1000);
w = ((number - (number % 100)) / 100) + 1;
number = (number % 100);
x = ((number - (number % 10)) / 10) + 1;
y = (number % 10) + 1;
return ("&copy; " + roman_thou[v] + roman_hund[w] + roman_tens[x] + roman_unit[y]);
}


// Read a page's GET URL variables and return them as an associative array.
function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
 
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}



function putMenu(selected) {
	//this displays the left hand navigation
//alert ("selected " + selected );
var menuCopy ="";
menuCopy=menuCopy + "<ul class=\"menu\">";
menuCopy=menuCopy + "<li id=\"home\"><a href='" + basehref + "index.html" + append + "'>Home</a></li>";
menuCopy=menuCopy + "<li>Studios";
menuCopy=menuCopy + "<ul class=\"submenu\">";
menuCopy=menuCopy + "<li id=\"studios_london\"><a href='" + basehref + "studios/london.html" + append + "'>London</a></li>";
menuCopy=menuCopy + "<li id=\"studios_manchester\"><a href='" + basehref + "studios/manchester.html" + append + "'>Manchester</a></li>";
menuCopy=menuCopy + "</ul>";
menuCopy=menuCopy + "</li>";
menuCopy=menuCopy + "<li>Services";
menuCopy=menuCopy + "<ul class=\"submenu\">";
menuCopy=menuCopy + "<li id=\"services_ob\"><a href='" + basehref + "services/ob.html" + append + "'>Outside Broadcasts</a></li>";
menuCopy=menuCopy + "<li id=\"services_events\"><a href='" + basehref + "services/events.html" + append + "'>Events Team</a></li>";
menuCopy=menuCopy + "<li id=\"services_bs\"><a href='" + basehref + "services/broadcastsupport.html" + append + "'>Broadcast Support</a></li>";
menuCopy=menuCopy + "</ul>";
menuCopy=menuCopy + "</li>";
menuCopy=menuCopy + "<li>Programme Delivery";
menuCopy=menuCopy + "<ul class=\"submenu\">";
menuCopy=menuCopy + "<li id=\"pd_techspec\"><a href='" + basehref + "programme/index.html" + append + "'>WAV + BWAV Tech spec</a></li>";
menuCopy=menuCopy + "<li id=\"pd_glossary\"><a href='" + basehref + "programme/glossary.html" + append + "'>Glossary</a></li>";
menuCopy=menuCopy + "<li id=\"pd_appendix\"><a href='" + basehref + "programme/appendix.html" + append + "'>Appendix</a></li>";
menuCopy=menuCopy + "</ul>";
menuCopy=menuCopy + "</li>";
menuCopy=menuCopy + "<li id=\"pricelist\"><a href='" + basehref + "general/pricelist.html" + append + "'>Price List</a></li>";
menuCopy=menuCopy + "<li id=\"contactus\"><a href='" + basehref + "general/contactus.html" + append + "'>Contact Us</a></li>";
menuCopy=menuCopy + "<li id=\"careers\"><a href='" + basehref + "general/careers.html" + append + "'>Careers</a></li>";
menuCopy=menuCopy + "</ul>";

document.write(menuCopy);
document.getElementById(selected).className = "selected";
}

function putFooter() {
//alert ("footer");
//this displays the footer
var footer = "";
footer = footer + "<img style='padding: 0 0 0 10px;' src='"+ basehref + "images/logo/bbc_black_sm.gif' />";
footer = footer + "<p>" + YeartoRoman()+"<br />";

document.write(footer);
}

function setDefault () {
window.prevselectedElement="button_1";
//alert("prev " + window.prevselectedElement);
}

function showPic (whichpic, whichid) {
//alert("prev " + prevselectedElement);
var buttonref="butto"+whichid;
if (document.getElementById) {
document.getElementById('placeholder').src = whichpic.href;
  if (whichpic.title) {
   document.getElementById('desc').childNodes[0].nodeValue = whichpic.title;
  } else {
   document.getElementById('desc').childNodes[0].nodeValue = whichpic.childNodes[0].nodeValue;
  }
  if (window.prevselectedElement) {
document.getElementById(prevselectedElement).className = "unselected";
document.getElementById(buttonref).className = "selected";
window.prevselectedElement=buttonref;
}
  return false;
 } else {
  return true;
 }
}





/*
=======================================================================
	INDIE PROGRAMME INFO FORM VALIDATION SCRIPTS
=======================================================================
	added feb 2010 for programmes/descipription/index.html
*/



//------------------ CHANGE CSS BY ID --------------------
function change(id, newClass) {
	identity=document.getElementById(id);
	identity.className=newClass;
}

//----PREVENT FORM SUBMISSION BY PRESSING ENTER ----------

function testForEnter() 
{    
	if (event.keyCode == 13) {        
		event.cancelBubble = true;
		event.returnValue = false;
	}
} 

/* 
=================================
	FIELD CHARACTER COUNTER
=================================
*/
function textCounter(field,cntfield,maxlimit) { 
	if (field.value.length > maxlimit) // if too long...trim it! 
		field.value = field.value.substring(0, maxlimit); 
		// otherwise, update 'characters left' counter 
		else 
		cntfield.value = maxlimit - field.value.length; 
} 

/* 
=================================
	FIELD HINT TEXT
=================================
*/
//Adds new uniqueArr values to temp array
function uniqueArr(a) {
 temp = new Array();
 for(i=0;i<a.length;i++){
  if(!contains(temp, a[i])){
   temp.length+=1;
   temp[temp.length-1]=a[i];
  }
 }
 return temp;
}
 
//Will check for the Uniqueness
function contains(a, e) {
 for(j=0;j<a.length;j++)if(a[j]==e)return true;
 return false;
}

function in_array( what, where ){
	var a=false;
		for(var i=0;i<where.length;i++){
		if(what == where[i]){
			a=true;
	        break;
		}
	}	
	return a;
}

var fieldsFilled = new Array("factualok","submitbtn","txtype1","txtype2","txtype3");

//ENTER FIELD
function hideHint(field) {
	if(!in_array(field,fieldsFilled)){ 
		hintText = document.getElementById(field).value;
		document.getElementById(field).value = "";	
		fieldsFilled = uniqueArr(fieldsFilled);	
		document.getElementById(field).style.color="#000";
		}
	}

//EXIT FIELD
function restoreHint(field){
	if(document.getElementById(field).value==""){
		document.getElementById(field).value = hintText;
		hintText ="";
		document.getElementById(field).style.color="#8A8A8A";
	} else {
		document.getElementById(field).style.color="#000";
		fieldsFilled.push(field);
		fieldsFilled = uniqueArr(fieldsFilled);	
	}
}

function wipeHints() {
	for(i=0; i<document.indieform.elements.length; i++) {

		field = document.indieform.elements[i].id;
		if(!in_array(field,fieldsFilled)){ 
			document.getElementById(field).value="n/a";
		}
	}


}

/* 
=================================
	FORM VALIDATION
=================================
*/

var errors = 0;

//------- check each field ---------
function validateField(id) {
	field = document.getElementById(id);
	field_div = id + "-div";


	//------- set visual error marker (CSS)-----
	if(field.value =="" || !in_array(id,fieldsFilled)){
		//alert(id + " is empty");
		change(field_div,"error");
		errors = 1;
	}
}


//------- clear all error markers before re-check ---------
function clearFieldError(id){
	field_div = id + "-div";
	change(field_div,"mandatory");
}

//------- email validation function ---------

function echeck(str) {

str = document.getElementById(str).value; 

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   errors = 2
		}
		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false
		}
		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false
		}
		if (str.indexOf(at,(lat+1))!=-1){
		    return false
		}
		if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false
		}
		if (str.indexOf(dot,(lat+2))==-1){
			return false
		}
		if (str.indexOf(" ")!=-1){
			return false
		}
 		 return true					
	}

//------- function to verify checkbox ---------

function checkCheckBox() {
	if(document.indieform.factualok.checked==false) { 
		errors=3;
	} 
}

//------- AND NOW HERE'S THE VALIDATION SCRIPT ---------
//------- set up mandatory fields as an array using ID ---------
	var mandatoryFields =new Array("network","brand","txdate","txtime","producer","prodtel","prodemail","shortdesc","mediumdesc","indieco","bbccontact");

	var x;

function testScript() {
	for (x in mandatoryFields) {
		fieldToTest = mandatoryFields[x];
		hideHint(fieldToTest);
		document.getElementById(fieldToTest).value="xx";
		restoreHint(fieldToTest);
	}
}

function validateForm() {
//------- reset error flag ---------
errors = 0;
//------- perform check on each field ---------

if(document.getElementById("txtype1").checked==false && document.getElementById("txtype2").checked==false && document.getElementById("txtype3").checked==false) {
	alert("Please specify the transmission type");
	change("txtype-div","error");
	self.scrollTo(0, 580)
	return false;
} else {
	clearFieldError("txtype");
}

	for (x in mandatoryFields)
	  {
		fieldToTest = mandatoryFields[x];
		clearFieldError(fieldToTest);
		validateField(fieldToTest);
	  }

	if(errors==1){
		alert("Some important information is missing from this form. \nPlease fill in the marked boxes and try again.");
		self.scrollTo(0, 350);
		return false;
	} 

//------- perform email validation ---------
	
	if (echeck("prodemail")==false){
		change("prodemail-div","error");
		errors=2;
	}

	if(errors==2){
		alert("Please enter a valid email address.");
		return false;
	} 

//------- has user ticked the box? ---------

	checkCheckBox();
	if(errors==3){
		alert("Please confirm that all your information is factually and editorially correct by ticking the box at the bottom of the form.");
		self.scrollTo(0, 880);
		change("factualok-div","error");
		return false;
	} 	
	
	if(errors==0){	
		wipeHints();
		document.indieform.submit();
	}
}



