/**
 * Search system
 */
var searchParams = [];
function get_search_param( name )
{
	for( var i = 0; i < searchParams.length; i++ )
	{
		if( searchParams[i].name == name )
		{
			return searchParams[i];
		}
	}
	
	return null;
}


function searchForMembers( searchUrl, o )
{
	if(o.value != '' && o.value != o.defaultValue)
	{
		top.location = searchUrl+'/'+o.value;
	}
	return false;
}





var W3CDOM = (document.createElement && document.getElementsByTagName);
function initFileUploads() {
	if (!W3CDOM) return;
	var fakeFileUpload = document.createElement('div');
	fakeFileUpload.className = 'fakefile';
	
	var input = document.createElement('input');
	input.setAttribute('type','text');
	
	fakeFileUpload.appendChild(input);
	

	var image = document.createElement('img');
	image.src= BASE_URL + '/images/buttons/b_parcourir_out.gif';
	image.className = 'fileinputbutton';
	image.onmouseover = function(){ 
	var target = event.target || event.srcElement; target.src = BASE_URL + '/images/buttons/b_parcourir_over.gif'; } 
	image.onmouseout = function(){ var target = event.target || event.srcElement; target.src = BASE_URL + '/images/buttons/b_parcourir_out.gif'; } 
	
	
	fakeFileUpload.appendChild(image);
	var x = document.getElementsByTagName('input');
	for (var i=0;i<x.length;i++) {
		if (x[i].type != 'file') continue;
		if (x[i].parentNode.className != 'fileinputs') continue;
		x[i].className = 'fileinput hidden';
		var clone = fakeFileUpload.cloneNode(true);
		x[i].parentNode.appendChild(clone);
		x[i].relatedElement = clone.getElementsByTagName('input')[0];
		x[i].onchange = x[i].onmouseout = function () {
			this.relatedElement.value = this.value;
		}
	}
}

var messages = [];
function getMessages()
{
	ajax = new XHConn();
	ajax.connect( HOME_URL + '/ajax/get-messages', 'POST', '', onGetMessages );	
}

function lang( key )
{
	for( i = 0; i< messages.length; i++ )
	{
		if( messages[i].key == key )
		{
			return messages[i].value;
		}
	}
	
	return '';
}

function onGetMessages(r)
{
	for( i = 0; i < r.messages.length; i++ )
	{
		messages.push(r.messages[i]);
	}
}

function do_full_search( base_search_url )
{
	kwd = $('keyword').value;
	
	if( kwd == '' )
	{
		_confirm( null, lang('pleaseFillKeyword'), null, [MB_OK] );
	}
	else
	{
		top.location = base_search_url + '/' + escape( kwd );
	}
	return false;	
}

function do_search( f )
{
	searchParams = [];
	url = f.action;

	var currentFieldParams 	= [];
	var currentFieldName 	= '';
	var currentField 		= '';
	
	var lPriceFound= false;
	var rPriceFound=false;
	
	for( var i = 0; i < f.elements.length; i++ )
	{
		element = f.elements[i];
		
		
		if( element.getAttribute('field') != '' && element.getAttribute('field') != null )
		{
			currentField = element.getAttribute('field');
			currentFieldName = currentField.replace('[]', '' );
			
			searchParams.push({ name: currentFieldName, values: [] } );
		}
		else
		{
			if( element.checked )
			{	
				if( element.getAttribute('side') == 'left' )
				{
					lPriceFound = true;
				}
				else if( element.getAttribute('side') == 'right' )
				{
					rPriceFound = true;
				}
				
				get_search_param( currentFieldName ).values.push( element.value );
			}
		}
		
	}
	
	for( var j = 0; j < searchParams.length; j++ )
	{
		if( searchParams[j].values.length > 0 )
		{
			switch( searchParams[j].name )
			{
				case 'budget':
					if( !rPriceFound)
						url = url + '/' + searchParams[j].name + '/'+searchParams[j].values[0]+';'; 
					else if( !lPriceFound)
						url = url + '/' + searchParams[j].name + '/;'+searchParams[j].values[0]; 
					else
						url = url + '/' + searchParams[j].name + '/'+searchParams[j].values.join(';');
					break;
					
				default:
					url = url + '/' + searchParams[j].name + '/'+searchParams[j].values.join(';');
					break;
			}
			
			 
		}
	}
	
	//alert( get_search_param('budget').values);
	//alert( url );
	
	top.location = url;	
	return false;
}

/**
 * Image preloading and roll over
 */
function preload_image( i )
{
	var im = document.createElement('IMG');
	im.src = i;
}
function roller_over( img )
{
	img.src = img.src.replace('out.', 'over.');
}

function roller_out( img )
{
	img.src = img.src.replace('over.', 'out.');
}

var contextualGiftPage = 1;
var contextualGiftPageCount = 1;
function getContextualsGifts( id, page )
{
	$("contextuals-gifts").innerHTML = '<div class="loading-contextuals">' + lang('searchingContextualsGifts')+'</div>';
	if( !page ) page = 1;
	else page = contextualGiftPage + page;
	if( page < 1 || page > contextualGiftPageCount ) page = 1;
	contextualGiftPage = page;
	
	ajax = new XHConn();
	ajax.connect( HOME_URL + '/ajax/get-contextuals-gifts/id/' + id + '/page/' + page,
		'POST', '', onGetContextualsGifts );
	
	return false;
}

function onGetContextualsGifts( response )
{	
	$("contextuals-gifts-container").style.display = (response.items.length > 0)? 'block':'none';
	$("contextuals-gifts").innerHTML = '';
	
	
	
	for( i = 0; i < response.items.length; i++ )
	{
		$("contextuals-gifts").innerHTML = $("contextuals-gifts").innerHTML + response.items[i];
	}
	
	contextualGiftPageCount = response.pageCount;
}


/**
 * Windows
 */


function XHConn()
{

  var xmlhttp, bComplete = false;
  try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch (e) { try { xmlhttp = new XMLHttpRequest(); }
  catch (e) { xmlhttp = false; }}}
  if (!xmlhttp) return null;
  this.connect = function(sURL, sMethod, sVars, fnDone)
  {
	  
    if (!xmlhttp) return false;
    bComplete = false;
    sMethod = sMethod.toUpperCase();
    
    try {
      if (sMethod == "GET")
      {
        xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        sVars = "";
      }
      else
      {
        xmlhttp.open(sMethod, sURL, true);
        xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        xmlhttp.setRequestHeader("Content-Type",
          "application/x-www-form-urlencoded");
      }
      xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState == 4 && !bComplete)
        {
          bComplete = true;
          //alert( xmlhttp.responseText );
          data = eval( '(' + xmlhttp.responseText + ')' );
          fnDone(data);
        }};
      xmlhttp.send(sVars);
    }
    catch(z) { return false; }
    return true;
  };
  
  
  
  return this;
}

function reserveGift(listId,giftId)
{
	ajax = new XHConn();
	ajax.connect( HOME_URL + '/ajax/reserve-gift/list/'+listId+'/gift/'+giftId, 'POST', '', onGiftReserved );	
	return false;
}

function onGiftReserved(response)
{
	_confirm(response.title, response.message, null, [MB_OK] );
	top.location = top.location;
}



function loadContact(key)
{
	ajax = new XHConn();
	ajax.connect( HOME_URL + '/ajax/load-contact/key/'+key, 'POST', '', onContactLoaded );	
	_confirm( null,  lang('loading'), null, [] );
	
}

function onContactLoaded( response )
{
	_wndReturn();
	
	$('contact-form-title').innerHTML = lang('editExistingContact');
	$('contacts').contact_firstname.value = response.items[0].contact_firstname;
	$('contacts').contact_name.value = response.items[0].contact_name;
	$('contacts').contact_email.value = response.items[0].contact_email;
	$('contacts').key.value = response.items[0].key;
	
	top.location = '#contact-form';
}

var giftId = '';
function onConfirmRemoveGitFromList( mrResult )
{
	if( mrResult == MR_YES )
	{

		ajax = new XHConn();
		ajax.connect( HOME_URL + '/ajax/remove-gift-from-list/list/'+listId+'/gift/'+giftId, 'POST', '', onGiftRemoved );	
	}
}

function onGiftRemoved(response)
{
	_confirm(response.title, response.message, null, [MB_OK] );
	top.location = top.location;	
}


var listId = '';
function onConfirmDeleteList( mrResult )
{
	if( mrResult == MR_YES )
	{

		ajax = new XHConn();
		ajax.connect( HOME_URL + '/ajax/delete-list/id/'+listId, 'POST', '', onListDeleted );	
	}
}
function onListDeleted(response)
{
	_confirm(response.title, response.message, null, [MB_OK] );
	top.location = top.location;	
}


var contactKey = '';
function onConfirmDeleteContact( mrResult )
{
	if( mrResult == MR_OK )
	{
		ajax = new XHConn();
		ajax.connect( HOME_URL + '/ajax/delete-contact/key/'+contactKey, 'POST', '', onContactDeleted );	
	}
}

function onContactDeleted(response)
{
	_confirm(response.title, response.message, null, [MB_OK] );
	top.location = ''+top.location;	
}

function newsletter_subscribe()
{
	email = $('newsletter-email').value;

	if( email == '' || email == $('newsletter-email').defaultValue )
	{
		_confirm( null, lang('invalidEmailAddress'), null, [MB_OK] );
		return false;
	}
	
	ajax = new XHConn();
	ajax.connect( HOME_URL + '/ajax/subscribe-to-newsletter/email/' + escape(email),
		'POST', '', onNewsletterSubscribe );
	
	return false;
}

function onNewsletterSubscribe(response)
{
	_confirm(response.title, response.message, null, [MB_OK] );
}

var eventId = 0;
function deleteEvent( id )
{
	eventId = id;
	_confirm( lang('deleteEventConfirmationTitle'), lang('deleteEventConfirmationMessage'), onDeleteEventConfirm, [MB_OK,MB_CANCEL] );
	return false;
}

function onDeleteEventConfirm( mrResult )
{
	if( mrResult == MR_OK )
	{	
		ajax = new XHConn();
		ajax.connect( HOME_URL + '/ajax/delete-event/id/' + eventId,
						'POST', '', onEventDeleted );
	}
}

function onEventDeleted( response )
{
	_confirm(response.title, response.message, null, [MB_OK] );
	top.location = top.location;
}


function addToList( id, html )
{
	_confirm('', html, onAddToListHandler, [MB_OK,MB_CANCEL] );
}

function onAddToListHandler( mrResult )
{
	if( mrResult == MR_OK )
	{	
		ajax = new XHConn();
		ajax.connect( HOME_URL + '/ajax/add-to-user-list/list-id/' + $('list_id').value+'/list-name/'+$('list_name').value+'/id/'+$('gift_id').value,
						'POST', '', onAddedToList );
	}
}

/**
* Need To Be Member
*/
function ntbm()
{
	_confirm( lang('needToBeMemberTitle'),lang('needToBeMemberMessage'), function(mrResult){
				if( mrResult == MR_SUBSCRIBE_NOW )
					top.location = SUBSCRIBE_URL;
				
			}, [MB_SUBSCRIBE_NOW,MB_CANCEL] );
			
	return false;
}
function onAddedToList(response)
{
   switch( response.code )
   {
   		case 400:
   			_confirm( response.title, response.message, null, [MB_OK] );
   			break;
   		
   		case 503:
   			ntbm();
   			break;
   			
   		case 200:
   			_confirm( response.title, response.message, null, [MB_OK] );
   			break;
   	
   }

}


Event.observe( window, 'load', 
	function()
	{
		parentWnd = $('main-container'); 
		//initFileUploads();
		getMessages();
	}
);




