// some stuff to init script
YAHOO.util.Event.addListener(window, "load", vbpas_init);


// define array of available forms
forms=Array('invite', 'makeoffer', 'newbid', 'acceptbin');

function vbpas_init()
{
	// add handler for cancel buttons
	cancelButtons=YAHOO.util.Dom.getElementsByClassName("cancel", "input");
	for(i in cancelButtons)
	{
		// init cancel event
		YAHOO.util.Event.addListener(cancelButtons[i], "click", vbpas_hideform);
		
		// init submit action
		YAHOO.util.Event.addListener(cancelButtons[i].form, "submit", vbpas_submitform);
	}
	
	// add handler for submit links
	YAHOO.util.Event.addListener("vbpas_auctionbit", "click", vbpas_handlelinksubmit);

	// init submit action for read offers form
	YAHOO.util.Event.addListener("readoffersform", "submit", vbpas_submitform);
	
	// init submit action for close auction form
	YAHOO.util.Event.addListener("closeauctionform", "submit", vbpas_submitform);
	
	// init submit action for close q&a form
	YAHOO.util.Event.addListener("closeqaform", "submit", vbpas_submitform);
	
	// init submit action for open q&a form
	YAHOO.util.Event.addListener("openqaform", "submit", vbpas_submitform);
}

function vbpas_handlelinksubmit (evt)
{
	// exit if ajax is disabled
	if(!vbpas_ajax)
	{
		return true;
	}
	
	var target=YAHOO.util.Event.getTarget(evt);
	preventHide=false;
	while(target.id!="vbpas_auctionbit")
	{
		if(target.id=='totalbids' || target.id=='vbpas_historylink' || (target.href && target.href.indexOf('history_pagenumber')>0))
		{
			preventHide=true;
		}
		if(target.nodeName.toUpperCase() == "A" && YAHOO.util.Dom.hasClass(target, "submitlink"))
		{
			// cancel event
			YAHOO.util.Event.preventDefault(evt);
			
			// make request
			href=target.href;
			if(href.indexOf('do=moderate&filter=all')>0)
			{
				// prevent hiding of total bid count
				preventHide=true;
			}
			if(href.indexOf('?')==-1)
			{
				href+='?';
			}
			else
			{
				href+='&';
			}
			date=new Date();
			href+="ajax=1&time="+date.getTime();
			req = YAHOO.util.Connect.asyncRequest("GET", href, callback);
			
			// hide element
			if(preventHide==false)
			{
				vbpas_hideelement(target);
			}
			
			// show progress
			vbpas_showelement(YAHOO.util.Dom.get('vbpas_progress'), "block");
			
			break;
		}
		else
		{
			target=target.parentNode;
		}
	}
}
function vbpas_showform(form)
{
	// hide all forms
	for(i in forms)
	{
		YAHOO.util.Dom.setStyle(YAHOO.util.Dom.get(forms[i]), "display", "none");
	}
	
	// show this one
	if(YAHOO.util.Dom.getStyle(YAHOO.util.Dom.get(form), "display")=="none")
	{
		vbpas_showelement(form, "block");
	}
	
	// hide button to show form
	vbpas_hideelement(form+'button');
	
	// form=YAHOO.util.Dom.getElementsBy(function(el){return true}, 'form', form)[0];
	// enable form
	vbpas_enableform(YAHOO.util.Dom.get(form));
}

function vbpas_hideform(evt)
{
	// hide form
	vbpas_hideelement(YAHOO.util.Dom.getAncestorByTagName(this, 'fieldset'));
	
	// show button again
	vbpas_showelement(YAHOO.util.Dom.getAncestorByTagName(this, 'fieldset').id+'button');
}

function vbpas_submitform(evt)
{
	target=YAHOO.util.Event.getTarget(evt);
	if(target.id=='acceptbinform')
	{
		confirmation=window.confirm(vbphrase['vbpas_confirmacceptbin']);
		if(confirmation==false)
		{
			// cancel event
			YAHOO.util.Event.preventDefault(evt);
			return false;
		}
	}
	
	// exit if ajax is disabled
	if(!vbpas_ajax)
	{
		return true;
	}
	// cancel event
	YAHOO.util.Event.preventDefault(evt);
	
	// init ajax object
	YAHOO.util.Connect.setForm(this);
	
	// disable form
	// bug ## do not disable open and close Q&A
	
	vbpas_disableform(this);
	
	// make request
	req = YAHOO.util.Connect.asyncRequest(this.method, this.action, callback, "ajax=1");
	
	// show progress
	vbpas_showelement(YAHOO.util.Dom.get('vbpas_progress'), "block");
	
	// hide errors and messages
	YAHOO.util.Dom.setStyle(YAHOO.util.Dom.get('vbpas_error'), "display", "none");
	YAHOO.util.Dom.setStyle(YAHOO.util.Dom.get('vbpas_message'), "display", "none");
}
var callback =
{
  success: vbpas_handlesuccess,
  failure: vbpas_handleerror
}

function vbpas_handlesuccess(o)
{	
	if(!o.responseXML)
	{
		alert(o.responseText);
		// hide progress
		vbpas_hideelement(YAHOO.util.Dom.get('vbpas_progress'));
		return;
	}
	response=o.responseXML.documentElement;
	elements=YAHOO.util.Dom.getChildren(response);
	
	// define variables to check if errors or messages sent from server\
	// and hide this elements if no errors or messages sent
	errorfound=messagefound=false;
	for(i in elements)
	{
		if(elements[i].tagName=='error')
		{
			errorfound=true;
			// display error in error div
			YAHOO.util.Dom.get('vbpas_error').innerHTML=elements[i].firstChild.nodeValue;
			vbpas_showelement(YAHOO.util.Dom.get('vbpas_error'), "block");
			continue;
		}
		else if(elements[i].tagName=='message')
		{
			messagefound=true;
			// display message in message div
			YAHOO.util.Dom.get('vbpas_message').innerHTML=elements[i].firstChild.nodeValue;
			vbpas_showelement(YAHOO.util.Dom.get('vbpas_message'), "block");
			continue;
		}
		if(elements[i].getAttribute('id') && !YAHOO.util.Dom.get(elements[i].getAttribute('id')))
		{
			// element does not exists so skip it to not to give errors
			continue;
		}
		if(elements[i].tagName=='action' && elements[i].getAttribute('name')=='enable')
		{
			vbpas_enableform(elements[i].getAttribute('id'));
		}
		else if(elements[i].tagName=='action' && elements[i].getAttribute('name')=='disable')
		{
			vbpas_disableform(elements[i].getAttribute('id'));
		}
		else if(elements[i].tagName=='action' && elements[i].getAttribute('name')=='hide')
		{
			vbpas_hideelement(YAHOO.util.Dom.get(elements[i].getAttribute('id')));
		}
		else if(elements[i].tagName=='action' && elements[i].getAttribute('name')=='show')
		{
			if(elements[i].firstChild)
			{
				display=elements[i].firstChild.nodeValue;
			}
			else
			{
				display="";
			}
			vbpas_showelement(YAHOO.util.Dom.get(elements[i].getAttribute('id')), display);
		}
		else if(elements[i].tagName=='action' && elements[i].getAttribute('name')=='change')
		{
			// hide element
			elementid=YAHOO.util.Dom.get(elements[i].getAttribute('id'));
			
			// show it with new content
			elementid.innerHTML=elements[i].firstChild.nodeValue;
			display=YAHOO.util.Dom.getStyle(elementid, "display");
			if(display=="none")
			{
				display="";
			}
			
			vbpas_showelement(elementid, display);		
		}
		else if(elements[i].tagName=='action' && elements[i].getAttribute('name')=='changevalue')
		{
			YAHOO.util.Dom.get(elements[i].getAttribute('id')).value=elements[i].firstChild.nodeValue;
		}
		else if(elements[i].tagName=='action' && elements[i].getAttribute('name')=='replace')
		{
			replaceId=YAHOO.util.Dom.get(elements[i].getAttribute('id'));
			parentElem=replaceId.parentNode;
			exp=new RegExp("(<[^>]+id=[\"]*"+replaceId.id+"[\"]*)");
			parentElem.innerHTML=parentElem.innerHTML.replace(exp, elements[i].firstChild.nodeValue+" $1");
			replaceId=YAHOO.util.Dom.get(elements[i].getAttribute('id'))
			parentElem.removeChild(replaceId);
		}
	}

	if(errorfound==false)
	{
		// no errors sent from server
		vbpas_hideelement('vbpas_error');
	}
	
	if(messagefound==false)
	{
		// no messages sent from server
		vbpas_hideelement('vbpas_message');
	}
	
	// hide progress
	vbpas_hideelement(YAHOO.util.Dom.get('vbpas_progress'));
	
	// scroll to page top
	yPos=YAHOO.util.Dom.getY('inlinemodform');
	if(yPos==0)
	{
		yPos=YAHOO.util.Dom.getY('vbpas_auctionbit');
	}
	if(YAHOO.util.Dom.getDocumentScrollTop(document)>yPos && yPos>0)
	{
		window.scrollTo(0, yPos);
	}
}

function vbpas_handleerror(o)
{
	// hide progress
	vbpas_hideelement(YAHOO.util.Dom.get('vbpas_progress'));
	alert(o.responseText);
}

function vbpas_disableform (form)
{
	// get input and textarea tags
	inputs=YAHOO.util.Dom.getElementsBy(function(el){return (el.tagName=='INPUT' || el.tagName=='TEXTAREA')}, null, form);
	for(i=0; i<inputs.length; i++)
	{
		inputs[i].disabled="disabled";
	}
}

function vbpas_enableform (form)
{
	// get input and textarea tags
	inputs=YAHOO.util.Dom.getElementsBy(function(el){return (el.tagName=='INPUT' || el.tagName=='TEXTAREA')}, null, form);
	for(i=0; i<inputs.length; i++)
	{
		inputs[i].disabled="";
	}
}

function vbpas_hidemessage (messageid)
{
	// hide message
	vbpas_hideelement(messageid);
	
	// show default auction description
	vbpas_showelement('vbpas_messagetext', "block");
	
	// scroll to page top
	yPos=YAHOO.util.Dom.getY('inlinemodform');
	if(yPos==0)
	{
		yPos=YAHOO.util.Dom.getY('vbpas_auctionbit');
	}
	if(YAHOO.util.Dom.getDocumentScrollTop(document)>yPos && yPos>0)
	{
		window.scrollTo(0, yPos);
	}
	 
	if(messageid=='vbpas_offers')
	{
		// enable show offers form
		vbpas_enableform('readoffersform');
		
		// unhide show offers button
		vbpas_showelement('readoffersbutton');
	}
	else if(messageid=='vbpas_moderate')
	{
		// show view requests link again
		vbpas_showelement('viewrequestslink');
	}
	
	// show view history link if it is hidden
	if(YAHOO.util.Dom.getStyle("vbpas_historylink", "display")=="none")
	{
		vbpas_showelement("vbpas_historylink", "");
	}
}

function vbpas_showelement (elementid, display)
{
	if(!display)
	{
		display="";
	}
	elementid=YAHOO.util.Dom.get(elementid);
	var attributes = {opacity:{from:0, to:1}};
	var anim = new YAHOO.util.Anim(
			elementid, 
            attributes,  
            1,
            YAHOO.util.Easing.easeOut
        );
	anim.onComplete.subscribe(
		function(){
			YAHOO.util.Dom.setStyle(elementid, "display", display);
			YAHOO.util.Dom.setStyle(elementid, "opacity", "1");
	    }
	  );
	YAHOO.util.Dom.setStyle(elementid, "display", display);
	anim.animate();
}

function vbpas_hideelement (elementid)
{
	elementid=YAHOO.util.Dom.get(elementid);
	var attributes = {opacity:{from:1, to:0}};
	var anim = new YAHOO.util.Anim(
			elementid, 
            attributes,  
            1,
            YAHOO.util.Easing.easeOut
        );
	anim.onComplete.subscribe(
		function(){
			YAHOO.util.Dom.setStyle(elementid, "display", "none");
	    }
	  );
	anim.animate();
}

function vbpas_clearinput(objid, value)
{
	obj=document.getElementById(objid);
	if(obj.value==value)
	{
		obj.value='';
	}
}

function vbpas_fillinput(objid, value)
{
	obj=document.getElementById(objid);
	if(obj.value=='')
	{
		obj.value=value;
	}
}

