/**
 * 
 * @author cvivier
 */

function selectChange(el)
{
	var url = window.location.href;
	var arg = el.name + '=' + el.options[el.selectedIndex].value;
	if (window.location.href.indexOf('?') != -1) {
		re = new RegExp(el.name + '=([a-zA-Z0-9]*)', 'g');		
		if (re.test(url)) { url = url.replace(re, arg); }
		else { url = url + '&'+arg; }
	} else { url = url + '?'+arg; }	
	window.location.href = url;
	return false;
}

/* 
 *	 PREVIEW / PRELISTEN code below
 */
var curPreviewContainer = null;
var previewBox = null;
var previewBox_cover = null;
var previewBox_track = null;
var previewBox_artist = null;
var previewBox_type = null;
var previewBox_buy = null;
var previewBox_buy_price = null;
var previewBox_object = null;
var previewBox_object2 = null;
var previewBox_play = null;
var previewBox_stop = null;
var preview_link = null;

var preview_opacity = 0;
var preview_opacity_up = true;

var enableEffects = (window.Effect) ? true : false;
var objectMode = 'flash';

var volume_width;

function initPreviewBox()
{
	previewBox = document.getElementById('preview-box');
	previewBox_cover = document.getElementById('preview-box-cover');
	previewBox_track = document.getElementById('preview-box-track');
	previewBox_artist = document.getElementById('preview-box-artist');
	previewBox_type = document.getElementById('preview-box-type');
	previewBox_buy = document.getElementById('preview-box-buy');
	previewBox_buy_price = document.getElementById('preview-box-buy-price');
	previewBox_object = document.getElementById('preview-box-wmp');
	previewBox_object2 = document.getElementById('preview-box-wmp2');
	previewBox_play = document.getElementById('preview-box-play');
	previewBox_stop = document.getElementById('preview-box-stop');
		
	preview_link = document.getElementById('preview-link');
	
	try {
		if (document.getElementById('volume-level').addEventListener) {
			document.getElementById('volume-level').addEventListener('click', changeVolume, false);
		} else {
			document.getElementById('volume-level').attachEvent('onclick', changeVolume);
		}
		volume_width = 60;//document.getElementById('volume-level').style.width CoMPUTED
		setVolume(60);
	} catch (e) {}
	
	img1 = new Image();
	img1.src = '/images/modules/preview/preview_play_on.gif';
	img2 = new Image();
	img2.src = '/images/modules/preview/preview_play_on.gif';
	img3 = new Image();
	img3.src = '/images/modules/preview/preview_play_on.gif';
}

function populatePreviewBox(song)
{
	if (-1 != song) {
		// using .innerHTML to avoid IE "click to activate" with Flash
		previewBox_track.innerHTML = pl_tracks[song];
		previewBox_artist.innerHTML = pl_artists[song];
		if (previewBox_type) { previewBox_type.innerHTML = pl_type[song]; }
		if (previewBox_buy && hemisphere) {
			previewBox_buy.href = '/'+hemisphere+'/billing/?cp='+pl_cp[song];			
			previewBox_buy_price.innerHTML = pl_price[song];
		}
		if (pl_cw[song] > 0) {
			previewBox_cover.src = '/images/cover/56/w' + pl_cw[song] + '.jpg';			
		} else {
			previewBox_cover.src = '/images/cover/56/' + pl_cp[song] + '.jpg';
		}
		var url = '/media/prelisten/';
		var session_part = '';
		try {
			if (window._SI) { session_part = window._SI + '/'; }
		} catch(e) {};
		if (pl_cp[song] > 0) {
			url = url + session_part + 'p' + pl_cp[song];			
		} else {
			url = url + session_part + 'w' + pl_cw[song];
		}
		url = url + '.wma';
		try { previewBox_object.URL = url; } catch(e) { }
		try { previewBox_object2.src = url; } catch (e) { }					
	} else { // => if song == -1
		try { previewBox_object.URL = ''; } catch(e) { }
		try { previewBox_object2.src = ''; } catch (e) { }		
		
	}
}

function playPreview()
{
	try {
		if (previewBox_object.controls && previewBox_object.controls.isAvailable('play')) {
			previewBox_object.controls.play();
		} else if (previewBox_object2.controls && previewBox_object2.controls.isAvailable('play')) {
			previewBox_object2.controls.play();	
		}
	} catch (e) { }
	

}

function stopPreview()
{
	try {
		if (previewBox_object.controls && previewBox_object.controls.isAvailable('stop')) {
			previewBox_object.controls.stop();
		} else if (previewBox_object2.controls && previewBox_object2.controls.isAvailable('stop')) {
			previewBox_object2.controls.stop();	
		}
	} catch (e) { }
}

function setVolume(vol)
{
	try {		
		if (previewBox_object.settings && previewBox_object.settings.volume) {
			previewBox_object.settings.volume = vol;
		} else if (previewBox_object2.settings && previewBox_object2.settings.volume) {
			previewBox_object2.settings.volume  = vol;	
		}
		document.getElementById('volume').style.width = (vol / 100) * volume_width;
	} catch (e) {}	
}

function changeVolume(event)
{
	var pos = event.offsetX ? event.offsetX : event.layerX;
	var vol = (pos / volume_width) * 100;
	setVolume(vol);	
}

function playStateChange(state)
{
	switch (state)
	{
		case 1:
			previewBox_stop.src = '/images/modules/preview/preview_stop_on.gif';
			previewBox_play.src = '/images/modules/preview/preview_play_off.gif';
			previewBox_stop.alt = 'Stopped'; previewBox_stop.title = 'Stopped';
			previewBox_play.alt = 'Play'; previewBox_play.title = 'Play';			
			break;		
		case 3:		
			previewBox_play.src = '/images/modules/preview/preview_play_on.gif';
			previewBox_stop.src = '/images/modules/preview/preview_stop_off.gif';
			previewBox_stop.alt = 'Stop'; previewBox_stop.title = 'Stop';			
			previewBox_play.alt = 'Playing'; previewBox_play.title = 'Playing';
			break;
	}
}

function previewFromTd(td)
{	
	TogglePreview(td.parentNode.parentNode);
	return false;
}

function previewFromLink(a)
{	
	TogglePreview(a);
	return false;
}

function closePreview()
{
	HidePreview(null);
	return false;
}

function TogglePreview(previewContainer)
{
	if (null == previewBox) {
		initPreviewBox();
	}
	if (curPreviewContainer == previewContainer
		|| (previewContainer == preview_link 
		&& curPreviewContainer != preview_link
		&& previewBox.style.display=='block')) {
		HidePreview(curPreviewContainer);
		return;
	} else if (null != curPreviewContainer) {
		HidePreview(curPreviewContainer);
	}
	curPreviewContainer = previewContainer;

	previewContainer.className += ' selected';
	try {
		img = previewContainer.getElementsByTagName('img')[0];
		img.src = '/img/icon_speaker.gif';
		img.alt = 'Stop preview';
		img.title = 'Stop preview';
	} catch (e) {}	
	
	populatePreviewBox(previewContainer.getAttribute('song'));
	previewBox.style.display = 'block';	
	if (null != preview_link) {
		preview_link.src = '/images/buttons/pause.gif';
		try { preview_link.title = 'Stop preview'; preview_link.alt = 'Stop preview'; } catch (e) {}
	}
}

function HidePreview(previewContainer)
{
	if (null != curPreviewContainer) {
		curPreviewContainer.className = curPreviewContainer.className.replace('selected', '');		
		try {
			img = curPreviewContainer.getElementsByTagName('img')[0];
			img.src = '/img/icon_speaker.gif';
			img.alt = 'Preview this track';
			img.title = 'Preview this track';			
		} catch (e) {}
		curPreviewContainer = null;
	}
	previewBox.style.display = 'none';
	if (null != preview_link) {
		preview_link.src = '/img/icon_speaker.gif';
		try { preview_link.title = 'Play preview'; preview_link.alt = 'Play preview'; } catch (e) {}
	}
	populatePreviewBox(-1);
}


var xhr = null;
var xhr_url = null;

function getXHR()
{
	try {
		var tmp = null;
		try { tmp = new XMLHttpRequest(); } catch (e) { tmp = null; }		
		if (!tmp && window.ActiveXObject) {
			tmp = new ActiveXObject('Msxml2.XMLHTTP');
			if (!tmp) { tmp = new ActiveXObject('Microsoft.XMLHTTP'); }
		}
   		if (tmp.overrideMimeType) {	tmp.overrideMimeType("text/xml"); }
		return tmp;
	} catch (e) {
		return null;
	}	
}

function doAsyncSearch(hemisphere)
{
	try {
		xhr = getXHR();
		if (!xhr) { return true; }
				
		xhr_url = '/'+hemisphere+'/search/?lsearch='+escape(document.searchForm.lsearch.value);
		xhr.open('GET', xhr_url+'&lajax=1', true);
		xhr.onreadystatechange = onAsyncSearchChange;
		xhr.send(null);

		hideSearch();
		
		return false;
	} catch (e) {
		showSearch();
		return true;		
	}
}

function onAsyncSearchChange()
{	
	if (xhr.readyState == 4) {
		try {		
			window.location.href = xhr_url;
		} catch (e) {
			showSearch('Search unavailable!');
		}
	}
}

function showSearch(text)
{
	var el = document.getElementById('searchProgress');
	if (el) { el.style.display = 'none'; }	
	el = document.getElementById('searchForm');
	if (el) { el.style.display = 'block'; }
	if (null != text) {
		document.searchForm.lsearch.value = text;
	}
}

function hideSearch()
{
	var el = document.getElementById('searchForm');
	if (el) { el.style.display = 'none'; }
	el = document.getElementById('searchProgress');
	if (el) { el.style.display = 'block'; }	
}

var handsetStep = 0;


function XHRsend()
{
	xhr_url = '/handsetd.php?_shop_dal_xml_flush=1&step='+handsetStep;
	xhr.open('GET', xhr_url, true);
	xhr.onreadystatechange = onAsyncHandsetDetectionChange;
	xhr.send(null);
}

function startHandsetDetection()
{
	var el = document.getElementById('progress');
	try {
		xhr = getXHR();
		if (!xhr) { return true; }

		handsetStep = 1;
				
		el.innerHTML = '<img src="/images/progress_indicator.gif" alt="Progress indicator" title="Progress indicator" /> Sending TXT to your mobile...';
		el = document.getElementById('send');
		el.style.display = 'none';		

		XHRsend();
		
		return false;
	} catch (e) { // FIXME: REST fallback todo
		el.innerHTML = '<img src="/images/icons/icon_warning.gif" alt="Warning" title="Warning" /> Sorry! Your browser is not compatible with this feature.<br /><a href="/ringtones/?l_page=handset" class="link">Click here to select your handset manually</a>';
		return false;		
	}	
}

function onAsyncHandsetDetectionChange()
{
	if (xhr.readyState == 4) {
		var el = document.getElementById('progress');
		if (handsetStep == 1) {			
			if (xhr.responseText == 'NO') {
				el.innerHTML = '<img src="/images/icons/icon_warning.gif" alt="Warning" title="Warning" /> Sorry! There is a technical error, please retry again later.<br /><a href="/ringtones/?l_page=handset" class="link">Or click here to select your handset manually</a>';
				return;			
			}			
			el.innerHTML = '<img src="/images/progress_indicator.gif" alt="Progress indicator" title="Progress indicator" /> Please activate the link sent on your mobile.<br /> &nbsp; This page will refresh automatically when done.';
			handsetStep = 2;
			setTimeout('XHRsend()', 5000);
		} else if (handsetStep == 2) {
			if (xhr.responseText != 'NO') {
				handsetStep = 3;
				var handsetBits = xhr.responseText.split('::::');
				el.innerHTML = 'Thank you! Your mobile has been identified as : '+handsetBits[0];
				el = document.getElementById('handset');
				el.innerHTML = handsetBits[0];
				el = document.getElementById('handset-sft-compat');
				if (el) {
					if (handsetBits[1] == '1') {
						el.innerHTML = 'Your mobile will play music.';
					} else {
						el.innerHTML = 'Sorry. Your mobile cannot play music.';
					}
				}
				el = document.getElementById('continue-link');
				el.style.display = 'block';
			} else {
				setTimeout('XHRsend()', 5000);
			}	
		}						
	}
}

// add the missing grail function : get tags with a given CSS class 
function setElementsOfClassNameVisible(clsName, tag) { 
  for(var i=0,a=document.getElementsByTagName(((tag)?tag:"*")); (e = a[i]); i++)
  	if (e.className == clsName)
  		e.style.display = 'block';
}


// WMP Simple check
function checkWMPinstalled() {
	try
	{
		var objWMP = new ActiveXObject("WMPlayer.OCX");
		var lPlayerVersion = parseInt(objWMP.versionInfo);
		if (objWMP) delete(objWMP);
	}
	catch(e) { return false; }

	return true;

}

// WMP Simple check
function checkWMPversion() {
	try
	{
		var objWMP = new ActiveXObject("WMPlayer.OCX");
		var lPlayerVersion = parseInt(objWMP.versionInfo);
		if (objWMP) delete(objWMP);
	}
	catch(e) { return false; }

	if(lPlayerVersion <  9)
		return false;
	else
		return true;
}

function WMPcheck()
{	
	
	var fIE6 = false;
	if (navigator.appName == 'Microsoft Internet Explorer') {/* FIXME: */
		fIE6 = true;
	}

	fWMPinstalled = checkWMPinstalled();
	fWMPversion = checkWMPversion();

	if (!handset_sft_compat && (!fIE6 || !fWMPinstalled || !fWMPversion)) {
		if(document.getElementById('wmp-no-handset')) {
			document.getElementById('wmp-no-handset').style.display = 'block';
		}
	}

	if (!fIE6) {
		if(document.getElementById('ie-version')) {
			document.getElementById('ie-version').style.display = 'block';
		}
		if(document.getElementById('buttons-buy')) {
			document.getElementById('buttons-buy').style.display = 'none';
		}
	} 
	else if (!fWMPinstalled) {
		if(document.getElementById('wmp-no-1')) {
			document.getElementById('wmp-no-1').style.display = 'block'; // user tool box
		}
		if(document.getElementById('wmp-no-2')) {
			document.getElementById('wmp-no-2').style.display = 'block'; // other instance in the page
		}
		if(document.getElementById('buttons-buy')) {
			document.getElementById('buttons-buy').style.display = 'none';
		}
	}
	else if (!fWMPversion) {
		if(document.getElementById('wmp-version')) {
			document.getElementById('wmp-version').style.display = 'block';
		}
		if(document.getElementById('buttons-buy')) {
			document.getElementById('buttons-buy').style.display = 'none';
		}
	}

	if (fIE6 && fWMPinstalled && fWMPversion ) {
		if(document.getElementById('download_th')) {
			document.getElementById('download_th').style.display = 'block';
			setElementsOfClassNameVisible( 'download_td', 'td');
		}
	}
}



var ci = null;
var a = null;
var a_bak = '';
var a_bak_class = '';
var validator = /\<LICENSERESPONSE\>.+\<\/LICENSERESPONSE\>/g;
var orders = new Array();
var dlink = null;
var dlorder = false;
var pending_timer = false;

function saveAsWarning(el)
{
 if (el)
 {
  var hide = document.getElementById('saveas-stop').checked;
  
  with (document.getElementById('saveas'))
  {
   if (hide)
   {
    style.visibility = 'hidden';
    style.display = 'none';
   }
   else
   {
    style.visibility = 'visible';
    style.display = 'block';
   }
  }
 }
}

function storeLicense(license)
{
 try
 {
   document.getElementById('getLicenseObj').storeLicense(license);
 }
 catch (e)
 {
   alert('Sorry, an error (' + (e.number & 0xFFFF) + ' ' + e.number + ') occured during license retrieval. Please retry again later or contact support services.');
 }
}

function GetTrack(okeys,url,link)
{
	if (okeys)
	{
		//alert(okeys);
	 dlpopup = false;

	 saveAsWarning(link);
	 
  if (dlink) Done();
 
	 if (!link.okeys) link.okeys = okeys;
	 	
	 orders = link.okeys.split(',');
	 
	 dlink = link;

		Pending();
	}
	return true;
}

function GetNextTrack()
{
 if (orders.length)
 {
		with (document.getElementById(dlink.id))
		{
			innerHTML = '<img src="/images/progress_indicator.gif" alt="Progress indicator" title="Progress indicator" width="16" height="16"/>'
             + 'Preparing licences : ' + orders.length + ' license' + ((orders.length > 1)? 's' : '') + ' left';
		}
		LicenseGet(orders.shift());
		
		return true;
 }
	else Done();

 return false;
}

function LicenseGet(okey)
{
	if (okey)
	{
		var ci = 'wmClientInfo=' + escape(RMlib.GetSystemInfo());
	
		Ajax.query('/?a=19&oKey=' + okey, function() { LicenseStore(okey); pending_timer = window.setTimeout("GetNextTrack()", 50); }, 'POST', ci);
	}
	return okey;
}

function LicenseStore(okey)
{
	var okeys = new RegExp(okey, 'g');
	
	if (LicenseValidate(license = Ajax.Sock.responseText))
	{
		try {
		 RMlib.StoreLicense(license);
		 if (dlink) dlink.okeys = dlink.okeys.replace(okeys, '').replace(/,+/, ',').replace(/^,/, '').replace(/,$/, '');
		 return true;
	 }
	 catch(e) {
   alert('Sorry, an error (' + (e.number & 0xFFFF) + ' ' + e.number + ' ' + okey + ') occured during license retrieval. Please retry again later or contact support services.');
   return false;
	 }
	}
	return false;
}

function LicenseValidate(license)
{
	return (license && validator && (license.search(validator) >= 0))
}

function Pending()
{
 if (dlink)
 {
		with (document.getElementById(dlink.id))
		{
	 	dlink.bakinnerHTML = innerHTML;
	 	dlink.bakclassName = className;	
 	
	 	className = 'nolink';
	 	innerHTML = '<img src="/images/progress_indicator.gif" alt="Progress indicator" title="Progress indicator" width="16" height="16"/>';
	 	
	 	if (orders.length > 1)
	 		innerHTML += 'Preparing licences : ' + orders.length + ' licenses left';
	 	else
	 		innerHTML += 'Retrieving license...';
		}
		 		
 	LicenseGet(orders.shift());
 }
}

function Done()
{
	//alert(dlink.id);
 if (dlink)
 {
		with (document.getElementById(dlink.id))
		{
			innerHTML = dlink.bakinnerHTML;
			setAttribute('done', 'yes');
	 	if (!dlink.okeys)
	 	{
				onclick = function() { return true; };
				
				if (dlink.bakclassName.search(/link-selected/g) >= 0)
				{
					className = 'link';
				}
				else
				{
					className = dlink.bakclassName;
				}
			}
			else className = dlink.bakclassName;
		}
 	
 	dlink = null;
	 window.clearTimeout(pending_timer);
	 pending_timer = false;
 }
}


/* help thingies from ss */
/*
function help_popup(){
	popup = window.open('http://vodafonenz.custhelp.com/','help','width=800,height=550,scrollbars=1,toolbar=1,resizeable=1');
	help.focus();
}
function kbsearch_popup(searchterm)
{
	kbsearch = window.open('http://vodafonenz.custhelp.com/cgi-bin/vodafonenz.cfg/php/enduser/std_alp.php?p_sid=vqBpcQui&p_lva=&p_li=&p_page=1&p_cv=&p_pv=2.668&p_prods=76%2C668&p_cats=&p_hidden_prods=&prod_lvl1=76&prod_lvl2=668&p_search_text=' + searchterm + '&p_new_search=1','help','width=800,height=550,scrollbars=1,toolbar=1,resizeable=1');
 	kbsearch.focus();
}
function kbitem_popup(id){
	kbitem = window.open('http://vodafonenz.custhelp.com/cgi-bin/vodafonenz.cfg/php/enduser/std_adp.php?p_faqid="' + id + '"','help','width=800,height=550,scrollbars=1,toolbar=1,resizeable=1');
	kbitem.focus();
}
*/

function updateGST(cid_pp) {
	price = cid_pp.value.split('@@@@');
	price = price[2];
	document.getElementById('CID_PP_0').value = cid_pp.value;
	document.getElementById('total-amount').innerHTML = '$' + price;
	document.getElementById('gst-amount').innerHTML = '$' + (price-(price*(1/(g_vat_rate+1)))).toFixed(2);
}
