﻿var http_request = false;

function makePOSTRequest(url, parameters) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
	 http_request = new XMLHttpRequest();
	 if (http_request.overrideMimeType) {
		// set type accordingly to anticipated content type
		//http_request.overrideMimeType('text/xml');
		http_request.overrideMimeType('text/html');
	 }
  } else if (window.ActiveXObject) { // IE
	 try {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
		try {
		   http_request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	 }
  }
  if (!http_request) {
	 alert('Cannot create XMLHTTP instance');
	 return false;
  }
  
  http_request.onreadystatechange = alertContents;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);
}

function generateGuid()
{
	var result, i, j;
	result = '';
	for(j=0; j<32; j++)
	{
		if( j == 8 || j == 12|| j == 16|| j == 20)
			result = result + '-';
		i = Math.floor(Math.random()*16).toString(16).toUpperCase();
		
		result = result + i;
	}
	return result
} 

function alertContents() {
  if (http_request.readyState == 4) {
	 if (http_request.status == 200) {
		//alert(http_request.responseText);
		result = http_request.responseText;
		//document.getElementById('myspan').innerHTML = result;    
		//alert(result);
		
		//Post to VCS
		var date = new Date();
		/*
		var numericalDateVal = 
			date.getSeconds() + 
			(date.getMinutes() * 60) +
			(date.getHours() * 60 * 60) + 
			(date.getYear() + date.getMonth() + date.getDay());
		*/
		//Unique number
		document.getElementById("p2").value = document.getElementById("hiddenTransactionReference").value;
		//Transaction Amount
		document.getElementById("p4").value = document.getElementById("traxTotalCost").innerHTML;
		//Card holder email
		document.getElementById("CardholderEmail").value = document.getElementById("emailTextbox").value;
		document.getElementById("loadingRow").style.display = "none";
		document.forms[1].submit();
		
	 } else {
		alert('There was a problem with the request.');
		document.getElementById("loadingRow").style.display = "none";
	 }
  }
}

function get(obj) {
  document.getElementById("loadingRow").style.display = "";
  document.getElementById("hiddenTransactionReference").value = generateGuid();
  
  var poststr = "nameTextbox=" + encodeURI( document.getElementById("nameTextbox").value ) +
				"&emailTextbox=" + encodeURI( document.getElementById("emailTextbox").value ) + 
				"&contactNumber=" + encodeURI( document.getElementById("contactNumber").value ) + 
				"&addressTextbox=" + encodeURI( document.getElementById("addressTextbox").value ) + 
				"&hiddenBackingTracks=" + encodeURI( document.getElementById("hiddenBackingTracks").value) +
				"&hiddenPaymentType=" + encodeURI( document.getElementById("hiddenPaymentType").value) +
				"&hiddenDeliveryType=" + encodeURI( document.getElementById("hiddenDeliveryType").value) + 
				"&hiddenTransactionReference=" + encodeURI( document.getElementById("hiddenTransactionReference").value);				

	makePOSTRequest('/cgi-sys/cgiemail/template.txt', poststr);
}

function addToCart()
{
	var errorMessage = "";
	var name = document.getElementById("nameTextbox").value;
	var emailaddress = document.getElementById("emailTextbox").value;
	var contactnumber = document.getElementById("contactNumber").value;
	var address = document.getElementById("addressTextbox").value;
	
	if (name == "")
	{
		errorMessage = "Name is a compulsory field.\n";
	}
	
	if (emailaddress == "")
	{
		errorMessage += "Email address is a compulsory field.\n";
	}
	
	if (contactnumber == "")
	{
		errorMessage += "Contact number is a compulsory field.\n";
	}
	
	if (address == "")
	{
		errorMessage += "Address is a compulsory field.";
	}
	
	if (errorMessage != "")
	{
		alert(errorMessage);
		return;
	}
	
	document.getElementById("emailForm").style.display = "none";
	document.getElementById("songsDiv").style.display = "none";
	document.getElementById("artistDiv").style.display = "none";
	document.getElementById("step1Table").style.display = "none";
	document.getElementById("paymentSelection").style.display = "";
	
	return;
}

function activatePaymentpanel(type)
{
	switch(type)
	{
		case "EFT":
			if (confirm("This will submit your transaction.\n\rAre you sure your want to continue ?",2))
			{
				document.getElementById("creditPaymentForm").style.display = "none";
				document.getElementById("hiddenPaymentType").value = "EFT / Direct Deposit";				
				document.forms[0].submit();
			}
			break;
		case "CREDIT":
			document.getElementById("creditPaymentForm").style.display = "";		
			document.getElementById("creditTotalLabel").innerHTML = 140 * parseInt(document.getElementById("traxCount").value,10);
			document.getElementById("traxTotalCreditFee").innerHTML = 10 * parseInt(document.getElementById("traxCount").value,10);
			document.getElementById("traxTotalCost").innerHTML = 
				(140 * parseInt(document.getElementById("traxCount").value,10)) +  
				(10 * parseInt(document.getElementById("traxCount").value,10)) +
				(10 * parseInt(document.getElementById("hiddenSongsWithKeyChanges").value,10));
			document.getElementById("traxTransposingFee").innerHTML = (10 * parseInt(document.getElementById("hiddenSongsWithKeyChanges").value,10));				
			document.getElementById("paymentSelection").style.display = "none";			
			document.getElementById("hiddenPaymentType").value = "Credit / Debit Card";
			break;
	}
}

function addDeliveryCost(type)
{
	document.getElementById("postageRow").style.display = "";
	document.getElementById("confirmCreditRow").style.display = "";
	document.getElementById("hiddenDeliveryType").value = type;
	
	switch(type)
	{
		case "RSA":
			document.getElementById("traxPostageFee").innerHTML = 70; 
			document.getElementById("traxTotalCost").innerHTML = 
				(140 * parseInt(document.getElementById("traxCount").value,10)) +  
				(10 * parseInt(document.getElementById("traxCount").value,10)) +
				(10 * parseInt(document.getElementById("hiddenSongsWithKeyChanges").value,10)) +
				70;
			document.getElementById("traxTransposingFee").innerHTML = (10 * parseInt(document.getElementById("hiddenSongsWithKeyChanges").value,10));
			break;
		case "INTERNATIONAL":
			document.getElementById("traxPostageFee").innerHTML = 420; 
			document.getElementById("traxTotalCost").innerHTML = 
				(140 * parseInt(document.getElementById("traxCount").value,10)) +  
				(10 * parseInt(document.getElementById("traxCount").value,10)) +
				(10 * parseInt(document.getElementById("hiddenSongsWithKeyChanges").value,10)) +				
				420;
			document.getElementById("traxTransposingFee").innerHTML = (10 * parseInt(document.getElementById("hiddenSongsWithKeyChanges").value,10));				
			break;
		case "EMAIL":
			document.getElementById("traxPostageFee").innerHTML = 0; 
			document.getElementById("traxTotalCost").innerHTML = 
				(140 * parseInt(document.getElementById("traxCount").value,10)) +  
				(10 * parseInt(document.getElementById("hiddenSongsWithKeyChanges").value,10)) +				
				(10 * parseInt(document.getElementById("traxCount").value,10));			
			document.getElementById("traxTransposingFee").innerHTML = (10 * parseInt(document.getElementById("hiddenSongsWithKeyChanges").value,10));				
			break;			
	}
}

function confirmCreditTransaction()
{
	get(this.parentNode);
}

function clearCart()
{
	document.getElementById("traxTotalZAR").innerHTML = "0";
	document.getElementById("traxCount").value = "0";
	document.getElementById("hiddenSongsWithKeyChanges").value = "0";
	var songbasket = document.getElementById("backingTracks"); 
	songbasket.value = "";
	return;
}

function addOption(selectbox,text,value)
{
    var optn = document.createElement("option");
    optn.text = text;
    optn.value = value;
    selectbox.options.add(optn);
}

function loadSongsForArtist()
{
    var songs = document.getElementById("songDropdown");
    songs.innerHTML = "";
    
    var req;
    if (window.XMLHttpRequest)
    {
        req = new XMLHttpRequest();
    }
    else
    {
        req = new ActiveXObject("MSXML2.XMLHTTP.3.0");
    }
    
    req.open("GET", "Xml/" + document.getElementById("artistDropDown").value + ".xml", false); 
    req.send(null);

    var xmlDoc = req.responseXML;		
    
    if (window.ActiveXObject)
    {
        var combooptions = xmlDoc.selectSingleNode("//comboitems");
        
		addOption(
			songs,
			"Select song...",
			"-1"
			);
			
        for(var i = 0; i < combooptions.childNodes.length; i++)
        {
            addOption(
                songs,
                combooptions.childNodes[i].text,
                combooptions.childNodes[i].attributes[0].value
                );
        }
    }
    else
    {
        //PathResult.ANY_TYPE == 0
        var songIterator = xmlDoc.evaluate("//option",xmlDoc, null, 0, null );
            
        var thisNode = songIterator.iterateNext();
        
		addOption(
			document.getElementById("songDropdown"),
			"Select song...",
			"-1"
			);
		
        while (thisNode) 
        {
            addOption(
                document.getElementById("songDropdown"),
                thisNode.textContent,
                thisNode.attributes[0].textContent
                );        
           
            thisNode = songIterator.iterateNext();
        }
    }
    
    document.getElementById("songsDiv").style.display = "";
	window.scrollTo(0,350);
}

function addSongToTable()
{
	if (document.getElementById("songDropdown").options[document.getElementById("songDropdown").selectedIndex].value != "-1")
	{
		var songKey = document.getElementById("songKey").value;
		
		var textToAppend = "";
		
		if (songKey != "")
		{
			textToAppend = document.getElementById("artistDropDown").options[document.getElementById("artistDropDown").selectedIndex].text 
			+ " - " + document.getElementById("songDropdown").options[document.getElementById("songDropdown").selectedIndex].text 
			+ " - " + document.getElementById("songKey").value + "\n";
			
			var songsWithKeyChanges = document.getElementById("hiddenSongsWithKeyChanges");
			songsWithKeyChanges.value = parseInt(songsWithKeyChanges.value,10) + 1;			
		}
		else
		{
			textToAppend = document.getElementById("artistDropDown").options[document.getElementById("artistDropDown").selectedIndex].text 
			+ " - " + document.getElementById("songDropdown").options[document.getElementById("songDropdown").selectedIndex].text 
			+ "\n";			
		}
	
		document.getElementById("songKey").value = "";
		
		//addOption(document.getElementById("backingTracks2"),textToAppend,textToAppend);
				  
		var songbasket = document.getElementById("backingTracks");       
		//songbasket.innerHTML = songbasket.innerHTML + textToAppend;
		songbasket.value = songbasket.value + textToAppend;
		
		var hiddenSongBasket = document.getElementById("hiddenBackingTracks");
		hiddenSongBasket.value = songbasket.value;
		
		document.getElementById("songsDiv").style.display = "none";
		document.getElementById("emailForm").style.display = "";
		
		var songs = document.getElementById("songDropdown");
		songs.innerHTML = "";

		var traxCount = document.getElementById("traxCount");
		traxCount.value = parseInt(traxCount.value,10) + 1;

		var traxTotalLabel = document.getElementById("traxTotalZAR");
		traxTotalLabel.innerHTML = (parseInt(traxCount.value,10) * 140) + 
			(10 * parseInt(document.getElementById("hiddenSongsWithKeyChanges").value,10));
		
		window.scrollTo(0,450);
	}
	else
	{
		alert("Please select a song first.");
	}
}
