//BEGIN PASS BILLING ADDRESS TO SHIPPING
//-----------------------------------------------------------------------------
function shipppingPassThrough() {
	if(document.getElementById("bolShippingAddress").checked==true){
		document.getElementById("sfrmName").value = document.getElementById("frmName").value;
		document.getElementById("sfrmCompany").value = document.getElementById("frmCompany").value;
		document.getElementById("sfrmAddress1").value = document.getElementById("frmAddress1").value;
		document.getElementById("sfrmAddress2").value = document.getElementById("frmAddress2").value;
		document.getElementById("sfrmCity").value = document.getElementById("frmCity").value;
		document.getElementById("sfrmCounty").value = document.getElementById("frmCounty").value;
		document.getElementById("sfrmPostcode").value = document.getElementById("frmPostcode").value;
		document.getElementById("sfrmCountry").value = document.getElementById("frmCountry").value;
		document.getElementById("sfrmTelephone").value = document.getElementById("frmTelephone").value;
	}
	else {
		document.getElementById("sfrmName").value = "";
		document.getElementById("sfrmCompany").value = "";
		document.getElementById("sfrmAddress1").value = "";
		document.getElementById("sfrmAddress2").value = "";
		document.getElementById("sfrmCity").value = "";
		document.getElementById("sfrmCounty").value = "";
		document.getElementById("sfrmPostcode").value = "";
		document.getElementById("sfrmCountry").value = "";
		document.getElementById("sfrmTelephone").value = "";
	}
}


//FORM HANDLERS
// -----------------------------------------------------------------------------
function submitForm(passedForm) {
	document.forms[passedForm].submit();
}

function resetForm(passedForm) {
	document.forms[passedForm].reset()
}

//CHECK CONFIRMED EMAIL ADDRESS
function chkEmails()
{
if (document.getElementById("frmEmail").value != document.getElementById("frmEmailConf").value)
		{
			window.alert("Your emails do not match");
			document.getElementById("frmEmailConf").value="";
			document.getElementById("frmSignUp").frmEmail.value="";
			document.getElementById("frmEmail").focus();
			return false;
		}
}


//BEGIN GLOBAL FORM VALIDATOR
//-----------------------------------------------------------------------------
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function locateElement(elementString) {
	if (document.getElementById(elementString)) {
		return document.getElementById(elementString);
	}
	else {
		return false;
	}
}

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(pElement){
	var reTestString = /[-., ]/ig;
	var dtStr = pElement.value;
	dtStr = dtStr.replace(reTestString, '/');
	if (dtStr.substr(1, 1) == '/') {
		dtStr = '0' + dtStr;
	}
	if (dtStr.substr(4, 1) == '/') {
		dtStr = dtStr.substring(0,3) + '0' + dtStr.substring(3, dtStr.length);
	}
	if (dtStr.length < 10) {
		if (dtStr.substring(dtStr.length-2, dtStr.length) > 34)
			dtStr = dtStr.substring(0,6) + '19' + dtStr.substring(6)
		else
			dtStr = dtStr.substring(0,6) + '20' + dtStr.substring(6);
	}
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}

	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		return false
	}
pElement.value = dtStr;
return true
}

function getFormElements(pElement, formElements) {
	var oElement = null;
	var j;
	for (j=0; j<(pElement.childNodes.length); j+=1) {
		oElement = pElement.childNodes[j];
		if (oElement.nodeType == 1 && oElement.id !='') {
			if (oElement.tagName == 'INPUT' || oElement.tagName == 'TEXTAREA' || oElement.tagName == 'SELECT') {
				if (oElement.type != 'submit' && oElement.type != 'reset') {
 					formElements[formElements.length] = oElement.id;
				}
			}
		}
		getFormElements (oElement, formElements);		
	}
}

function requiredField (fieldName, pArray) {
	var j;
	if (pArray.length > 1) {
		for (j=1; j<(pArray.length); j+=1) {
			if (fieldName == pArray[j])
				return true;
		}
	}
	return false;
}

function checkEmail(pEmailAddress) {
	var reTestString = /[-,a-z,A-Z,0-9,.,_]+@[-,a-z,A-Z,0-9,.,_]+\.[a-z,A-Z]+/i;
	if (reTestString.test(pEmailAddress))
		return true
	else
		return false;
}

function checkMoney(pElement) {
	var pAmount = pElement.value;
	var reTestString = /\d+[.]\d\d/i;

	if (pAmount.lastIndexOf('.') == -1) {
		pAmount = pAmount + '.00';
	}

	if (pAmount.lastIndexOf('.') == pAmount.length-1) {
		pAmount = pAmount + '00';
	}

	if (pAmount.lastIndexOf('.') == pAmount.length-2) {
		pAmount = pAmount + '0';
	}

	if (reTestString.test(pAmount)) {
		pElement.value = pAmount;
		return true
	}
	else
		return false;
}


function inputType (pElement) {
	 if (pElement.id.substring(0,5)=='email')
		 return 'email';
	 if (pElement.id.substring(0,4)=='date')
		 return 'date';
	 if (pElement.id.substring(0,5)=='money')
		 return 'money';
 
 	return '';
}


function showFormError(pElement) {
	//alert(pElement);
	pElement.focus();
}


function validateForm(pElement) {
	//alert(pElement);

	var formElements =  new Array();
	var oElement;
	var i;
	var valid = true;
	
	if (document.all)
		getFormElements(pElement, formElements)
	else
		getFormElements(pElement.parentNode, formElements);
	for (i=0; i<(formElements.length); i+=1) {
		if (locateElement(formElements[i])) {
			oElement = locateElement(formElements[i]);
		}
	}
	
	for (i=0; i<(formElements.length); i+=1) {
		if(locateElement(formElements[i]) && valid) {
			oElement = locateElement(formElements[i]);
			if (oElement.tagName == 'SELECT') {
				if (oElement.options[0].selected && requiredField(oElement.id, validateForm.arguments)) {
					showFormError(oElement);
					alert ('Error. Please check the active field.');
					valid = false;
				}
			}
			if (oElement.tagName == 'INPUT') {
				if (oElement.type == 'text' || oElement.type == 'password') {
					if (oElement.value.length == 0 && requiredField(oElement.id, validateForm.arguments)) {
						showFormError(oElement);					
						alert ('Error. Please check the active field.');
						valid = false;
					}
					if (oElement.value.length > 0 && inputType(oElement) == 'email') {
						if (!checkEmail(oElement.value)) {
							showFormError(oElement);
							alert ('Please enter a valid Email address (eg. user@company.com)');
							valid = false;
						}
					}
					if (oElement.value.length > 0 && inputType(oElement) == 'date') {
						if (!isDate(oElement)) {
							showFormError(oElement);
							alert ('Please enter a valid date (DD/MM/YYYY)');
							valid = false;
						}
					}
					if (oElement.value.length > 0 && inputType(oElement) == 'money') {
						if (!checkMoney(oElement)) {
							showFormError(oElement);
							alert ('Please enter a valid monetary value');
							valid = false;
						}
					}

				}
			}
			if (oElement.tagName == 'INPUT') {
				if (oElement.type == 'file') {
					if (oElement.value.length == 0 && requiredField(oElement.id, validateForm.arguments)) {
						showFormError(oElement);
						alert ('Error. Please check the active field.');
						valid = false;
					}
				}
			}
			if (oElement.tagName == 'TEXTAREA') {
				if (oElement.value.length == 0 && requiredField(oElement.id, validateForm.arguments)) {
					showFormError(oElement);					
					alert ('Error. Please check the active field.');
					valid = false;
				}
			}
			
			if (valid) {
				eval ('if (window.validate' + oElement.id + ') {if (validate' + oElement.id + '(oElement)) {showFormError(oElement);alert(validate' + oElement.id + '(oElement));valid=false}}');
			}
		}
	}
	
	//alert(valid);
	
	if (valid) {
		return true;
	}
	else {
		return false;
	}
}
//END GLOBAL FORM VALIDATOR
//-----------------------------------------------------------------------------




//CHECK CONFIRMED PASSWORD
function chkPasswords()
{
if (document.getElementById("frmPassword").value != document.getElementById("frmPasswordConf").value)
		{
			window.alert("Your passwords do not match");
			document.getElementById("frmPassword").value="";
			document.getElementById("frmPasswordConf").value="";
			document.getElementById("frmPassword").focus();
			return false;
		}
}

//FOOTER CLEAR
//------------


function matchHeights() {
if ((document.getElementById("main") != null) && (document.getElementById("left") != null))
{
	var m = document.getElementById("main").offsetHeight;
	var n = document.getElementById("left").offsetHeight;

	if (n > m) {
		document.getElementById("main").style.height = n + "px";
	};

	document.getElementById("footer").style.display = "block";

	}
	}

window.onload = matchHeights;

//FONT SIZE SETTINGS
//------------------

function textSize(fontsize) {

	var valfontsize = fontsize;

	if (valfontsize == "sml") {
		var txtSize = "0.7em";
		document.cookie = "textsize=" + txtSize;
	} else if (valfontsize == "med") {
		var txtSize = "0.75em";
		document.cookie = "textsize=" + txtSize;
	} else if (valfontsize == "lrg") {
		var txtSize = "0.8em";
		document.cookie = "textsize=" + txtSize;
	} else {
		var txtSize = "0.7em";
	};

	document.body.style.fontSize = txtSize;
	matchHeights();

}

//READ FONT SIZE COOKIE
//---------------------

function readCookie() {

	cookieArray = document.cookie.split("; ");
	
	if (cookieArray.length != 0) {
		
		for (i=0; i<cookieArray.length; i++) {
			cookieArrayParts = cookieArray[i].split("=");
			if (cookieArrayParts[0] == "textsize") {
				document.body.style.fontSize = cookieArrayParts[1];
				matchHeights();
			};
		};
	
	};

}

//PRODUCT DETAILS POP UP IMAGE
//----------------------------

var win = "";

function openPopUpWindow(mypage,myname,w,h,scroll) {

	if (win!="") {
	win.close();
	}
	
	var winl = (screen.width-w)/2;
	var wint = (screen.height-h)/2;
	var settings  ='height='+h+',';
		settings +='width='+w+',';
		settings +='top='+wint+',';
		settings +='left='+winl+',';
		settings +='scrollbars='+scroll+',';
		settings +='resizable=yes';
	win=window.open(mypage,myname,settings);
	if(parseInt(navigator.appVersion) >= 4){win.window.focus();}
  
}

//CHANGE COLOUR SQUARE FROM DROP DOWN
//-----------------------------------

/*
function changeColourSquare() {

	var colour = document.getElementById("colour").value;
	
	document.getElementById("changecoloursquare").style.backgroundColor = colour;
	
	if (colour == "White") {document.getElementById("changecoloursquare").style.border = "1px solid #CCC";}
	else {document.getElementById("changecoloursquare").style.border = "0";};
	
}
*/

//No Right Click Event Action
//---------------------------
function right(e) {
		if (navigator.appName == 'Netscape' && (e.which == 3 || e.which == 2)) return false;
		else if (navigator.appName == 'Microsoft Internet Explorer' && (event.button == 2 || event.button == 3)) 
		{
			alert("Copyright © 2007 The Jewellery Display Company ltd. All rights reserved.");
			return false;
		}
		return true;
}


//No Right Click Event Action
//---------------------------
document.onmousedown=right;
document.onmouseup=right;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
if (document.layers) window.captureEvents(Event.MOUSEUP);
window.onmousedown=right;
window.onmouseup=right;

function doCreateHeardField() {

	if (document.getElementById("frmHeard").value == "Other ") {document.getElementById("frmHeard2").disabled = false;}
	else {document.getElementById("frmHeard2").disabled = true; document.getElementById("frmHeard2").value = "";};

}

//SEARCH VALIDATION
//-----------------

function searchValidate() {

	if (document.getElementById("searchTxt").value == "" || document.getElementById("searchTxt").value == "Search...") {
		alert("Please enter a search term.");
		document.getElementById("searchTxt").value = "";
		document.getElementById("searchTxt").focus();
		return false;
	};

}

//YOUR ACCOUNT VIEW EXTRA INFO ON AN ORDER
//----------------------------------------

function ordersExtra(elementid, imageid) {

	if (document.getElementById(elementid).style.display == "none" || document.getElementById(elementid).style.display == "") {
		document.getElementById(elementid).style.display = "block";
		document.getElementById(imageid).src = "/media/images/ordersextra-up.gif";
	}
	else {
		document.getElementById(elementid).style.display = "none";
		document.getElementById(imageid).src = "/media/images/ordersextra-down.gif";
	};

}

function VATNumberCountry(value) {

	var frmVATNumber = document.getElementById("frmVATNumber");

	if (value == "Andorra") {
		frmVATNumber.disabled = true;
	}
    else if (value == "Argentina") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Australia") {
		frmVATNumber.disabled = true;
	}
	else if (value == "Bermuda") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Brazil") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Canada") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Channel Islands") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Fiji") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Hong Kong") {
		frmVATNumber.disabled = true;
    }
    else if (value == "India") {
		frmVATNumber.disabled = true;		
    }
    else if (value == "Israel") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Japan") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Kuwait") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Maldives") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Mauritius") {
		frmVATNumber.disabled = true;
    }
    else if (value == "New Zealand") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Puerto Rico") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Qatar") {
		frmVATNumber.disabled = true;
    }
    else if (value == "Saudi Arabia") {
		frmVATNumber.disabled = true;
	}
	else if (value == "Singapore") {
		frmVATNumber.disabled = true;
	}
	else if (value == "South Africa") {
		frmVATNumber.disabled = true;
	}
	else if (value == "United Arab Emirates") {
		frmVATNumber.disabled = true;
	}
	else if (value == "United States of America") {
		frmVATNumber.disabled = true;
	}
	else if (value == "Venezuela") {
		frmVATNumber.disabled = true;
	}
	else if (value == "Virgin Islands") {
		frmVATNumber.disabled = true;
	}
	 else {
		frmVATNumber.disabled = false;
	};

}

//FLASH DETECTION
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 8;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 0;
// the version of javascript supported
var jsVersion = 1.0;

// Detect Client Browser type
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
jsVersion = 1.1;
// JavaScript helper required to detect Flash Player PlugIn version information
function JSGetSwfVer(i){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	} else {
			flashVer = -1;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	// Can't detect in all other cases
	else {
		
		flashVer = -1;
	}
	return flashVer;
} 
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) 
{
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
   	// loop backwards through the versions until we find the newest version	
	for (i=25;i>0;i--) {	
		if (isIE && isWin && !isOpera) {
			versionStr = VBGetSwfVer(i);
		} else {
			versionStr = JSGetSwfVer(i);		
		}
		if (versionStr == -1 ) { 
			return false;
		} else if (versionStr != 0) {
			if(isIE && isWin && !isOpera) {
				tempArray         = versionStr.split(" ");
				tempString        = tempArray[1];
				versionArray      = tempString .split(",");				
			} else {
				versionArray      = versionStr.split(".");
			}
			versionMajor      = versionArray[0];
			versionMinor      = versionArray[1];
			versionRevision   = versionArray[2];
			
			versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
			versionNum        = parseFloat(versionString);
        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
			if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
				return true;
			} else {
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );	
			}
		}
	}	
}