var arrayWasBuilt = false;
var selectedArrayWasBuild = false;
var nonUniqueArray = new Array();
var indexArray = new Array(); 
var fieldNameArray = new Array();
var indexArrayBuilt = false;


function buildRegionsArray(whichForm, fieldName) {
var orig_fieldname = fieldName;
fieldName = 'available_' + fieldName;
if ( ! arrayWasBuilt ) {
	availableRegionsArray = new Array();
	for (var indexNum = whichForm.elements[fieldName].length - 1; indexNum >= 0; indexNum--) {
		availableRegionsArray[indexNum] = whichForm.elements[fieldName][indexNum].text;
	}   
	nonUniqueArray = find_duplicates(availableRegionsArray);
	arrayWasBuilt = true;
}
var checker = checkFieldnameArray(whichForm, orig_fieldname);
if (checker == null) {
	addFieldName(orig_fieldname);      
saveFromAvailable(whichForm, orig_fieldname);
}
}

function checkFieldnameArray(whichForm, fieldName) {
var indexArrLen = fieldNameArray.length;
for (i = 0; i < indexArrLen; i ++) {
	if (fieldNameArray[i] == fieldName) {
	return i;
	}
}
return null;
}

function addFieldName(fieldName){
var indexArrLen = fieldNameArray.length;
fieldNameArray[indexArrLen] = fieldName;
}

function saveFromAvailable(whichForm, fieldName) {
var availableFieldName = 'available_' + fieldName;
var selectedFieldName = 'selected_' + fieldName;
var arrayLen = whichForm.elements[availableFieldName].length;
var indexArrLen = indexArray.length;
for (var i = 0; i < arrayLen; i ++){
	if (whichForm.elements[availableFieldName][i].disabled == true) {
	indexArray[indexArrLen] = new Array(whichForm.elements[availableFieldName][i].text, i, fieldName);
	indexArrLen++; 
	}
}
} 

function findFromDuplicate(whichForm, fieldName, text){
var availableFieldName = 'available_' + fieldName;
var selectedFieldName = 'selected_' + fieldName;
var dupLen = nonUniqueArray.length;
for (var i = 0; i < dupLen; i++) {
var text2 = nonUniqueArray[i][0];
if (text.replace(/\u00a0/g,'') == text2.replace(/\u00a0/g,'')){
	whichForm.elements[availableFieldName][nonUniqueArray[i][1]].disabled = false;
	whichForm.elements[availableFieldName][nonUniqueArray[i][1]].style.color = '#000000';
	whichForm.elements[availableFieldName][nonUniqueArray[i][2]].disabled = false;
	whichForm.elements[availableFieldName][nonUniqueArray[i][2]].style.color = '#000000';
		return 1;
}
}
return 0;
}

function findFromIndexArray(whichForm, fieldName){
var availableFieldName = 'available_' + fieldName;
var selectedFieldName = 'selected_' + fieldName;
var indexArrLen = indexArray.length;
for (var i = 0; i < indexArrLen; i ++) {
	if (indexArray[i][1] != null && indexArray[i][2] == fieldName) {
	whichForm.elements[availableFieldName][indexArray[i][1]].disabled = true;
	whichForm.elements[availableFieldName][indexArray[i][1]].style.color = '#777777';
	}   
}     
} 

function addIndexArray(text, index, fieldName){
var indexArrLen = indexArray.length;
var dupArrLen = nonUniqueArray.length;
for (var i = 0; i < dupArrLen; i ++) {
	if (nonUniqueArray[i][0].replace(/\u00a0/g,'') == text.replace(/\u00a0/g,'')){
	indexArray[indexArrLen] = new Array(nonUniqueArray[i][0], nonUniqueArray[i][1], fieldName);
	indexArray[indexArrLen + 1] = new Array(nonUniqueArray[i][0], nonUniqueArray[i][2], fieldName);            
	return;
	}
}
indexArray[indexArrLen] = new Array(text, index, fieldName);
}

function removeIndexArray(whichForm, fieldName, text){
var availableFieldName = 'available_' + fieldName;
var selectedFieldName = 'selected_' + fieldName;
var indexArrLen = indexArray.length;
for (var i = 0; i < indexArrLen; i ++) {
	if( text.replace(/\u00a0/g,'') == indexArray[i][0].replace(/\u00a0/g,'') && indexArray[i][1] != null && indexArray[i][2] == fieldName) {
	whichForm.elements[availableFieldName][indexArray[i][1]].disabled = false;
	whichForm.elements[availableFieldName][indexArray[i][1]].style.color = '#000000';
	indexArray[i][1] = null;
	}
}
}

function find_duplicates(list) {
var tmp = new Array(0);
for (var i = 0; i < list.length; i++) {
	for (var j = i + 1; j < list.length; j ++) {
	if( list[i] == list[j] ) {
			tmp[tmp.length] = new Array(list[i], i, j);
		}
	}
}
return tmp;
}

function buildSelectedRegionsArray(whichForm, fieldName) {
fieldName = 'selected_' + fieldName;
var useSelectedField = 'use_' + fieldName;
whichForm.elements[useSelectedField].value = 1;
if ( ! selectedArrayWasBuild ) {
	selectedRegionsArray = new Array();
	for (var indexNum = whichForm.elements[fieldName].length - 1; indexNum >= 0; indexNum--) {
	selectedRegionsArray[indexNum] = whichForm.elements[fieldName][indexNum].text;
	}
	selectedArrayWasBuilt = true;
}
}

function findIndexAvail(whichForm, availableFieldName, textToFind) {
for ( var i=0; i < whichForm.elements[availableFieldName].length; i++ ) {
	if (whichForm.elements[availableFieldName][i].text.replace(/\u00a0/g,'') == textToFind.replace(/\u00a0/g,'') ) {
	if(whichForm.elements[availableFieldName][i].selected){
	} else {
		return i;
	}
	}
}
return false;
}



function addRegions(whichForm, fieldName) {
var availableFieldName = 'available_' + fieldName;
var selectedFieldName = 'selected_' + fieldName;
var j = whichForm.elements[availableFieldName].length;
var useSelectedField = 'use_selected_' + fieldName;
whichForm.elements[useSelectedField].value = 1;
for (var selIndex = 0; selIndex < j; selIndex++) {
if (whichForm.elements[availableFieldName][selIndex].selected) {
if (whichForm.elements[availableFieldName][selIndex].disabled == false) {
	if (whichForm.elements[availableFieldName][selIndex].text.replace(/\u00a0/g,'') == 'All countries') {
		if (whichForm.elements[selectedFieldName].length > 0 ) {
		removeFullListFromSelected(whichForm, fieldName);
	}
		var newText  = whichForm.elements[availableFieldName][selIndex].text;
	var newValue = whichForm.elements[availableFieldName][selIndex].value;
	var newOption = new Option(newText, newValue)
	whichForm.elements[selectedFieldName][whichForm.elements[selectedFieldName].length] = newOption;
	addIndexArray(whichForm.elements[availableFieldName][selIndex].text, selIndex, fieldName); 
	whichForm.elements[availableFieldName][selIndex].disabled = true;
	whichForm.elements[availableFieldName][selIndex].style.color = '#777777';                
	whichForm.elements[availableFieldName][selIndex].selected = false;
	var newText  = whichForm.elements[availableFieldName][selIndex].text;
	var newValue = whichForm.elements[availableFieldName][selIndex].value;
	var newOption = new Option(newText, newValue)
	addIndexArray(whichForm.elements[availableFieldName][selIndex].text, selIndex, fieldName);
	getSelectedRegions(whichForm, fieldName);
	return;            
} else {
	var newText  = whichForm.elements[availableFieldName][selIndex].text;
	var newValue = whichForm.elements[availableFieldName][selIndex].value;
	var newOption = new Option(newText, newValue)
	whichForm.elements[selectedFieldName][whichForm.elements[selectedFieldName].length] = newOption;
	whichForm.elements[availableFieldName][selIndex].disabled = true;
	whichForm.elements[availableFieldName][selIndex].style.color = '#777777';
	whichForm.elements[availableFieldName][selIndex].selected = false;
	addIndexArray(whichForm.elements[availableFieldName][selIndex].text, selIndex, fieldName);
}
}
}
}
reassign(whichForm);
//getSelectedRegions(whichForm, fieldName);

}

function removeRegions(whichForm, fieldName) {
var availableFieldName = 'available_' + fieldName;
var selectedFieldName = 'selected_' + fieldName;
buildSelectedRegionsArray(whichForm, fieldName);
var j = whichForm.elements[selectedFieldName].length;
var i = whichForm.elements[availableFieldName].length;
for (var selIndex = j - 1; selIndex >= 0; selIndex--) {
if (whichForm.elements[selectedFieldName][selIndex].selected) {
if (whichForm.elements[selectedFieldName][selIndex].value == '') {
removeFullListFromSelected(whichForm, fieldName);
enableFullList(whichForm, fieldName);
}
removeIndexArray(whichForm, fieldName, whichForm.elements[selectedFieldName][selIndex].text);
var findIndex = findFromDuplicate(whichForm, fieldName, whichForm.elements[selectedFieldName][selIndex].text);
whichForm.elements[selectedFieldName][selIndex] = null;
}
}
reassign(whichForm);
//getSelectedRegions(whichForm, fieldName);

}

function getSelectedRegions(whichForm, fieldName) {
var availableFieldName = 'available_' + fieldName;
var selectedFieldName = 'selected_' + fieldName;
var finalSelectedFieldName = 'final_selected_' + fieldName;
whichForm.elements[finalSelectedFieldName].value = '';
var selectedAll = false;
for (var selIndex = whichForm.elements[selectedFieldName].length - 1; selIndex >= 0; selIndex--) {
var newValue =  whichForm.elements[selectedFieldName][selIndex].value;
if ( newValue == '' ) selectedAll = true;
if ( whichForm.elements[finalSelectedFieldName].value == '' ) {
whichForm.elements[finalSelectedFieldName].value = newValue;
} else {
whichForm.elements[finalSelectedFieldName].value += ',' + newValue;
}
}
if ( selectedAll ) {
whichForm.elements[finalSelectedFieldName].value = '';
removeFullListFromSelected(whichForm, fieldName);
}
}

function removeFullListFromSelected(whichForm, fieldName) {
var availableFieldName = 'available_' + fieldName;
var selectedFieldName = 'selected_' + fieldName;
var selLen = whichForm.elements[selectedFieldName].length;
for (var k = 0; k < selLen; k ++) {
var text = whichForm.elements[selectedFieldName][k].text;
removeIndexArray(whichForm, fieldName, text);
}
for (var j = whichForm.elements[selectedFieldName].length - 1; j != 0 ; j --) {
if (whichForm.elements[selectedFieldName][0].text.replace(/\u00a0/g,'') != 'All countries'){
whichForm.elements[selectedFieldName][0] = null;
}
}
for ( var i=0;i < whichForm.elements[availableFieldName].length;i++) {
whichForm.elements[availableFieldName][i].disabled = true;
whichForm.elements[availableFieldName][i].style.color = '#777777';
}
}


function reassign(objForm)
{
len = objForm.selected_countries.length;
var i=0;
var myCountries=new Array();
for( i=0 ; i<len ; i++)
{
myCountries[i]=objForm.selected_countries[i].value;
}
/* new test*/
for ( var i=0;i < objForm.elements['available_countries'].length;i++) 
{
if(objForm.elements['available_countries'][i].value!='')
{
objForm.elements['available_countries'][i].disabled = false;
objForm.elements['available_countries'][i].style.color = '#000000';
}
else
{
objForm.elements['available_countries'][i].disabled = true;
objForm.elements['available_countries'][i].style.color = '#777777';	
}
}
for ( var i=0;i < objForm.elements['available_countries'].length;i++) 
{
for ( var j=0;j < myCountries.length;j++) 
{
if(objForm.elements['available_countries'][i].value==myCountries[j])
{
objForm.elements['available_countries'][i].disabled = true;
objForm.elements['available_countries'][i].style.color = '#777777';
}
}
}
/* new test*/
document.getElementById('use_selected_countries').value=myCountries.join(",");
recalculate();
}

function changeShow(val,objForm)
{
if(val=='Show')
{
document.getElementById('countrySelectorDiv').className='showme';
document.getElementById('use_selected_countries').value='US';
for ( var i=0;i < objForm.elements['available_countries'].length;i++) 
{
if(objForm.elements['available_countries'][i].value=='' || objForm.elements['available_countries'][i].value=='US')
{
objForm.elements['available_countries'][i].disabled = true;
objForm.elements['available_countries'][i].style.color = '#777777';
}
else
{
objForm.elements['available_countries'][i].disabled = false;
objForm.elements['available_countries'][i].style.color = '#000000';	
}
}
objForm.elements['selected_countries'].length=1;
objForm.elements['selected_countries'][0].value = 'US';
objForm.elements['selected_countries'][0].text = 'United States';
recalculate();
}
else
{
document.getElementById('countrySelectorDiv').className='hideme';
document.getElementById('use_selected_countries').value='';	
recalculate();
}
}

function change_view (div_id,show) {
	
	if (show == '0') {
		
		document.getElementById(div_id).className="hideme";
		
	} else {
		
		document.getElementById(div_id).className="showme";
		
	}
	if(div_id=='cats')
	{
		var totalboxes = document.form1.category.length;
		for(var i=0; i < totalboxes; i++)
		{
			document.form1.category[i].disabled=false;
			document.form1.category[i].checked=false;
		}
		document.form1.selected_categories.value='';
	}
	
}

function recalculate(){
	
	document.getElementById('loader').innerHTML='<img src="images/loadingbar.gif" width="150" height="26" border="0" />';
	var countries_that_selected = document.form1.use_selected_countries.value;
	var categories_that_selected = document.form1.selected_categories.value;
	var indice = document.form1.tr_amount.selectedIndex;
	var tr_amount = document.form1.tr_amount.options[indice].value
	
	for (var i=0; i < document.form1.fasttrack.length; i++){
   		if (document.form1.fasttrack[i].checked){
      		var fasttrack = document.form1.fasttrack[i].value;
      	}
   }

	
	ajax_loadContent('loader','calculator.php?tr_amount='+tr_amount+'&countries='+countries_that_selected+'&ft='+fasttrack+'&categories='+categories_that_selected);
	
}

var xmlhttp;

function checkUrl(val)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
  
var url="ajaxCheckUrlExist.php";
url=url+"?val="+val;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
if(xmlhttp.responseText=='1')
{
document.getElementById("urlchecker").className="showme";
document.getElementById("urlchecker2").innerHTML="";
document.getElementById("urlchecker2").style.display="none";
}
else
{
document.getElementById("urlchecker").className="errorbox";
document.getElementById("urlchecker2").style.display="block";
document.getElementById("urlchecker2").innerHTML="<br><strong>INVALID URL:</strong> URL must exist and start with \"http://\" or \"https://\".";
//document.getElementById("url").focus();
//document.getElementById("url").select();
}
}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}

function selectorCheck()
{
	var activeCount=4;
	var totalboxes = document.form1.category.length;
	var tempActiveBoxCOunt=0;
	var activeArray=new Array();
	if(activeCount < totalboxes)
	{
	for(var i=0; i < totalboxes; i++)
	{
		if(document.form1.category[i].checked==true)
		{
			activeArray[tempActiveBoxCOunt]=document.form1.category[i].value;
			tempActiveBoxCOunt++;
		}
	}
	if(tempActiveBoxCOunt >= activeCount)
	{
		for(var i=0; i < totalboxes; i++)
		{
			if(document.form1.category[i].checked==true)
			{
				document.form1.category[i].disabled=false;
			}
			else
			{
				document.form1.category[i].disabled=true;
			}
		}
	}
	else
	{
		for(var i=0; i < totalboxes; i++)
		{
			document.form1.category[i].disabled=false;
		}
	}
	document.form1.selected_categories.value=activeArray.join(",");;
	}
	else
	{
		document.form1.selected_categories.value='';
	}
}
