// JavaScript Document


var myXmlHttp;
var bannerData = "";
var fadeInTimeout;
var fadeOutTimeout;
var changeImageTimeout;
var currentBanner = 0;
var image1Fade = "off", image2Fade; // Required so that I can cancel them once the image has been clicked
var bannerFrame = "animation";

window.onload = function(){
	
    if($('bannerpic1')){
        loadBannerData();
        setBannerEvents(true);
	}
	setProductFades();
	setQuickNavLinks()
	if(document.getElementById('products')){
		setNavLinks();
	}
	
	setPopupLinks();
}

function setBannerCursor(activate){
	banner = document.getElementById(bannerFrame);
	if(activate == true){
		banner.style.cursor = "pointer";
	} else {
		banner.style.cursor = "default";
	}
}

// Banner Animation and Ajax Call
function myCreateXMLHttpRequest(){
	if (window.ActiveXObject){
		myXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	} else if (window.XMLHttpRequest){
		myXmlHttp = new XMLHttpRequest();
	}
}

function loadBannerData(rangeid){
	
	if(!rangeid) rangeid = false;
	myCreateXMLHttpRequest();
	var url = "ranges-json.php?rangeid="+rangeid+"&timeStamp=" + new Date().getTime();
	
	myXmlHttp.open("GET", url, true);
	myXmlHttp.onreadystatechange = myHandleStateChange;
	myXmlHttp.send(null);
    
}

function myHandleStateChange(){
	if(myXmlHttp.readyState == 4){
		if(myXmlHttp.status == 200){
			
			bannerData = eval("(" + myXmlHttp.responseText + ")");
			
			if(!document.getElementById('product')){
				fadeOutTimeout = setTimeout('fadeOutImages()',0);
			}

			preloadImages();
		}
	}
}

function preloadImages(){
	
	bannerLength = (bannerData.ranges.length -1);
	imageString = "";
	var d=document; 
	d.image = new Array();
	j =0;

    if(bannerData.ranges[0].pageTitle){
    
        document.title = bannerData.ranges[0].pageTitle;
    }

	for(i = 0; i < bannerLength; i++){
		image1Src = bannerData.ranges[i].image1src;
		image2Src = bannerData.ranges[i].image2src;	
		d.image[j] = new Image();
		d.image[j].src = image1Src;
		j += +1;
		d.image[j] = new Image();
		d.image[j].src = image2Src;
        if(bannerData.ranges[i].pageTitle){
        
            document.title = bannerData.ranges[i].pageTitle;
        }
	}

}

function MM_preloadImages() { //v3.0
  var d=document; 
  if(d.images){ 
  	if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; 
	for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ 
		d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];
	}
	}
}

function fadeInImages(){
	setBannerCursor(true);
	changeImages();
	durationVal = 2;
	
	if(Math.round($('bannerpic1').style.opacity*100)/100){
	
		currentOpacity = Math.round($('bannerpic1').style.opacity*100)/100;
		if(currentOpacity > 0.01){
			durationVal = 1;
		} 
	} else {
		currentOpacity = 0.1;
	}
		
	if(currentOpacity == null) currentOpacity = 0.1;

	image1Fade = Effect.Fade('bannerpic1', {duration: durationVal, from:currentOpacity, to: 1.0});	
	image2Fade = Effect.Fade('bannerpic2', {duration: durationVal, from:currentOpacity, to: 1.0});
	fadeOutTimeout = setTimeout('fadeOutImages()',4000);
}

function fadeOutImages(){
	
	if(Math.round($('bannerpic1').style.opacity*100)/100){
		currentOpacity = Math.round($('bannerpic1').style.opacity*100)/100;
		durationVal = 1;
	} else {
		currentOpacity = 1.0;
		durationVal = 2;
	}

	
	image1Fade = Effect.Fade('bannerpic1', {duration: durationVal, from:currentOpacity, to: 0.01});	
	image2Fade = Effect.Fade('bannerpic2', {duration: durationVal, from:currentOpacity, to: 0.01});
	fadeInTimeout = setTimeout('fadeInImages()',2050);
}

function changeImages(){
	
	bannerLength = (bannerData.ranges.length -1);
	
	if(currentBanner >= bannerLength || currentBanner == null) {
		currentBanner = 0;
	} else {
		//Increase Current Banner
		currentBanner++;
	}
	
	image1Src = bannerData.ranges[currentBanner].image1src;
	image2Src = bannerData.ranges[currentBanner].image2src;
	imagealt = bannerData.ranges[currentBanner].name;
	var quote = bannerData.ranges[currentBanner].quote;

	//Set Banner 1
	$('bannerpic1').setAttribute("src",image1Src);
	$('bannerpic2').setAttribute("src",image2Src);
	$('bannerpic1').setAttribute("alt",imagealt);
	$('bannerpic2').setAttribute("alt",imagealt);
	$('quote').innerHTML = quote;
	
}

function stopAnimation(rangeid,lastCall){
	
	if(rangeid){
		
		clearTimeout(fadeInTimeout);
		clearInterval(fadeOutTimeout);
	
		if(image1Fade != "off"){
			image1Fade.cancel();
			image2Fade.cancel();
		}
		
	// Get the current opacity values and take them up to 1.0
	
	if(lastCall == "bannerLink"){
		currentOpacity = Math.round($('bannerpic1').style.opacity*100)/100;
		if(currentOpacity == null || currentOpacity == 0) currentOpacity = 100;
		
		Effect.Fade('bannerpic1', {duration: 1, from:currentOpacity, to: 1.0});	
		Effect.Fade('bannerpic2', {duration: 1, from:currentOpacity, to: 1.0});
	}
	/*	
	if(rangeid != bannerData.ranges[currentBanner].rangeid){

			setCurrentBanner(rangeid);
		
			image1Src = bannerData.ranges[currentBanner].image1src;
			image2Src = bannerData.ranges[currentBanner].image2src;
			var quote = bannerData.ranges[currentBanner].quote;
			$('bannerpic1').setAttribute("src",image1Src);
			$('bannerpic2').setAttribute("src",image2Src);
			$('quote').innerHTML = quote;
		}*/
		

	}
}

function stopAnimation2(){
	clearTimeout(fadeInTimeout);
	clearInterval(fadeOutTimeout);

	if(image1Fade != "off"){
		image1Fade.cancel();
		image2Fade.cancel();
	}
}

/* Set banner events -------------------- */
function setBannerEvents(activate){
	imgs = $(bannerFrame).getElementsByTagName('img');
	
	for(i=0; i < imgs.length; i++){
		imgs[i].onclick = function(){
			if(activate == true){
				initRange(null);
			}
		}
	}
}

/* Show the product detail and get other products from the range */
function initRange(rangeid,lastCall){
	// get rangeid
	if(rangeid == null){
		rangeid = bannerData.ranges[currentBanner].rangeid;
	}
	
	if(!lastCall){
		lastCall = "bannerLink";	
	}

	sendRequest(rangeid,'content',lastCall);
	sendRequest(rangeid,'quicknav',lastCall);
	sendRequest(rangeid,'subnav',lastCall);
	sendRequest(rangeid,'nav',lastCall);
	stopAnimation(rangeid,lastCall);
	
	if(lastCall == "bannerLink"){
		setBannerEvents(false);
		setBannerCursor(false);
	} else {		
		loadBannerData(rangeid);
		setBannerEvents(true);
		setBannerCursor(true);
	}
	
}

function sendRequest(rangeid,contentArea,lastCall){
	url = "includes/inc-ajax.php";
	pars = "rangeid="+rangeid+"&"+contentArea+"=true&timestamp=" + new Date().getTime();
	var ajaxRequest = new Ajax.Updater(contentArea, url, {//Create AjaxRequest object
									   
		method: 'get',
		parameters: pars,
		
		onComplete: function(){
			if(contentArea == 'subnav'){
				setNavLinks();	
			}
			if(contentArea == 'content'){
				if(lastCall == "bannerLink"){
					showProductDetail(rangeid);
				} else {
					hideProductDetail();
				}
				setProductFades();
			}
			if(contentArea == 'quicknav'){
				setQuickNavLinks();
			}
		}
	});
	
}


function fadeInContent(){
	Effect.Fade('content',{duration: 1,from: 0.5, to: 1.0});
	//new Effect.Highlight('content')
}

//Remove content that's going to be replaced
function removeContent(){
	testObj = document.getElementById('content');
	while(testObj.childNodes.length){
		testObj.removeChild(testObj.firstChild);	
	}
}

// Display short desription
function showProductDetail(rangeid){	
	setCurrentBanner(rangeid);
	heading = bannerData.ranges[currentBanner].rangename;
	para = bannerData.ranges[currentBanner].description;

	createProductDetail(heading,para);

	Element.hide('productdetail');
	Effect.Appear('productdetail',{from: 0.0, to: 0.9});
}

// Hide short desription
function hideProductDetail(){	
	if($('productdetail')){
	Element.hide('productdetail');
	}
}

function setCurrentBanner(rangeid){
	bannerLength = (bannerData.ranges.length);
	for(i=0; i < bannerLength; i++){
		if(rangeid == bannerData.ranges[i].rangeid){
			currentBanner = i;
		}
	}	
}

function createProductDetail(heading,para){
	
	theBanner = document.getElementById(bannerFrame);
	
	if($('productdetail')){
		$('productdetail').parentNode.removeChild(document.getElementById('productdetail'));		   
	} 
	// Create element
	productDetailDiv = document.createElement('div');	
	productDetailH1 = document.createElement('h1');
	productDetailH1Text = document.createTextNode(heading);
	productDetailPara = document.createElement('p');
	productDetailParaText = document.createTextNode(para);
	
	productDetailPara.appendChild(productDetailParaText);
	productDetailH1.appendChild(productDetailH1Text);
	productDetailDiv.appendChild(productDetailH1);
	productDetailDiv.appendChild(productDetailPara);
	
	productDetailDiv.setAttribute('id','productdetail');
	productDetailDiv.style.block = "none";
	productDetailDiv.style.filter = "";
	productDetailDiv.style.background = "#fff";
	
	// Append new object to document
	
	theBanner.appendChild(productDetailDiv);
}


// Individual product fades -------------//
function setProductFades(){

	if(!document.getElementById('products')) return false;
	productsParent = document.getElementById('products');
	
	allImgs = productsParent.getElementsByTagName('img');
	
	for(i = 0; i < allImgs.length; i++){
		allImgs[i].onclick = function(){
			doImgFade(this);
		}
	}

}

function doImgFade(thisObj){
	stopAnimation2();
	currentOpacity = thisObj.style.opacity;
	// Do a check for IE!
	if(currentOpacity == null) currentOpacity = "";
	if(currentOpacity != ""){
		Effect.Fade(thisObj, {from:0.2, to:1.0});
	} else {
		Effect.Fade(thisObj, {from:1.0, to:0.2});
		productPicsRequest(thisObj);
		hideProductDetail();
	}
}

function productPicsRequest(thisObj){
	setBannerEvents(false);
	setBannerCursor(false);
	productid = thisObj.getAttribute("rel");
	var opt = {
    // Use POST
    method: 'post',
    // Send this lovely data
    postBody: 'productid='+productid,
    // Handle successful response
    onSuccess: function(productsData) {
        showProductPics(productsData);
    }
	
	}
	
	new Ajax.Request('products-json.php', opt);
}

function showProductPics(productsData){
	
	productsData = eval("(" + productsData.responseText + ")");
	image2Src = productsData.products[0].image2src;
	image3Src = productsData.products[0].image3src;
	imagealt = "";
	var quote = productsData.products[0].quote;
	$('quote').innerHTML = quote;

	//Set Banner 1
	$('bannerpic1').setAttribute("src",image2Src);
	$('bannerpic2').setAttribute("src",image3Src);
	$('bannerpic1').setAttribute("alt",imagealt);
	$('bannerpic2').setAttribute("alt",imagealt);
	
	
	Effect.Fade($('bannerpic1'), {from:0.2, to:1.0});
	Effect.Fade($('bannerpic2'), {from:0.2, to:1.0});
	
}

// Set Nav Clicks
function setNavLinks(){
	if(document.getElementById('subnav')){	
	
		subnavParent = document.getElementById('subnav');
		allLinks = subnavParent.getElementsByTagName('a');
		
		for(i = 0; i < allLinks.length; i++){
			
			thisHref = allLinks[i].href;
			if(thisHref.match("=") != null){
				allLinks[i].onclick = function(){
					if(document.getElementById('product')){
						thisObj = document.getElementById('product');
						//thisObj.removerAttribute("id");
					}
			
					initCall(this);
					return false;
				}
			}
		}
	}
}

function setQuickNavLinks(){
	if(document.getElementById('quicknav')){
							   
		quicknavParent = document.getElementById('quicknav');
		allLinks = quicknavParent.getElementsByTagName('a');
		
		for(i = 0; i < allLinks.length; i++){
			allLinks[i].onclick = function(){
				
				if(document.getElementById('product')){
					thisObj = document.getElementById('product');
					thisObj.removeAttribute("id");
				}
				
				initCall(this);
				return false;
			}
		}
	}
	
}

function initCall(thisObj){
	//get rangeid from url
	rangeid = thisObj.href.split("=");
	initRange(rangeid[1],"navLink");
}


var win= null;

function setPopupLinks() {
	allLinks = document.getElementsByTagName("a");
	
	for(i=0; i < allLinks.length; i++){
		if(allLinks[i].getAttribute("rel") == "popup"){
			allLinks[i].onclick = function(){
				return newwindow(this,'NewWindow',800,500,'yes');
				
			}
		}
	}
}

function newwindow(thisObj,myname,w,h,scroll){ 
	var winl = 0;
	var wint = 0;
	winl = (screen.width-w)/2;
	if (navigator.userAgent.indexOf("Opera")==-1){  //Opera needs to be zero as it keeps popups within the browser content area
		wint = (screen.height-h)/2;
	}
	settings='height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',toolbar=no,location=no,status=no,menubar=no,resizable=yes,dependent=no'; 
	
	// Get HREF from link
	var thisHref = thisObj.getAttribute("href");

	win=window.open(thisHref,myname,settings) 
	if(parseInt(navigator.appVersion) >= 4){win.window.focus();} 
	return false;
}

Event.observe(window,'load', function(){
    if($('askform')){
        if($('askform').name)               $('askform').name.onclick = function(){ this.value=''; }
        if($('askform').contactdetails)     $('askform').contactdetails.onclick = function(){ this.value=''; }
        if($('askform').comment)           $('askform').comment.onclick = function(){ this.value=''; }
    }
});

function doHideCaptcha(){

    $('step2').hide();
}

function doAsk(){
    if($('askform')){
        if($('askstep').value == 1){
            // Check Name & Email
            var error = 0;
            
            if(($('askform').name.value=='')||($('askform').name.value=='Name')){
                error = 1;
                var errormessage = 'Please enter a valid Name';
            }
            if(error==1){
                alert(errormessage);
                return false;
            }
            
    
            // Go to step 2
            $('step1').hide();
            $('step1text').hide();
            $('step2').show();
            $('askstep').value = 2;
            return false;
        }else if($('askstep').value == 2){
            //alert('bob' + $('formcaptcha').value);
            new Ajax.Request('cms/modules/captcha/check.php', {
              method: 'get',
              parameters: {formcaptcha: $('formcaptcha').value},
              onSuccess: function(t) {
                if(t.responseText == 'error'){
                    alert('Confirmation code is incorrect!');
                    return false;
                }else{
                    $('askform').submit();
                    return true;
                }
              }
            });
            return false;
        }
    }        
}

function checkConf(item,name,session){
    new Ajax.Request('cms/modules/captcha/check.php', {
      method: 'get',
      parameters: {formcaptcha: $(name).value, n: name, s: session},
      onSuccess: function(t) {
        if(t.responseText == 'error'){
            alert('Confirmation code is incorrect!');
            return false;
        }else{
            var check = validateStandard(item, 'error');
            if(check==true){
                item.submit();
            }
        }
      }
    });
    return false;
    
}

function refreshProducts(manufacturer, products) {

    // check it works

    //alert(products[manufacturer]);
    document.contactForm.product.options.length = 0;
    //document.contactForm.product.options = products[manufacturer];

    var productArray = products[manufacturer];

    for (var i = 0; i < productArray.length; ++i) {

        if (productArray[i]) {
            var optn = document.createElement("OPTION");
            optn.text = productArray[i];
            optn.value = i;
            document.contactForm.product.options.add(optn);
            //alert(optn);
        }            
    }
}

function preloadManufacturerProduct(manufacturerID, productID, products) {

    // Get the array key for the selected manufacturer

    var manOptionArray = document.contactForm.manufacturer.options;

    for (mLoop = 0; mLoop < manOptionArray.length; mLoop++) 
    {
        if (manOptionArray[mLoop].value == manufacturerID) 
        {
            // select that option
            manOptionArray[mLoop].selected = true;
        }
    }

    // Preload this manufacturer's products

    refreshProducts(manufacturerID, products);

    // Get the array key for the selected product
    
    var prodOptionArray = document.contactForm.product.options;

    for (pLoop = 0; pLoop < prodOptionArray.length; pLoop++) {
        if (prodOptionArray[pLoop].value == productID) {
            // select that option
            prodOptionArray[pLoop].selected = true;
        }
    }
}