
/////////// BROWSER DETAILS //////////////
var browser = new Array();
browser["name"];
browser["version"];

var browserDims = new Array();

var _glbNumJobSelected = 0;
var _glbJobsSelected = new Array();

function detectBrowser(){
	browser["name"] = navigator.vendor;
	if(browser["name"] == undefined || browser["name"] == ''){
		browser["name"]  = navigator.appName;
	}
	browser["version"]=navigator.appVersion;
	var version=parseFloat(browser["version"]);
	//alert(browser);
	return browser;
}

function getBrowserSize() {

  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } 
  else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {

    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } 
  else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }

  browserDims["height"] = myHeight;
  browserDims["width"] = myWidth;

  return browserDims;
}

function checkDeliveryArea(){
	var stringToCheck = "";
	if ($('.deliveryCheck input')[0].value != ""){
		stringToCheck = $('.deliveryCheck input')[0].value;
	}
	else {
		stringToCheck = $('.deliveryCheck input')[1].value;
	}
	
	var r = new deliveryRespond();
	r.setCallbackHandler(checkDeliveryAreaResponse);
	
	r.setErrorHandler(errorHandler);
	
	r.checkDeliveryArea(stringToCheck);
	
}

function checkDeliveryAreaResponse(resp) {
	if (resp == 1)
	{
		document.getElementById('zone1Delivery').style.display = "";
		document.getElementById('zone2Delivery').style.display = "none";	
		document.getElementById('noDelivery').style.display = "none";
	} else if (resp == 2)
	{
		document.getElementById('zone1Delivery').style.display = "none";
		document.getElementById('zone2Delivery').style.display = "";	
		document.getElementById('noDelivery').style.display = "none";
	} else {
		document.getElementById('zone1Delivery').style.display = "none";
		document.getElementById('zone2Delivery').style.display = "none";	
		document.getElementById('noDelivery').style.display = "";
	}
}

function itemSearch(itemName) {
	var r = new productResponse();
	r.setCallbackHandler(itemSearchResponse);
	r.setErrorHandler(errorHandler);
	r.productSearch(itemName);
}

function itemSearchResponse(resp) {
	console.log(resp);
}

function commitCart() {
	cartArea('payment');
}

function addCartItem(prdID,fromPage,options){
	var prodObj = new Object;
	
	prodObj.prdID = prdID;
	
	if(fromPage == 'list'){
		prodObj.prdQty = document.getElementById('prdQty_'+prdID).value;
	}else{
		//prodObj.prdQty = parent.document.getElementById('prdQty_'+prdID).value;

		//document.getElementById('contentFrame'));
		//var field = $('contentFrame').contents().find('#prdQty_2');
		//alert(field.val());
	}
	
	//fix for lack of js method overloading
	if (options) {
		if(options.scale)
		{
			var weightObject;
			if ($('input[name='+options.scale+']').length == 0) {
				weightObject = $('select[name='+options.scale+']');
			}
			else {
				weightObject = $('input[name='+options.scale+']');
			}
			prodObj.prdScaleType = weightObject.val();
		}	
		else if (options.scaleType) {
			prodObj.prdScaleType = options.scaleType;
		}
		else {
			prodObj.prdScaleType = 1000;
		}
		if(options.quantity) {
			prodObj.prdQty = options.quantity;	
		}
	}
	
	//initiate the proxy with a local var 
	var r = new respond()
	
	if(fromPage == 'stored') {
		//define the response function 
		r.setCallbackHandler(addItemResponseNothing)
	} else {
		//define the response function 
		r.setCallbackHandler(addItemResponse)
	}
	
	//define the error handler 
	r.setErrorHandler(errorHandler)

	//call the function from the CFC 
	r.addItem(prodObj)
}

function addItemResponseNothing(resp) {
	// do nothing here.
}

function addItemResponse(resp) {
	if ($('#cartItems').length != 0) //potentially cross browser issue
	{
		ColdFusion.navigate('/shop/cartItems.cfm','cartItems');	
	}
}

function updateCartItem(prdID){

	var prodObj = new Object;
	prodObj.prdID = prdID;

	prodObj.prdQty = document.getElementById('prdQty_'+prdID).value;

	//initiate the proxy with a local var 
	var r = new respond()
	
	//define the response function 
	r.setCallbackHandler(updateItemResponse)
	
	//define the error handler 
	r.setErrorHandler(errorHandler)
	
	//call the function from the CFC 
	r.updateItem(prodObj)

}

function updateItemResponse(resp){
	window.location = '/shop/shopping_cart.cfm';
	// ColdFusion.navigate('/shop/cartDetail.cfm','cartDetail');
}

function removeCartItem(prdID){

	var prodObj = new Object;
	prodObj.prdID = prdID;
	
	//initiate the proxy with a local var 
	var r = new respond()
	
	//define the response function 
	r.setCallbackHandler(removeItemResponse)
	
	//define the error handler 
	r.setErrorHandler(errorHandler)
	
	//call the function from the CFC 
	r.removeItem(prodObj)

}

function removeItemResponse(resp){

	ColdFusion.navigate('/shop/cartItems.cfm','cartItems');
	
}

function removeCartDetailItem(prdID){

	var prodObj = new Object;
	prodObj.prdID = prdID;
	
	//initiate the proxy with a local var 
	var r = new respond()
	
	//define the response function 
	r.setCallbackHandler(removeDetailItemResponse)
	
	//define the error handler 
	r.setErrorHandler(errorHandler)
	
	//call the function from the CFC 
	r.removeItem(prodObj)

}

function removeDetailItemResponse(resp){
	window.location = '/shop/shopping_cart.cfm';
	// ColdFusion.navigate('/shop/cartDetail.cfm','cartDetail');
}

// Error handler for the asynchronous functions 
function errorHandler(statusCode,statusMsg) {
	alert(statusCode+': '+statusMsg)
}



function showProductDetails(urlParam){
	
	browserDimensions = getBrowserSize();
	//prdDetailsWin. = null;
	
	//centre the window
	var openLeft = browserDimensions.width / 2 - 300;
	var openTop = browserDimensions.height / 2 + 300;
	
	prdDetailsWin = dhtmlmodal.open('productData', 'div', 'modalalertdiv','', 'width=645px,height=505px,left='+openLeft+'px,top=100px,resize=0,scrolling=0',"recal");
	
	prdDetailsWin.style.zIndex=150;
 	
	prdDetailsWin.onclose=function(){
		
		if (vbrowser.name == "Apple Computer, Inc."){
			//this is to fix a bug in Safari where it wouldn't close the flash video player on close of the modal window
			prdDetailsWin.contentDoc.getElementById('showDetails').document.getElementById('flashcontent').innerHTML = '';
		}else{
		
		document.getElementById('contentFrame').src = "";
		}
		return true;
	}

	
	
	var vURL = "http://"+document.domain+"/shop/product_detail.cfm?id="+urlParam;

	vbrowser = detectBrowser();
		
		//Added this because of a bug in safari that can't handle obj.src being set
		if (vbrowser.name == "Apple Computer, Inc."){
			prdDetailsWin.load('iframe', vURL, '');
			prdDetailsWin.frames[0].style.border = "0px";
			prdDetailsWin.moveTo("middle", "middle");
			prdDetailsWin.setSize(800,640);
			
			
		}
		else {

			document.getElementById('contentFrame').src = vURL;
		}
		
	

}


function closeVeil(){
	parent.dhtmlwindow.close(parent.document.getElementById('productData'));
	parent.document.getElementById('interVeil').style.display= "none";
}


function cartArea(linkID){
	
	switch (linkID){
		case "basket":
			if (basketActive){
				document.getElementById('basket').className = "basket_on";
				document.getElementById('shoppingCart').style.display = "block";
				document.getElementById('payment').className = "payment_off";
				document.getElementById('paymentDetails').style.display = "none";
				document.getElementById('delivery').className = "delivery_off";
				document.getElementById('deliveryDetails').style.display = "none";
				document.getElementById('confirm').className = "confirm_off";
				document.getElementById('confirmationDetails').style.display = "none";
				deliveryActive = true;
			}
			break;
		case "payment":
				if (paymentActive) {
					document.getElementById('basket').className = "basket_off";
					document.getElementById('shoppingCart').style.display = "none";
					document.getElementById('payment').className = "payment_on";
					document.getElementById('paymentDetails').style.display = "block";
					document.getElementById('delivery').className = "delivery_complete";
					document.getElementById('deliveryDetails').style.display = "none";
					document.getElementById('confirm').className = "confirm_off";
					document.getElementById('confirmationDetails').style.display = "none";
					ColdFusion.navigate('cartPayment.cfm', 'paymentSummaryMain', 'prepareCCForm');
				}
			break;
		case "delivery":
			if(deliveryActive){
				document.getElementById('basket').className = "basket_off";
				document.getElementById('shoppingCart').style.display = "none";
				document.getElementById('payment').className = "payment_off";
				document.getElementById('paymentDetails').style.display = "none";
				document.getElementById('delivery').className = "delivery_on";
				document.getElementById('deliveryDetails').style.display = "block";
				document.getElementById('confirm').className = "confirm_off";
				document.getElementById('confirmationDetails').style.display = "none";
			}
			break;
		case "confirm":
				if (confirmActive) {
					document.getElementById('basket').className = "basket_off";
					document.getElementById('shoppingCart').style.display = "none";
					document.getElementById('payment').className = "payment_complete";
					document.getElementById('paymentDetails').style.display = "none";
					document.getElementById('delivery').className = "delivery_complete";
					document.getElementById('deliveryDetails').style.display = "none";
					document.getElementById('confirm').className = "confirm_on";
					document.getElementById('confirmationDetails').style.display = "block";
				}
			break;
	}
}


function showDeliveryInput(){
	
	document.getElementById('enterDelDetails').style.display = "block";
	document.getElementById('enterPickDetails').style.display = "none";
}

function showPickUpInput(){
	document.getElementById('enterPickDetails').style.display = "block";
	document.getElementById('enterDelDetails').style.display = "none";
	
}


function addDelivery(){

	var deliveryDetails = new Object;
	deliveryDetails.firstName = $('#delFirstName').val();
	deliveryDetails.lastName = $('#delLastName').val();
	deliveryDetails.phone = $('#delPhone').val();
	deliveryDetails.email = $('#delEmail').val();
	deliveryDetails.deliveryMethod = $('input[name$=delMethod]:checked').val();
	deliveryDetails.delAddress1 = $('#delAddress1').val();
	deliveryDetails.delAddress2 = $('#delAddress2').val();
	deliveryDetails.delTimeBracket = $('input[name$=delTimeBracket]:checked').val();
	deliveryDetails.suburb = $('#delSuburb').val();
	deliveryDetails.chillerBags = $('#delChillBag').val();
	deliveryDetails.store = $('#pickUpStore').val();
	deliveryDetails.pickUpDay = $('#pickUpDay').val();
	deliveryDetails.pickUpTime = $('#pickUpTime').val();
	deliveryDetails.delNotes = $('#delNotes').val();
	deliveryDetails.delReceiveEmails = $('input[name$=delReceiveEmails]:checked').val();
	paymentActive = true;

	//initiate the proxy with a local var 
	var r = new respond();
	
	//define the response function 
	r.setCallbackHandler(populateDB);
	
	//define the error handler 
	r.setErrorHandler(addDeliveryError);
	
	//call the function from the CFC 
	r.deliveryDetailsSubmit(deliveryDetails);

}

function addDeliveryError(statusCode,statusMsg) {
	alert(statusCode+': '+statusMsg);
}


function populateDB(resp){
	var r = new respond();
	r.setCallbackHandler(commitCart);
	r.setErrorHandler(errorHandler);
	r.populateSessionIntoDB();
}

function orderFocus(s) {	
	if (document.getElementById('orderSearch' + s).value == '[email]') 
		document.getElementById('orderSearch' + s).value = '';

	if (document.getElementById('orderSearch' + s).value == '[phone number]') 
		document.getElementById('orderSearch' + s).value = '';
}

function orderBlur(s) {
	if (document.getElementById('orderSearch' + s).value == '') {
		if (s == 'Email') {
			document.getElementById('orderSearch' + s).value = '[email]';
		} else {
			document.getElementById('orderSearch' + s).value = '[phone number]';
		}
	}
}

function retrieveOrder(email,phone) {
	if (email != "" && phone != "") {
		var r = new orderResponse();
		r.setCallbackHandler(retrieveOrderCallback);
		r.setErrorHandler(retrieveOrderError);
		r.retrieveOrder(email,phone);	
	}
}

function retrieveOrderError(statusCode,statusMsg) {
	//TODO HANDLE EMAIL ERROR
	alert(statusMsg);
}

function retrieveOrderCallback(resp) {
	setTimeout("sendToCart()", 500);
}

function sendToCart() {
	window.location = '/shop/shopping_cart.cfm';
}
