//Functions prodividing features of the site.
//Author : Richard Clarke

var VAT_RATE = 0.175;

//creates a popup window, this is used to launch the terms in a new window.

var mousex = 0;
var mousey = 0;
var algor = 0;
var any = "resources/images/StylePlate/Any.gif";
var anyn = "resources/images/StylePlate/Anyn.gif";

function popUp(URL) 
{
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=500,height=500');");
}

//If there is a group of radio buttons that need to be disabled, give a previous choice.
//Groupname of the radio buttons and TRUE or FALSE, TRUE = disable.
function radioDisable(groupName, booleanVal)
{
	try{
		for(var i=0; i<document.getElementsByName(groupName).length; i++)
		{
			if(document.getElementsByName(groupName)[i].name == groupName)
			{
				if(booleanVal == true)
				{
					document.getElementsByName(groupName)[i].checked = false;
				}
				
				document.getElementsByName(groupName)[i].disabled = booleanVal;
			}
		}
	}
	catch(err)
	{
		//Do nothing
	}
}

function showtransferinfo (showValue)
{
	if(showValue)
	{
		document.getElementById('transferlessinfo').style.display = 'none';
		document.getElementById('transfermoreinfo').style.display = 'inline';
	}
	else
	{
		document.getElementById('transfermoreinfo').style.display = 'none';
		document.getElementById('transferlessinfo').style.display = 'inline';
	}
}

function showplatesinfo (showValue)
{
	if(showValue)
	{
		document.getElementById('plateslessinfo').style.display = 'none';
		document.getElementById('platesmoreinfo').style.display = 'inline';
	}
	else
	{
		document.getElementById('platesmoreinfo').style.display = 'none';
		document.getElementById('plateslessinfo').style.display = 'inline';
	}
}
function calculatePrices(){
	delBoth();
	var subtotal = 0.00;
	var admin = document.getElementsByName('adminChoice');
	var plates = document.getElementsByName('platesChoice');
	var delivery = 3.00;
	if ((admin[0].checked) && (plates[0].checked))
	{
		insBoth();
		subtotal = 30.00;
		subtotal += delivery;
	}
	else if (admin[0].checked)
	{
		insBoth();
		delPlates();
		subtotal = 15.00;
	}
	subtotal += (parseFloat(document.getElementById('priceNumbersOnly').value));
	var vat = (subtotal*VAT_RATE).toFixed(2); //The final VAT
	subtotal += (parseFloat(document.getElementById('transfer').value));
	var total = parseFloat(subtotal)+parseFloat(vat);
	subtotal = subtotal.toFixed(2); //The final subtotal
	total = total.toFixed(2); //The final total
	//Set table
	document.getElementById('subtotaltable').innerHTML = "£"+subtotal;
	document.getElementById('vattable').innerHTML = "£"+vat;
	document.getElementById('totaltable').innerHTML = "£"+total;
	//Set post variables
	document.getElementById('subTotal').value = subtotal;
	document.getElementById('vat').value = vat;
	document.getElementById('total').value = total;
}

function insBoth()
{
	if(document.getElementById('adminfee') == null){
		var x = document.getElementById('pricedetails').insertRow(2);
		var y = x.insertCell(0);
		var z = x.insertCell(1);
		y.innerHTML="Transfer Administration Fee";
		z.innerHTML="£15.00";
		z.id="admintable";

		document.getElementById('admin').value = 15.00;

		var i = document.getElementById('pricedetails').insertRow(3);
		var j = i.insertCell(0);
		var k = i.insertCell(1);
		j.innerHTML="Physical Number Plates";
		k.innerHTML="£15.00";
		k.id="platestable";
		document.getElementById('plates').value = 15.00;
		
		var l = document.getElementById('pricedetails').insertRow(4);
		var m = l.insertCell(0);
		var n = l.insertCell(1);
		m.innerHTML="Delivery Charge";
		n.innerHTML="£3.00";
		n.id="deliverytable";
		document.getElementById('delivery').value = 3.00;
	}
}

function delBoth()
{
	if(document.getElementById('admintable') != null){
		var a = document.getElementById('admintable').parentNode.rowIndex;
		document.getElementById('pricedetails').deleteRow(a);
		
		document.getElementById('admin').value = 0.00;
	
		delPlates()
	}
}

function delPlates()
{
	if(document.getElementById('platestable') != null){
		var b = document.getElementById('platestable').parentNode.rowIndex;
		document.getElementById('pricedetails').deleteRow(b);

		document.getElementById('plates').value = 0.00;
	}
	
	if(document.getElementById('deliverytable') != null){
		var c = document.getElementById('deliverytable').parentNode.rowIndex;
		document.getElementById('pricedetails').deleteRow(c);

		document.getElementById('delivery').value = 0.00;
	}
}

//Is the current key on press/release etc. a  number.
function isNumberKey(evt)
      {
        charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;

         return true;
      }

//Is the current key on press/release etc. a number or alphabetical character
function isAlphaNumeric(evt)
	{
		charCode = (evt.which) ? evt.which : event.keyCode
			if(charCode > 32 && (charCode < 48 || charCode > 57) && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122))
				return false;
				
		return true;
	}


//any/anyn

//updates an image, given what was written in the textbox.	
function textImageUpdate(imageID, obj)
{
	newimage = obj.value;
	nil = newimage.length;
	
	if(nil == "0")
	{
			newimage="Anyn"
			changePic(newimage, imageID);
			imageNO = imageID.charAt(5);
			imageNO++;
			imageID = 'image'+imageNO;
			changePic(newimage, imageID);
			imageNO++;
			imageID='image'+imageNO;
			changePic(newimage, imageID);
			return;
	}
	
	i=0;
	imageNO = imageID.charAt(5);
	while(i < 3)
	{
		imageID = 'image'+imageNO;
		changePic(newimage.charAt(i), imageID);
		i++;
		imageNO++;
	}
}


//updates an image given the select item in the drop down menu
function selectImageUpdate(imageID, obj)
{
	newimage = obj.options[ obj.selectedIndex ].value;
	nil = newimage.length;
	
	if(newimage == "Any")
	{
		changePic(newimage, imageID);
		return;
	}
	else if(newimage == "Anyn")
	{
		changePic(newimage, imageID);
		imageNO = imageID.charAt(5);
		imageNO++;
		imageID = 'image'+imageNO;
		changePic(newimage, imageID);
		return;
	}
	
	i=0;
	imageNO = imageID.charAt(5);
	while(i < nil)
	{
		imageID = 'image'+imageNO;
		changePic(newimage.charAt(i), imageID);
		i++;
		imageNO++;
	}	
}

//the function that acutally changes the picture
function changePic(newimage, imageID)
{
	if(newimage == "")
	{
		imagesrc="";
	}
	else
	{
		imagesrc = "resources/images/flatletters/yellow-"+newimage+".jpg";
	}
	document.images[imageID].src = imagesrc;
}


//resets the current search form, sets all images back to blank (ANY/ANY Number) and all select boxes to any
function clearCurrent()
{	
	document.currentstyle.firstletter.selectedIndex = 0;
	document.currentstyle.secondletter.selectedIndex = 0;
	document.currentstyle.number.selectedIndex = 0;
	document.currentstyle.thirdletter.selectedIndex = 0;
	document.currentstyle.fourthletter.selectedIndex = 0;
	document.currentstyle.fifthletter.selectedIndex = 0;
	
	document.images['image1'].src=any;
	document.images['image2'].src=any;
	
	document.images['image3'].src=anyn;
	document.images['image4'].src=anyn;
	
	document.images['image6'].src=any;
	document.images['image7'].src=any;
	document.images['image8'].src=any;
}

//resets the prefix search form, sets all the image back to blank (ANY/ANY number) and all select/text boxes to Any/null
function clearPrefix()
{	
	document.prefixstyle.firstletter.selectedIndex = 0;
	document.prefixstyle.secondletter.selectedIndex = 0;
	document.prefixstyle.numbers.value = "";
	document.prefixstyle.thirdletter.selectedIndex = 0;
	document.prefixstyle.fourthletter.selectedIndex = 0;
	
	document.images['image1'].src=any;
	
	document.images['image2'].src=anyn;
	document.images['image3'].src=anyn;
	document.images['image4'].src=anyn;
	
	document.images['image6'].src=any;
	document.images['image7'].src=any;
	document.images['image8'].src=any;
}

document.onmousemove = update; // update(event) implied on NS, update(null) implied on IE
update();

function update(e)
{
  getMouseXY(e); // NS is passing (event), while IE is passing (null)
}

//show preview
function show(plate)
{	
	
	pID = document.getElementById('Preview')
	//set plate position
	//xpos = mousex + 50;
	ypos = mousey - 135;
	xpos = 150;
	
	pID.style.left = xpos + "px";
	pID.style.top = ypos + "px"
	
	//set plate contents
	var output = '';
	var c;
	for (var i = 0; i < plate.length; i++){
		 c = plate.charAt(i);
			if (c == ' ')
				 {
				output += '<img vspace="5" src=\"resources/images/PreviewPlate/spacer.gif\" border=\"0\" width="10">';
				 } else {
				 output += '<img vspace="5" src=\"resources/images/PreviewPlate/' + c + '.gif\" border=\"0\" height= "21">';
				 output += '<img vspace="5" src=\"resources/images/PreviewPlate/spacer.gif\" border=\"0\" width="3">';
	  		}
	}	
	pID.innerHTML = output;
	
	//show plate
	pID.style.visibility = 'visible';
}

//hide the preview
function hide()
{	
	pID = document.getElementById('Preview')
	pID.style.visibility = 'hidden';
}

//js_mouse by www.dunnbypaul.net
function getMouseXY(e) // works on IE6,FF,Moz,Opera7
{ 
  if (!e) e = window.event; // works on IE, but not NS (we rely on NS passing us the event)

  if (e)
  { 
    if (e.pageX || e.pageY)
    { // this doesn't work on IE6!! (works on FF,Moz,Opera7)
      mousex = e.pageX;
      mousey = e.pageY;
      algor = '[e.pageX]';
      if (e.clientX || e.clientY) algor += ' [e.clientX] '
    }
    else if (e.clientX || e.clientY)
    { // works on IE6,FF,Moz,Opera7
      mousex = e.clientX + document.body.scrollLeft;
      mousey = e.clientY + document.body.scrollTop;
      algor = '[e.clientX]';
      if (e.pageX || e.pageY) algor += ' [e.pageX] '
    }  
  }
}
