//HASH TABLE FUNCTIONS
var itemsForm = new Hash();
var countryRefurb = new Hash();

function load()
{
	if(getCookie('country')!='')
	{	
		updateCountryRefurb(getCookie('country'));
	};
}

function Hash()
{
	this.length = 0;
	this.items = new Array();
	for (var i = 0; i < arguments.length; i += 2) {
		if (typeof(arguments[i + 1]) != 'undefined') {
			this.items[arguments[i]] = arguments[i + 1];
			this.length++;
		}
	}
   
	this.removeItem = function(in_key)
	{
		var tmp_value;
		if (typeof(this.items[in_key]) != 'undefined') {
			this.length--;
			var tmp_value = this.items[in_key];
			delete this.items[in_key];
		}
	   
		return tmp_value;
	}

	this.getItem = function(in_key) {
		return this.items[in_key];
	}

	this.setItem = function(in_key, in_value)
	{
		if (typeof(in_value) != 'undefined') {
			if (typeof(this.items[in_key]) == 'undefined') {
				this.length++;
			}

			this.items[in_key] = in_value;
		}
	   
		return in_value;
	}

	this.hasItem = function(in_key)
	{
		return typeof(this.items[in_key]) != 'undefined';
	}

	this.getKeys = function()
	{	
		var keys = Array( this.items.length );
		var i = 0;
		for ( var k in this.items )
		{
			keys[i] = k;
			i++;
		}
		return keys;
	}
}

// AJAX FUNCTION

var ie = (document.all && document.getElementById);
var ns = (!document.all && document.getElementById); 
var sf = navigator.userAgent.indexOf( 'AppleWebKit' ) != -1;

ajaxObj=new Object();
ajaxObj.url='';
ajaxObj.updateId='';
ajaxObj.parametersPost='';

function getRequest() {
	var xmlHttp;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest();
	}
	catch (e) {
		// Internet Explorer
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {
				alert( "Pas d'AJAX, pas de chocolat !" );
				return false;
			}
		}
	}
	return xmlHttp;
}

function updateContentViaAjax(anUrl, anIdToBeAjaxed, someParameters)
{	
	ajaxObj.url=anUrl;
	ajaxObj.updateId=anIdToBeAjaxed;
	ajaxObj.parametersPost=someParameters;
	
	makePOSTRequest();
}

function makePOSTRequest()
{
	http_request = false;

	if (window.XMLHttpRequest)
	{
		// Mozilla, Safari,...
		http_request = new XMLHttpRequest();

		if (http_request.overrideMimeType)
		{
			http_request.overrideMimeType('text/xml');
		}
	}
	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 XML instance');
		return false;
	}

	http_request.onreadystatechange = alertContents;
	http_request.open('POST', ajaxObj.url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", ajaxObj.parametersPost.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(ajaxObj.parametersPost);
}

function alertContents()
{	
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			//alert(http_request.responseText);
			result = http_request.responseText;
			document.getElementById(ajaxObj.updateId).innerHTML = result;

			updateContentViaAjaxAfter();
		}
		else
		{
			alert('There was a problem with the request.');
		}
	}
}

function updateContentViaAjaxAfter()
{
	if(document.getElementById('errorSaving'))
	{
		var aValue = document.getElementById('errorSaving').value;
		var aValueExploded = aValue.split("-");

		if(aValueExploded[1]=='focus')
		{
			document.getElementById(aValueExploded[0]).focus();
		}
		else if(aValueExploded[1]=='hide')
		{
			document.getElementById(aValueExploded[0]).style.display='none';
		}
	}
	else if(document.getElementById('redirectWebpage'))
	{
		window.location=document.getElementById('redirectWebpage').value;
	}
}

function getPostParametersCreateAccount()
{
	var postString='';

	postString = '&email=' + encodeURIComponent(document.getElementById('email').value);
	postString+= '&password=' + encodeURIComponent(document.getElementById('password').value);
	postString+= '&passwordCheck=' + encodeURIComponent(document.getElementById('passwordCheck').value);
	postString+= '&language=' + document.getElementById('language').options[document.getElementById('language').selectedIndex].value;
	postString+= '&newProducts=' + document.getElementById('newProducts').checked;
	postString+= '&specialOffers=' + document.getElementById('specialOffers').checked;

	if(document.getElementById('emailCheck'))
	{
		postString+= '&emailCheck=' + encodeURIComponent(document.getElementById('emailCheck').value);
	}
	
	return postString;
}

function getPostParameters()
{
	var itemFormskeys = itemsForm.getKeys();
	var postString='';

	for(i=0; i<itemFormskeys.length; i++)
	{
		postString+='&' + itemFormskeys[i] + '=' + encodeURIComponent(itemsForm.getItem(itemFormskeys[i]));
	}

	return postString;
}

// Update multiple elements qithin one script
function updateAllElements(anElementContainerType, anElementContainerValue, searchForTag, filterType, filterValue, updateWhatType, updateWhatValue, updateWhatVariable1, updateWhatVariable2)
{
	var alltags;
	
	if(anElementContainerType=='id')
	{
		alltags = document.getElementById(anElementContainerValue).getElementsByTagName(searchForTag);
	}
	
	for (i=0; i<alltags.length; i++)
	{
		if(filterType!='')
		{
			if(filterType=='name')
			{
				if(alltags[i].name!=filterValue)
				{
					continue;
				}
			}
			else if(filterType=='class')
			{
				if(alltags[i].className!=filterValue)
				{
					continue;
				}				
			}
		}

		/*
		if(updateWhatType=='altern')
		{
		}
		*/

		if(updateWhatValue=='display')
		{
			alltags[i].style.display=updateWhatVariable1;
		}
		else if(updateWhatValue=='class')
		{
			alltags[i].className=updateWhatVariable1;
		}
	}	
}

//tabs list
var filterProducts = new Hash();

filterProducts.setItem('countries', '0');
filterProducts.setItem('products', '0');


function tabAnimationOnMouseOver(aTab) {
	if(aTab.className!='tabButtonOver tabButtonClicked'){
		aTab.className='tabButtonOver';
	}
}

function tabAnimationOnMouseOut(aTab) {
	if(aTab.className=='tabButtonOver'){
		aTab.className='tabButton';
	}
}
			
function tabAnimationOnClick(aTab) {
	//we check if the tab is opened or closed
	var aTabBaseName = aTab.id.replace("TabButton", "");

	var currentStatus = filterProducts.getItem(aTabBaseName);

	var filterProductsKeys = filterProducts.getKeys();

	for(i=0; i<filterProductsKeys.length; i++)
	{
		document.getElementById(filterProductsKeys[i] + 'TabContent').style.display='none';
		document.getElementById(filterProductsKeys[i] + 'TabButton').innerHTML='<div class="buttonLeftBg"></div><div class="buttonRightBg"></div>' + document.getElementById('editText').value;

		filterProducts.setItem(filterProductsKeys[i], '0');
	}

	if(currentStatus==0)
	{
		if(isBrowserIE())
		{
			document.getElementById(aTabBaseName + 'TabContent').style.display='block';
		}
		else
		{
			document.getElementById(aTabBaseName + 'TabContent').style.display='table-row';
		}
		
		document.getElementById(aTabBaseName + 'TabButton').innerHTML='<div class="buttonLeftBg"></div><div class="buttonRightBg"></div>' + document.getElementById('closeText').value;
		filterProducts.setItem(aTabBaseName, '1');
	}
}
		
function updateCountryRefurb(aCountry)
{
	var iPodMinPrice;
	var macMinPrice;

	if(countryRefurb.hasItem(aCountry + '-iPodPrice'))
	{
		iPodMinPrice=countryRefurb.getItem(aCountry + '-iPodPrice');
	}
	else
	{
		iPodMinPrice='-';
	}

	if(countryRefurb.hasItem(aCountry + '-MacPrice'))
	{
		macMinPrice=countryRefurb.getItem(aCountry + '-MacPrice');
	}
	else
	{
		macMinPrice='-';
	}	

	document.getElementById('header_mac_content').innerHTML=macMinPrice;
	document.getElementById('header_ipod_content').innerHTML=iPodMinPrice;

	if(macMinPrice=='-' && iPodMinPrice=='-')
	{
		document.getElementById('header_refurb_update_content').innerHTML='-';
	}
	else
	{
		document.getElementById('header_refurb_update_content').innerHTML=countryRefurb.getItem(aCountry + '-lastUpdate');
	}
	
	document.getElementById('countryText').innerHTML=aCountry.toUpperCase();
	document.getElementById('header_country_chooser').style.background = 'url(/images/icon_flags/' + aCountry + '_top.gif) no-repeat';

	document.getElementById('header_mac_content').onclick = function() { window.open(countryRefurb.getItem(aCountry + '-MacLink'), 'aWindow'); };
	document.getElementById('header_ipod_content').onclick = function() { window.open(countryRefurb.getItem(aCountry + '-iPodLink'), 'aWindow'); };
	document.getElementById('header_refurb_update_content').onclick = function() { window.open(countryRefurb.getItem(aCountry + '-globalLink'), 'aWindow'); };
	document.getElementById('header_goto_refurb_store').onclick = function() { window.open(countryRefurb.getItem(aCountry + '-globalLink'), 'aWindow'); };

	setCookie('country', aCountry, 30);
}

function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";domain=refurb-store.com;path=/;expires="+exdate.toGMTString());
}

function getCookie(c_name)
{
	if (document.cookie.length>0)
	{
	  c_start=document.cookie.indexOf(c_name + "=");
	  if (c_start!=-1)
	  { 
	    c_start=c_start + c_name.length+1; 
	    c_end=document.cookie.indexOf(";",c_start);
	    if (c_end==-1) c_end=document.cookie.length;
	    return unescape(document.cookie.substring(c_start,c_end));
	  } 
	}
	
	return "";
}

function displayIdElement(displayElementId, mode, displayKind)
{
	if(displayKind=='')
	{
		displayKind='block';
	}
	
	if(mode=='altern')
	{		
		if(document.getElementById(displayElementId).style.display=='none' || document.getElementById(displayElementId).style.display=='')
		{
			document.getElementById(displayElementId).style.display=displayKind;
		}
		else
		{
			document.getElementById(displayElementId).style.display='none';
		}
	}
	else if(mode=='none')
	{
		document.getElementById(displayElementId).style.display='none';
	}
	else
	{
		document.getElementById(displayElementId).style.display=displayKind;
	}
}

function checkSelectedElements()
{
	var anArray = new Array('products', 'countries');

	for(var p=0; p<2; p++)
	{
		var allElements = document.getElementById(anArray[p] + 'TabContent').getElementsByTagName('div');
		var isCheck = 0;
		
		for (i=0; i<allElements.length; i++)
		{
			if(itemsForm.getItem(allElements[i].id)=='1')
			{
				isCheck =1;
				break;
			}
		}
	
		if(isCheck==0)
		{
			var f = anArray[p].charAt(0).toUpperCase();
			alert(document.getElementById('errorJavascriptMin' + f + anArray[p].substr(1, anArray[p].length-1)).value);
			
			return false;
		}
	}

	return true
}

function displaySelectedElements(type, anElement, setCookieSave)
{
	var p=0;
	var q=0;
	var aString='';
	var allElements = document.getElementById(type + 'TabContent').getElementsByTagName('div');
	var cookieContent = '';
	
	
	for (i=0; i<allElements.length; i++)
	{
		if(itemsForm.getItem(allElements[i].id)=='1')
		{
			if(type=='products') {
				aString+='<div id="selected_' + allElements[i].id.substr(9) + '" class="selectedProductBox" style="background-image: url(/images/icon_products/' + allElements[i].id.substr(9) + '.gif);" title="' + allElements[i].title + '">';
				aString+='<div class="selectedProductBoxTitle"style="margin-top:24px;">';
				aString+=allElements[i].title;
				aString+='</div>';
				aString+='</div>';
				
				cookieContent+= ',' + allElements[i].id.substr(9);
			}
			else if(type=='countries'){
				aString+='<div class="selectedProductBox" style="background: #FFFFFF url(/images/icon_flags/' + allElements[i].id.substr(10) + '_trans.gif) 25px 1px no-repeat;" title="' + allElements[i].title + '">';
				aString+='<div class="selectedProductBoxTitle" style="margin-top:24px;">';
				aString+=allElements[i].title;
				aString+='</div>';
				aString+='</div>';

				cookieContent+= ',' + allElements[i].id.substr(10);
			}
			
			p++;
			q++;
		}
		else if(itemsForm.getItem(allElements[i].id)=='0')
		{
			q++;
		}
	}
	
	/*
	if(type=='products' && p==q)
	{
		aString ='<div id="selected_apple" class="selectedProductBox" style="background-image: url(/images/icon_products/apple.gif)" title="' + document.getElementById('allAppleProducts').value + '">';
		aString+='<div class="selectedProductBoxTitle"style="margin-top:24px;">';
		aString+= document.getElementById('allAppleProducts').value;
		aString+='</div>';
		aString+='</div>';
	}
	*/

	/*
	if(p==0)
	{
		if(type=='products')
		{
			alert(document.getElementById('errorJavascriptMinProducts').value);
		}
		else if(type=='countries')
		{
			alert(document.getElementById('errorJavascriptMinCountries').value);
		}
		
		itemsForm.setItem(anElement, '1');
		document.getElementById(anElement.id).className='countrySelected';

		return;
	}
	*/

	if(setCookieSave==1)
	{
		setCookie(type + 'Home', cookieContent.substr(1), 365);
	}

	//only for homepage
	if(document.getElementById(type + 'Preview'))
	{
		document.getElementById(type + 'Preview').innerHTML=aString;

		if(setCookieSave==1 && checkSelectedElements())
		{
 			updateContentViaAjax('/indexResult.php', 'refurbContent', getPostParameters());
		}
	}
}

function isBrowserIE()
{
	var browser=navigator.appName;
	var b_version=navigator.appVersion;
	var version=parseFloat(b_version);
	
	if (browser=="Microsoft Internet Explorer")
	{
		return 1;
	}
	else
	{
		return 0;
	}
}