var func;
var parameterGlobal;
var buyerResponsePE;
var sellerResponsePE;
var checkForFeePE;
var checkForFeeResponsePE;
var peSimulateTimer = null;
var getTimerPE = null;
var sellerOnlineStatusPE = null;
var checkRatingPE = null;
var playActive = false;
var pauseActive = false;
var seller;
var buyer;
var type;
var negotiationStatus =null;
var ajaxRequest;
var ajaxRequest2;
var buyerTimeoutPE;
var complaint = false;

var invalidFee = "Error: Sorry, please enter a whole number greater than zero";

function alerta() {
	alert ("test");
}

function checkStatus(idB,idS,uType){

    var ajaxResult;
	buyer=idB;
	seller=idS;
	type=uType;
	if (uType == "S") {
		ajaxResult=$('step2Tutor');
	} else {
    	ajaxResult=$('ajaxResultS');
    } 
    
    ajaxRequest = 
    	new Ajax.Request('/private/resumeNegotiation.htm', {
        method: 'post',
        parameters:{idBuyer:idB,idSeller:idS,userType:uType},
        onComplete: function(transport){
            if(transport.responseText.match(/id=\"empty\"/) && type=="S" ){
                //seller
                checkBuyer();
                botoneraController(null);
            }
            else if(transport.responseText.match("Redirect")){
           		$('ajaxResult').update(transport.responseText);
           	}
            else if (transport.responseText.match(/id=\"buyerExist\"/) ){
                //seller
                $('sessionStatus').value="Negotiation";
                $('ajaxResult').update(transport.responseText);
                botoneraController(null);
                checkNegotiationStatus($F('idSeller'),$F('idBuyer'),uType);
            }
            else if (transport.responseText.match(/id=\"waitingBuyer\"/)){
                //seller
                $('sessionStatus').value="Negotiation";
                ajaxResult.update(transport.responseText);
                botoneraController(null);
                waitForBuyerResponse(idB,idS);
                checkNegotiationStatus($F('idSeller'),$F('idBuyer'),uType);
                
            }
            else if (transport.responseText.match(/id=\"starting\"/)){
                //seller
                botoneraController("counting");
                $('sessionStatus').value="Live Session";
                //TODO test here
                ajaxResult.update(transport.responseText);
				checkSellerTimer(idB,idS);
            }
            else if (transport.responseText.match(/id=\"waitingSeller\"/)){
                //buyer
                ajaxResult.update(transport.responseText);
                botoneraController(null);
                checkForSellerFee(idS);
                checkNegotiationStatus($F('idSeller'),$F('idBuyer'),uType);
                
            }
            else if (transport.responseText.match(/id=\"negociateFee\"/)){
                //buyer
                ajaxResult.update(transport.responseText);
                botoneraController(null);
                checkNegotiationStatus($F('idSeller'),$F('idBuyer'),uType);
            }
            else if (transport.responseText.match(/id=\"failure\"/)){
                //both
                ajaxResult.update(transport.responseText);
                botoneraController(null);
                if (type=="S") {
                    checkBuyer();
				}

            }
            else if (transport.responseText.match(/id=\"feeFormSubmit\"/)||transport.responseText.match(/id=\"counterOfferAccepted\"/)){
                //seller
                ajaxResult.update(transport.responseText);
                botoneraController(null);
                checkNegotiationStatus($F('idSeller'),$F('idBuyer'),uType);
            }
            /*else if (transport.responseText.match(/id=\"waitingToStart\"/) ){
                botoneraController("starting");
                ajaxResult.update(transport.responseText,{
                    evalScripts:true
                });

            }*/
            else if(transport.responseText.match(/id=\"waitingForBuyerToStartSession\"/) ){
            		ajaxResult.update(transport.resposeText,{
            			evalScripts:true
            		});
                    checkSellerTimer(idB,idS);
            }
            
            /*else if (transport.responseText.match(/id=\"waitingBuyerPressStart\"/) ){
            	botoneraController(null);
            	checkSellerTimer(idB,idS);
            	ajaxResult.update(transport.resposeText,{
            		evalScripts:true
            	});
            }*/
            
            else if (transport.responseText.match(/id=\"buyerRenegotiate\"/) ){
                //seller
                botoneraController(null);
                checkForSellerFee(idS);
                ajaxResult.update(transport.responseText,{
                    evalScripts:true
                });
                checkNegotiationStatus($F('idSeller'),$F('idBuyer'),uType);
            }
            else if (transport.responseText.match(/id=\"paused\"/) ){
                //both
                if (transport.responseText.match(/id=\"B\"/) && type=="B"){
                    botoneraController("pausedBySelf");
                }
                else if (transport.responseText.match(/id=\"S\"/) && type=="S"){
                    botoneraController("pausedBySelf");
                }
                else{
                    botoneraController("pausedByOtherParty");
                }

                if (type=="S"){
                    checkSellerTimer(idB,idS);
                    $('sessionStatus').value="Live Session";
                }
                else{
                    ajaxResult.update(transport.responseText,{
                        evalScripts:true
                    });
                    checkBuyerTimer(idB,idS);
                    $('sessionStatus').value=true;
                }
            }
            else if(transport.responseText.match(/id=\"clockCounting\"/)){
                //both
                botoneraController("counting");
                if (type=="S"){
                    $('sessionStatus').value="Live Session";
                    checkSellerTimer(idB,idS);
                }else{
                    $('sessionStatus').value=true;
                    checkBuyerTimer(idB,idS);
                    ajaxResult.update(transport.responseText,{
                        evalScripts:true
                    });
                }
            }
            else if (transport.responseText.match(/id=\"stopped\"/)) {
                //both
                botoneraController("stopped");
                if($('sessionStatus')) {
                    $('sessionStatus').value="Live Session";
				}
                ajaxResult.update(transport.responseText,{
                        evalScripts:true
                });
                if (type=="S") {
                    checkBuyerConfirmation(idB,idS);
                }
            }
            else if (transport.responseText.match(/id=\"complaintForm\"/) || transport.responseText.match(/id=\"successful\"/)){
                //seller
                ajaxResult.update(transport.responseText,{
                    evalScripts: true
                });
            }
			else if (transport.responseText.match(/id=\"thankYou\"/)) {
            	ajaxResult.update(transport.responseText);
			}
        }}
            );
}


/*
*This is the step #1 when the buyer starts and asks the seller for a negotiation
*/
function startNegotiation(idS,idB){
	addBookMark(idS);
	if(isSellerOnLine(idS)){
		ajaxRequest = new Ajax.Request("/userLoggedStatus.htm",{
	            method:'post',
	            parameters: {redirectAfterLogin:"profile.htm?idSeller=" + idS},
	            onComplete: function(transport) {
	            	if (transport.responseText != "" && transport.responseText.match("logged")) {
				        $('openinnewwindow').value = 'true';
				        $('sessionStatus').value='true';
				        //hideNextButton();
				        cleanTimerWidget();
				        //hidePresentation();
				        var url ="/private/startNegotiation.htm" ;
						ajaxRequest2 = new Ajax.Request(url,{
				            parameters:{idSeller:idS,idBuyer:idB},
				            method: 'post',
				            evalScripts: true,
				            onSuccess: function(transport) {
				                if (transport.responseText.match(/id=\"waitingSeller\"/) ){
				                    $('ajaxResultS').update(transport.responseText);
				                    checkForSellerFee(idS);
				                    checkNegotiationStatus($F('idSeller'),$F('idBuyer'),"B");
				                }
				                else {
				                	if (transport.responseText.match("busy")){
										//$('offlineContainer').update(transport.responseText);
										//$('offlineContainer').style.display="";
										displayMessage("Error: The tutor is already in a live session. Please try again later.");
									}
				                	else if(transport.responseText.match("Redirect")){
	            						$('ajaxResult').update(transport.responseText);
	            					} else if(transport.responseText.match(/id=\"itself\"/) ){
	            						if ($('studentTitle')) {
	            							displayMessage("Error: Already in session with this Tutor.");
	            						}
	            					}
	            				}
				            }
				        }
		                );  //
	                } else {
	                	location.replace("/secure/secureLoginPage.htm");
	                }
		    }
		});
	}else{
		displayMessage("Error: The expert needs to first sign in to WeTutor.");
	}
}

/*
 * This function represents seller peridiocal executor that checks if 
 * there is any new negotiation request
 */
 
 
function checkBuyer(){
    var ajaxResult = $('ajaxResultT');
    buyerResponsePE = new PeriodicalExecuter(function(pe) {
        ajaxRequest = new Ajax.Request('/private/checkForBuyer.htm',{
            method: 'post',
            onSuccess: function(transport) {
				if (transport.responseText.match(/id=\"buyerExist\"/) ){
					var studentID = $('studentNone').down().innerHTML;
					var weTutorID = "value=\"" + studentID + "\"";
					
					//Moves the chat form the user that is NOT negotiating from the leftPanel
					if (!transport.responseText.match(weTutorID) && ("Tutoring Session" != studentID)) {
						$('studentNone').innerHTML = "<h2>Tutoring Session</h2>";
                    	moveChatWindow();
                    }
                    if ($('step1Tutor').innerHTML.match("You are waiting for")) {
                    	$('step1Tutor').style.display="none";
                    }
                    
                    //Updates the negotiationPanel
                    ajaxResult.update(transport.responseText);
                    
                    //Moves the chat of the negotiating user form the chat panel 
                    //to the left panel
                    moveActiveChatWindow($('childWeTutorId').value);
                    
                    $('sessionStatus').value="Negotiation";
                    pe.stop();
                    cleanTimerWidget();
                    var idB = $F('idBuyer');
    				var idS = $F('idSeller');
                    checkNegotiationStatus(idS,idB,"S");
					buttonStatus = "none";
                }else if(transport.responseText.match("Redirect")){
                	//ajaxResult.update(transport.responseText);
                	window.location.href="index.htm";
            	}
            },
	        evalScript:true,
            on404: function(){
                ajaxResult.update("<center class=\"texts\" style=\"color:red\">Error - Could not connect to server</center>");
                pe.stop();},
            on503:function(){
                ajaxResult.update("<center class=\"texts\" style=\"color:red\">Error - Could not connect to server</center>");
                pe.stop();}
        });
    }, 10);

}

function sellerNegotiationSubmit(){
	 var fee= $F('fee');
    var sessionLength = $F('sessionLength');
    
    if (!validateValues(fee)) {
    	displayMessage(invalidFee);
    	return false;
    }
    
    if (!validateValues(sessionLength)) {
    	displayMessage(invalidFee);
    	return false;
    }
	var ajaxResult = $('step2Tutor');
	var idBuyer = $F('idBuyer');
	var idSeller = $F('idSeller');
	$('feeFormSubmit').request({
		onSuccess: function(transport) {
			if(transport.responseText.match(/id=\"cancelNegotiation\"/)){
				$('sessionStatus').value="";
				ajaxResult.update(transport.responseText);
				checkBuyer();
			} else if(transport.responseText.match("Redirect")){
				ajaxResult.update(transport.responseText);
			} else {
				ajaxResult.update(transport.responseText);
				waitForBuyerResponse(idBuyer,idSeller);
			}
		},
		evalScript:true});
    
}

function waitForBuyerResponse(idB,idS){
	buyerResponsePE = new PeriodicalExecuter(function(pe) {
        var url = "/private/checkForBuyerResponse.htm";
        ajaxRequest = new Ajax.Request(url, {
            method:'post',
            parameters:{idBuyer:idB,idSeller:idS},
            onSuccess: function(transport) {
            	if (transport.responseText.match(/id=\"waitingForBuyerToStartSession\"/) ){
                    $('step2Tutor').update(transport.responseText,{
                        evalScripts:true
                    });
                    buyerResponsePE.stop();
                    botoneraController("stopped");
                    checkSellerTimer(idB,idS);
                    negotiationStatus.stop();
                }else if(transport.responseText.match("Redirect")){
            		$('ajaxResult').update(transport.responseText);
            	}
                else if (transport.responseText.match(/id=\"clockCounting\"/) ){
                    $('ajaxResult').update(transport.responseText,{
                        evalScripts:true
                    });
                    buyerResponsePE.stop();
                    botoneraController("counting");
                    checkSellerTimer(idB,idS);
                }
                else if (transport.responseText.match(/id=\"failure\"/) ){
                    $('ajaxResult').update(transport.responseText);
                    $('sessionStatus').value="";
                    buyerResponsePE.stop();
                    checkBuyer();
                }
                else if (transport.responseText.match(/id=\"feeFormSubmit\"/)){
                    //buyer wants to renegotiate
                    $('sessionStatus').value="Negotiation";
                    $('ajaxResult').update(transport.responseText );
                    buyerResponsePE.stop();
                    if (negotiationStatus == null) {
                		checkNegotiationStatus($F('idSeller'),$F('idBuyer'),"S");
                	}	
                }
                else if (transport.responseText.match(/id=\"cancelNegotiation\"/)||transport.responseText.match("stopped")){
                    $('ajaxResult').update(transport.responseText);
                    $('sessionStatus').value="";
                    buyerResponsePE.stop();
                    checkBuyer();
                    negotiationStatus.stop();
                }
			},
            on404: function(){
                $('ajaxResult').update("<center class=\"texts\" style=\"color:red\">Error - Could not connect to server</center>");
                buyerResponsePE.stop();},
            on503:function(){
                $('ajaxResult').update("<center class=\"texts\" style=\"color:red\">Error - Could not connect to server</center>");
                buyerResponsePE.stop();},
            evalScripts:true
        });

    },10)
}



function checkForSellerFee(idS){
    sellerResponsePE = new PeriodicalExecuter(function(pe) {
        var url ="/private/checkForSellerFee.htm" ;
        var ajaxResult = $('ajaxResultS');
        ajaxRequest = new Ajax.Request(url,{
            method: 'post',
            parameters:{idSeller:idS},
            onSuccess: function(transport) {
                if(transport.responseText.match("Redirect")){
   					ajaxResult.update(transport.responseText);
   				}else{
	   				if (transport.responseText.match(/id=\"negociateFee\"/) ){
	                    ajaxResult.update(transport.responseText);
	                    pe.stop();
	                    if(negotiationStatus==null) {
	                    	checkNegotiationStatus($F('idSeller'),$F('idBuyer'),"B");
	                    }	
	                }
	                if (transport.responseText.match(/id=\"cancelNegotiation\"/) ){
	                    ajaxResult.update(transport.responseText);
	                    /*if ($('offlineContainer').style=="")
	                    	showNextButton();*/
	                    pe.stop();
	                    //hideNegotiation();
	                }
	                if (transport.responseText.match(/id=\"counterOfferAccepted\"/)){
	                    $('ajaxResult').update(transport.responseText,{
	                        evalScripts:true
	                    });
	                    sellerResponsePE.stop();
                     	if (negotiationStatus!=null) {
                    		negotiationStatus.stop();
                    	}	
	                }
	            }
            },
            evalScript:true,
            on404: function(){
                ajaxResult.update("<center class=\"texts\" style=\"color:red\">Error - Could not connect to server</center>");
                pe.stop();},
            on503:function(){
                ajaxResult.update("<center class=\"texts\" style=\"color:red\">Error - Could not connect to server</center>");
                pe.stop();}
        });

    },10)

}
// Buyer side
/*Send the OK to the seller. The Buyer has accepted the Fee proposed*/
function buyerAcceptFee(){

    var ajaxResult = $('ajaxResultS');
    var idB=$F('idBuyer');
    var idS=$F('idSeller');
    $('sessionLength').value=getFloatFrom('sessionLength');
    $('fee').value=getFloatFrom('fee');
    
    var fee= $F('fee');
    var sessionLength = $F('sessionLength');
    
    if (!validateValues(fee)) {
    	displayMessage(invalidFee);
    	return false;
    }
    
    if (!validateValues(sessionLength)) {
    	displayMessage(invalidFee);
    	return false;
    }
    
    
    $('acceptFee').request({
		onSuccess: function(transport) {
            if (transport.responseText.match(/id=\"starting\"/) ){
                ajaxResult.update(transport.responseText);
                buyerTimerStart(idB,idS,sessionLength);
                //$('feexmin').innerHTML=Math.round(fee*100)/100;
                //calcTotal();
            }else if(transport.responseText.match("Redirect")){
				ajaxResult.update(transport.responseText);
			}
            else if (transport.responseText.match(/id=\"cancelNegotiation\"/) ){
                ajaxResult.update(transport.responseText);
                //showNextButton();
                //hideNegotiation();
            }


        },
        evalScripts:true
	});
}

// Buyer side
function buyerRejectFee(parameters,rejected){
    var url = "/private/buyerRejectFee.htm";
    ajaxRequest = new Ajax.Updater('ajaxResult',url);
    if ($('sessionStatus')) {
    	$('sessionStatus').value="";
    }	
    //showNextButton();
    
}

// Buyer side
// NEW renegotiation AFTER the session
function buyerRenegotiateFee(){
	var fee = $('newFee');
	
	if (fee == null) {
		displayMessage(invalidFee);
	}
	
    if (hasReason()){
    	if (validateValues(fee.value)){
        	var url = "/private/buyerRenegotiateFee.htm";
			var idS= $F('idSeller');
			var idB= $F('idBuyer');
			ajaxRequest =  new Ajax.Request(url,{
	            parameters:{idSeller:idS,idBuyer:idB,fee:getFloatFrom('fee'),newFee:getFloatFrom('newFee'),fixedLength:getFloatFrom('fixedLength')},
	            method:'post',
	            onSuccess: function(transport){
	                $('ajaxResult').update(transport.responseText);
	                checkForFeeChangeResponse(idB,idS );
	                startBuyerTimeout(idB, idS);
	            },
	            evalScripts:true
	        });
    	}
    	else {
    		displayMessage(invalidFee);
    	}	
    }
    else {
        displayMessage("Error: Please select a reason");
	} 
}

function buyerStart(idB,idS,length){
	ajaxRequest = new Ajax.Request("/private/buyerAcceptFee.htm",{
		method:'post',
		parameters:{idSeller:idS},
		onComplete:function(){
			buyerTimerStart(idB,idS,length);
		}
	});
	
}

function hideBtn(elem){
    document.getElementById(elem).style.display="none";
}

function buyerTimerStart(idB,idS,length){
    var url="/private/startTimerByBuyer.htm";
    var ajaxResult = $('ajaxResult');
    if (negotiationStatus) {
    	negotiationStatus.stop();
    }	
    ajaxRequest = new Ajax.Request(url,{
        parameters:{idBuyer:idB,idSeller:idS},
        onComplete: function(transport){
        	if (transport.responseText.match(/id=\"cancelNegotiation\"/)){
    			botoneraController("stopped");
    			$('sessionStatus').value="";
    			if (checkRatingPE != null){
    				checkRatingPE.stop();
    			}
    			ajaxResult.update(transport.responseText,{
                        evalScripts:true
                    });
        	}else if(transport.responseText.match("Redirect")){
 				ajaxResult.update(transport.responseText);
 			}else{
        		simulateTimer(0,0,0,false,length);
        		botoneraController("counting");
    			checkBuyerTimer(idB,idS); 
        	}
            
        },
        evalScripts:true
    });
}

function checkBuyerTimer(idB,idS){

    var ajaxResult = $('ajaxResult');
	seller=idS;
	buyer=idB;
	type="B";
	ajaxRequest = new Ajax.Updater('ajaxResult','/private/getActualTimer.htm',{
    	evalScripts:true,
    	method:'post',
    	parameters:{idBuyer:idB,idSeller:idS,userType:"B"},
    	onComplete:function(transport){
    		if (!transport.responseText.match("stopped")){
    				getTimerPE =new PeriodicalExecuter(function(pe){
				        ajaxRequest2 = new Ajax.Request("/private/getActualTimer.htm",{
				        	method:'post',
				        	parameters:{idBuyer:idB,idSeller:idS,userType:"B"},
				        	onException: function(){
				                getTimerPE.stop();
				            	forcePauseTimer();
				            },
				        	onFailure: function(){
				                getTimerPE.stop();
				            	forcePauseTimer();
				            },
				            on404: function(){
				                getTimerPE.stop();
				            	forcePauseTimer();
							},
				            on503:function(){
				                getTimerPE.stop();
				            	forcePauseTimer();
				            },
				            onSuccess: function(transport){
				            	if (!transport.responseText.match(/id=\"stopped\"/) && !transport.responseText.match(/id=\"cancelNegotiation\"/)){
				                    if (transport.responseText.match(/id=\"paused\"/) ) {
				                        if (transport.responseText.match(/id=\"B\"/)) {
				                            botoneraController("pausedBySelf");
				                        } else {
				                            botoneraController("pausedByOtherParty");
										} 
				                    }
				                    else{
				                        //if the seller clock is not counting yet
				                        if (!transport.responseText.match(/id=\"sellerIsCounting\"/)){
				                        	botoneraController("stopped");
				                        }else{
				                        	botoneraController("counting");
				                        }
				                        
				                    }
				                    ajaxResult.update(transport.responseText,{
				                        evalScripts:true
				                    });
				                }else{
				                	// if it was cancel or stop
				                    pe.stop();
				                    ajaxResult.update(transport.responseText,{
				                        evalScripts:true
				                    });
				                    botoneraController("stopped");
				                    //if it's cancel then stop the clock
				                	if (transport.responseText.match(/id=\"cancelNegotiation\"/) ) {
				                		simulateTimer(0,0,0,true,0);
				                		//showNextButton();
				                		//hideNegotiation();
				                	}
				                	//OK
				                }
				
			          	  },
				            evalScripts:true
				        });
			
			    },10);
    		}else if(transport.responseText.match("Redirect")){
   				ajaxResult.update(transport.responseText);
   			}
    		else{
    			botoneraController("stopped");
    			if (transport.responseText.match("noCharge") ){
			    	$('sessionStatus').value='false';
			    	//showNextButton();
			    }
    			
    		}
    	},
    	evalScripts:true
    });
  
}

function checkSellerTimer(idB,idS){

    var url="/private/getActualTimer.htm";
    $('sessionStatus').value="Live Session";
    
    seller=idS;
    buyer=idB;
    type="S";
    ajaxRequest = new Ajax.Updater('ajaxResult','/private/getActualTimer.htm',{
    	evalScripts:true,
    	method:'post',
    	parameters:{idBuyer:idB,idSeller:idS,userType:"S"},
    	onComplete:function(transport){
    		if(!transport.responseText.match("stopped")){
    			if (transport.responseText.match("starting")) {
    				botoneraController("counting");
    			}	
   				getTimerPE = new PeriodicalExecuter(function(pe){
		        ajaxRequest2 = new Ajax.Request(url,{
		            method:'post',
		            parameters:{idBuyer:idB,idSeller:idS,userType:"S"},
		            onException: function(){
		                getTimerPE.stop();
		            	forcePauseTimer();
		            },
		            onFailure: function(){
		                getTimerPE.stop();
		            	forcePauseTimer();
		            },
		            on404: function(){
		                getTimerPE.stop();
		                forcePauseTimer();
		            },
		            on503:function(){
		                getTimerPE.stop();
		            	forcePauseTimer();
		            },
		            onSuccess: function(transport){
		            	if (!transport.responseText.match(/id=\"stopped\"/)){
							//$('ajaxResult').update(transport.responseText,{
		                    //    evalScripts:true
		                    //});
		                    if (transport.responseText.match(/id=\"paused\"/) ) {
		                        if (transport.responseText.match(/id=\"S\"/)) {
		                            botoneraController("pausedBySelf");
		                        } else {
		                            botoneraController("pausedByOtherParty");
								}
		                    }
		                    else if (transport.responseText.match(/id=\"cancelNegotiation\"/)){
			                    $('ajaxResult').update(transport.responseText);
			                    pe.stop();
			                    botoneraController("stopped");
			                    stopTimer();
			                    checkBuyer();
		                    }
		                    else if (!transport.responseText.match(/id=\"waitingForBuyerToStartSession\"/) ){ //IF NOT!!! waiting for buyer to start session
		                        	botoneraController("counting");
		                    }
		                    $('ajaxResult').update(transport.responseText,{
		                        evalScripts:true
		                    });
		                }else{
		                	botoneraController("stopped");
		                    // Got STOP from server
		                    $('sessionStatus').value="";
		                    pe.stop();
		                    $('ajaxResult').update(transport.responseText,{
		                        evalScripts:true
		                    });
		                    if (transport.responseText.match(/id=\"noCharge\"/)){
		                    	checkBuyer();
		                    }else {
		                    	checkBuyerConfirmation(idB,idS);
		                    }
		
		                }
		
		            },
		            evalScripts:true
		        });
		
			    },15);
    		}else if(transport.responseText.match("Redirect")){
   				ajaxResult.update(transport.responseText);
   			}
    		else{
    			botoneraController("stopped");
    			$('sessionStatus').value="";
				if (transport.responseText.match(/id=\"noCharge\"/)){
			       	checkBuyer();
			    }else {
			    	checkBuyerConfirmation(idB,idS);
			    }
    		}
    	}
    });
    
}

function pauseTimer(){

    botoneraController("pausedBySelf");
    if (peSimulateTimer) {
        peSimulateTimer.stop(); //stop javascript timer
	}
    var url="/private/pauseTimer.htm";
    ajaxRequest = new Ajax.Updater('ajaxResult',url,{
        method: 'post',
        parameters:{idBuyer:buyer,idSeller:seller,userType:type},
        onComplete:function(transport){
        	if (transport.responseText.match("noCharge")) {
        		botoneraController("stopped");
        	} else if (!transport.responseText.match(type)) {
        		botoneraController("pausedByOtherParty");
        	}	
        }
    });

}

function resumeTimer(){
	var hours,mins,secs;
    botoneraController("counting");

    var url ="/private/resumeTimer.htm";
	ajaxRequest =  new Ajax.Request(url,{
        method: 'post',
        parameters:{idBuyer:buyer,idSeller:seller,userType:type},
        onComplete: function(){
        	hours = $('hours').innerHTML;
        	mins = $('mins').innerHTML;
			secs = $('secs').innerHTML;
        	simulateTimer(hours,mins,secs,false,$('tot').innerHTML);
        }
    });
}

function stopTimer(){
    var url="/private/stopTimer.htm";
    var ajaxResult=$('ajaxResult');
    botoneraController("stopped");
    
    if (peSimulateTimer) {
        peSimulateTimer.stop(); //stop javascript timer
	}

    if ($('openinnewwindow').name == 'newwindowbuyer'){ //if it's a buyer, them set newwindow on false
        $('openinnewwindow').value= 'false';
    }

    ajaxRequest = new Ajax.Updater('ajaxResult','/private/getActualTimer.htm',{
    		evalScripts:true,
    		method:'post',
    		parameters:{idBuyer:buyer,idSeller:seller,userType:type},
    		asynchronous:false
   	});

    ajaxRequest = new Ajax.Request(url,{
    	evalScript:true,
    	asynchronous: false,
    	method:'post',
    	parameters:{idBuyer:buyer,idSeller:seller,userType:type},
        onSuccess: function(transport){
            ajaxResult.update(transport.responseText,{
                evalScripts:true
            });
            if (type=="S"){
       			checkBuyerConfirmation(buyer,seller);
        	}

        }
    });
    getTimerPE.stop();
    
    ajaxRequest = new Ajax.Request('/private/getActualTimer.htm',{
    		method:'post',
    		parameters:{idBuyer:buyer,idSeller:seller,userType:type},
    		onFailure: function(){
    			displayMessage("Error: Could not connect to server");
    		},
    		onSuccess: function(transport){
    			ajaxResult.update(transport.responseText,{evalScripts:true});
    		},
    		evalScripts:true,
    		asynchronous:false
    	});
}


function forcePauseTimer(){
	peSimulateTimer.stop();
	botoneraController("pausedByOtherParty");
}


function timerDisplay(hours,mins,secs,minimum){
    if (mins<10 && mins.toString().length<2) {
        mins= "0" + mins;
	}
    if (secs<10 && secs.toString().length<2) {
        secs= "0" + secs;
	}

    $('mins').innerHTML=mins;
    $('secs').innerHTML=secs;
}

var horas;
var minutos;
var segundos;
function simulateTimer(hours, min, secs, pausedOrStopped, minimum){

    if(peSimulateTimer != null){
        peSimulateTimer.stop();
    }
    horas = hours;
    minutos = min;
    segundos = secs;
    if( !pausedOrStopped){

        peSimulateTimer = new PeriodicalExecuter( function(){
            if(segundos == 59){
                segundos = 0;
                minutos ++;
                //if (minutos == 60){
                  //  minutos = 0;
                  //  horas++;
                //}
                //Hour are no longer used.
            }else{
                segundos++;
            }
            timerDisplay(horas,minutos,segundos,minimum);

        },1);
    }

    timerDisplay(horas,minutos,segundos,minimum);


}

function calcTotal(){

    //var fee=parseFloat(document.getElementById('fee').innerHTML);
   	// var fee = parseFloat($('fee'));
   	var fee = $F('fee');
    //var hours=parseFloat(document.getElementById('hours').innerHTML);
    var mins=parseFloat(document.getElementById('mins').innerHTML);
    
    //var total = fee*((hours*60)+mins);
    //var result = 0.00;

	//result = Math.round(total*100)/100;
       
    //formatting output to get this result $7.00 instead of $7
   	//$('tot').innerHTML = result.toDecimals(2);

}

Number.prototype.toDecimals=function(n)
{
    n=(isNaN(n))?
        2:
        n;
    var
        nT=Math.pow(10,n);
    function pad(s){
            s=s||'.';
            return (s.length>n)?
                s:
                pad(s+'0');
    }
    return (isNaN(this))?
        this:
        (new String(
            Math.round(this*nT)/nT
        )).replace(/(\.\d*)?$/,pad);
}

function cancelNegotiation(idB,idS,userType){
    var url = '/private/cancelNegotiation.htm';
    var container;
    if (userType == "S"){
    	container = $('step2Tutor');
    } else {	
    	container = $('ajaxResultS');
    }
    
    ajaxRequest = new Ajax.Request(url,{
        parameters:{idBuyer:idB,idSeller:idS},
        evalScritps:true,
        onSuccess: function(transport){
            container.update(transport.responseText);
        }
    });

    if (userType == "S"){
        if (buyerResponsePE != null) {
            buyerResponsePE.stop();
		}
        checkBuyer();
    }
    if (userType == "B"){
        if (sellerResponsePE != null) {
			sellerResponsePE.stop();
		}
        $('sessionStatus').value="";
    }
}

function cancelPaymentTimer(idB,idS,userType) {

	var url = '/private/cancelPaymentTimer.htm';
    var container;
    if (userType == "S"){ //Buyer / Seller
    	container = $('ajaxResultT');
    } else {	
    	container = $('ajaxResultS');
    }
    
    ajaxRequest = new Ajax.Request(url,{
        parameters:{idBuyer:idB,idSeller:idS,userType:userType},
        evalScritps:true,
        onSuccess: function(transport){
            container.update(transport.responseText);
        }
    });
    if (userType == "S") {
    	checkBuyer();
    }

}




var buttonStatus = "none";

function botoneraController(response){
    if (buttonStatus == "none") {

        $('playWidget').setAttribute('src', '/resources/images/widget_02playOff.jpg');
        $('pauseWidget').setAttribute('src', '/resources/images/widget_02pauseOff.jpg');
        $('stopWidget').setAttribute('src', '/resources/images/widget_02stopOff.jpg');
        $('playWidget').disabled=true;
        $('pauseWidget').disabled=true;
        $('stopWidget').disabled=true;

        //observe click event
     	$(document.body).observe('keypress', function(event){return (event.keyCode != 13)});
     	//$('copyright').observe('keypress', function(event){return (event.keyCode != 13)});
		
		$('playWidget').observe('mouseout', function(){playActive = false});
		$('playWidget').observe('mouseover', function(){playActive = true});
        $('pauseWidget').observe('mouseout', function() {pauseActive = false});
		$('pauseWidget').observe('mouseover', function() {pauseActive = true});     	
        
        
        $('playWidget').observe('click', function(){if(playActive){playClick()}});
        $('pauseWidget').observe('click', function() {if(pauseActive){pauseClick()}});
        $('stopWidget').observe('click', function(){stopClick()});
        $('pauseWidget').onmouseover=function(){
            if  ($('pauseWidget').disabled == false){
                $('pauseWidget').setAttribute('src', '/resources/images/widget_02pauseOnOn.jpg');
            }
        };
        $('pauseWidget').onmouseout=function(){
            if ( $('pauseWidget').disabled == false){
                $('pauseWidget').setAttribute('src', '/resources/images/widget_02pauseOn.jpg');
            }
        };
        $('playWidget').onmouseover=function(){
            if  ($('playWidget').disabled == false){
                $('playWidget').setAttribute('src', '/resources/images/widget_02playOnOn.jpg');
            }
        };
        $('playWidget').onmouseout=function(){
            if ( $('playWidget').disabled == false){
                $('playWidget').setAttribute('src', '/resources/images/widget_02playOn.jpg');
            }
        };
        $('stopWidget').onmouseover=function(){
            if  ($('stopWidget').disabled == false){
                $('stopWidget').setAttribute('src', '/resources/images/widget_02stopOnOn.jpg');
            }
        };
        $('stopWidget').onmouseout=function(){
            if ( $('stopWidget').disabled == false){
                $('stopWidget').setAttribute('src', '/resources/images/widget_02stopOn.jpg');
            }
        };

        buttonStatus="initialized";

    }
    if (response != null){
        if (response == "starting") {
            buttonStatus="starting";
            // enable and show play button on
            $('playWidget').disabled=false;
            $('pauseWidget').disabled=true;
            $('stopWidget').disabled=true;
            $('playWidget').setAttribute('src', '/resources/images/widget_02playOn.jpg');
        }
        else if (response == "counting") {
            buttonStatus = "counting";
            //disable play button, enable pause and stop buttons
            $('playWidget').disabled=true;
            $('pauseWidget').disabled=false;
            $('stopWidget').disabled=false;
            $('playWidget').setAttribute('src', '/resources/images/widget_02playOff.jpg');
            $('stopWidget').setAttribute('src', '/resources/images/widget_02stopOn.jpg');
            $('pauseWidget').setAttribute('src', '/resources/images/widget_02pauseOn.jpg');
        }
        else if (response == "pausedBySelf"){
            buttonStatus="paused";
            //disable pause button
            $('playWidget').disabled=false;
            $('pauseWidget').disabled=true;
            $('pauseWidget').stopObserving('click', function(){pauseClick()});
            $('stopWidget').disabled=false;
            $('pauseWidget').setAttribute('src', '/resources/images/widget_02pauseOff.jpg');
            // re enable play button as resume
            $('playWidget').setAttribute('src', '/resources/images/widget_02playOn.jpg');
            //enable stop button in case of page reload
            $('stopWidget').setAttribute('src', '/resources/images/widget_02stopOn.jpg');
        }
        else if (response == "pausedByOtherParty"){
            buttonStatus="paused";
            //disable pause button
            $('pauseWidget').disabled=true;
            $('pauseWidget').stopObserving('click', function(){pauseClick()});
            $('stopWidget').disabled=false;
            $('playWidget').disabled=true;
            $('pauseWidget').setAttribute('src', '/resources/images/widget_02pauseOff.jpg');
            //enable stop button in case of page reload
            $('stopWidget').setAttribute('src', '/resources/images/widget_02stopOn.jpg');
            $('playWidget').setAttribute('src', '/resources/images/widget_02playOff.jpg');
        }
        else if (response == "stopped"){
        	//alert("botonera stopped");
            buttonStatus="stopped";
            $('playWidget').setAttribute('src', '/resources/images/widget_02playOff.jpg');
            $('pauseWidget').setAttribute('src', '/resources/images/widget_02pauseOff.jpg');
            $('stopWidget').setAttribute('src', '/resources/images/widget_02stopOff.jpg');
            $('playWidget').disabled=true;
            $('pauseWidget').disabled=true;
            $('stopWidget').disabled=true;
        }else if (response == "sellerIsNotCountingYet") {
            buttonStatus = "sellerIsNotCountingYet";
            //disable play button, enable pause and disable stop buttons
             buttonStatus="stopped";
            $('playWidget').setAttribute('src', '/resources/images/widget_02playOff.jpg');
            $('pauseWidget').setAttribute('src', '/resources/images/widget_02pauseOff.jpg');
            $('stopWidget').setAttribute('src', '/resources/images/widget_02stopOff.jpg');
            $('playWidget').disabled=true;
            $('pauseWidget').disabled=true;
            $('stopWidget').disabled=true;
        }
    }
}

function playClick(){
	if(!$('playWidget').disabled){
    	if (buttonStatus == "paused") {
        	resumeTimer();
        }	
    	/*else {
        	buyerTimerStart(idB,idS,userType);
    	}*/
	}
	playActive = false;
}

function pauseClick(){
	if(!$('pauseWidget').disabled) {
    	pauseTimer();
    }	
    pauseActive= false;
}

function stopClick(){
	if(!$('stopWidget').disabled){
    	stopTimer();
	}
}

function handleLogOff(){
	sellerLogoff();
}

function sellerLogoff(){

	ajaxRequest = new Ajax.Request('/private/sellerLogoff.htm',{
    		asynchronous: false
    });
}

function sellerLogIn(user){
	
	ajaxRequest = new Ajax.Request('/private/sellerLogIn.htm',{
			parameters:{userId:user},
			asynchronous: false
	});
}


function saveRating(idTransaction,buyer,seller,req,flag){
    var rate;
    
    if ($('positiveRating').checked) {
        rate=1;
	} else if ($('neutralRating').checked) {
        rate=0;
    }else {
        rate = -1;
	}
    if (req == "S"){
        ajaxRequest = new Ajax.Updater('ajaxResult','/private/saveRating.htm',{
            parameters: { trans: idTransaction, user: 'seller', idBuyer: buyer, idSeller: seller, rating: rate }
        });
    } else {
        //tip = $('additional').value;
        tip = 0;
        ajaxRequest = new Ajax.Request('/private/saveRating.htm',{
            parameters: { trans: idTransaction, user: 'buyer', idBuyer: buyer, idSeller: seller, rating: rate, extra: tip },
            asynchronous: false    
	    });
    }
}

function saveSellerRating(idTransaction,buyer,seller,req){
    if (hasRated()) {
        saveRating(idTransaction,buyer,seller,req);
    } else {
        displayMessage("Please select a rating");
	}
}

/*
this function is called when the buyer rates a seller
*/
function completeAndRate(idTransaction,buyer,seller){

    if (hasRated()){
        if (validExtra()){
        
        	startBuyerTimeout(buyer, seller);
        	
            saveRating(idTransaction,buyer,seller,"B");
       
            //var extra = Math.round(parseFloat($('additional').value) * 100)/100;
            var extra = 0;
	        var ammount = Math.round(parseFloat(document.getElementsByName('amount')[0].value) * 100)/100;
            document.getElementsByName('amount')[0].value = Math.round((ammount + extra)*100)/100;  //add extra to paypal form
            document.getElementById('completePurchase').submit();  //submit paypal form
           	
           	updateContent(buyer, seller, idTransaction);
        }
        else {
            alert("Please insert a valid amount");
		}
    } else if (complaint) {
		//var extra = Math.round(parseFloat($('additional').value) * 100)/100;
		var extra = 0;
		var ammount = Math.round(parseFloat(document.getElementsByName('amount')[0].value) * 100)/100;
		document.getElementsByName('amount')[0].value = Math.round((ammount + extra)*100)/100;  //add extra to paypal form
		document.getElementById('completePurchase').submit();  //submit paypal form
		
    	var first = true;
    	new PeriodicalExecuter(function(pe){
	        new Ajax.Request("/private/checkTransactionStatus.htm",{
		            parameters: {tId:idTransaction, pId:seller},
		            onComplete: function(transport){
		            	if (transport.responseText.match(/id=\"thankYou\"/)) {
		            		$('ajaxResult').update(transport.responseText);
							complaint = false;
		            		pe.stop();
		            	} else if (first) {
							$('message').innerHTML = "We are waiting for payment confirmation from Paypal. If you just paid, please wait a few seconds. If you have not paid, you must do so now.";
							first = false;	            		  
		            	}
		            }
		    })},10);
		
		//Starts timeout for student
		startBuyerTimeout(buyer,seller);
   
    } else {
        alert("Please select a rating");
	}
}

/*
this function is called when the buyer wants to file a complaint
*/
function fileAComplaint(idTransaction,buyer,seller){

    if (hasRated()){
    	if (validExtra()){
        	saveRating(idTransaction,buyer,seller,"B");
        	ajaxRequest = new Ajax.Updater('ajaxResult','/private/fileComplaint.htm',{
        		evalScripts: true,
	            parameters: { trans: idTransaction, idBuyer: buyer, idSeller: seller}
	        });
    	}
    	else {
    		alert("Please insert a valid amount");
		}
    }
    else {
        alert("Please select a rating");
	}
}

function checkBuyerConfirmation(idBuyer, idSeller){
    checkRatingPE = new PeriodicalExecuter(function(pe){

        ajaxRequest = new Ajax.Request("/private/checkRating.htm",{
            parameters:{idBuyer:idBuyer,idSeller:idSeller},
            onSuccess: function(transport){
                if (transport.responseText.match(/id=\"successful\"/) || (transport.responseText.match(/id=\"errorMessage\"/))) {
                    $('ajaxResult').update(transport.responseText);
                    pe.stop();
                    checkRatingPE= null;
                    checkForFeePE.stop();
                    checkBuyer();
                    buyerTimeoutPE.stop();
                } else if(transport.responseText.match("Redirect")) { 
   					$('ajaxResult').update(transport.responseText);
   				}
            },
            evalScripts:true
        })
    },15)
};

function saveComplaint(seller){

    if (hasChosenComplaintType()){
        $('complaintForm').request({
            method: 'post',
            onSuccess: function(transport){
                $('ajaxResult').update(transport.responseText);
				if ($('ajaxOnlineStatus').innerHTML.include('online now')) {
					//showNextButton();
				}
			},
            evalScripts:true
        });
    }
    else {
        alert("Please select a complaint type");
	}
}


/*function hideNextButton(){
	if($('nextButtonContainer'))
    	$('nextButtonContainer').style.display="none";
    
}*/

function showNextButton(){
	if($('nextButtonContainer')) {
    	$('nextButtonContainer').style.display="";
    }	
    
}

function updateContent(buyer,seller,transaction){
    ajaxRequest = new Ajax.Updater('ajaxResult','/rateView.htm', {
    	method:'post',
    	parameters:{idBuyer:buyer,idSeller:seller,idTransaction:transaction},
        evalScripts: true
    });
}

function disableRadioButtonsAndExtra(){
    //$('positiveRating').disabled = true;
    //$('neutralRating').disabled  = true;
    //$('negativeRating').disabled = true;
    //$('additional').disabled     = true;
}

function showMsg(){
   ajaxRequest = new Ajax.Updater('ajaxResult','/blockMessage.htm');
}



function goBackPreviousStepComplaint(){
    $('complaintForm').setAttribute('action', '/rateView.htm');

    $('complaintForm').request({
        method: 'post',
        onSuccess: function(transport){
            $('ajaxResult').update(transport.responseText);
        },
        evalScripts:true
    });
}

function goBackPreviousStepRenegotiateFee(){
    $('changeFeeForm').setAttribute('action', '/rateView.htm');
    $('changeFeeForm').request({
        method: 'post',
        onSuccess: function(transport){
            $('ajaxResult').update(transport.responseText);
        },
        evalScripts:true
    });
    $('widget').style.display="";
}



function cleanTimerWidget(){
	//if ($('feexmin'))
    	//$('feexmin').innerHTML='0.00';
    
    //if ($('tot'))
    	//$('tot').innerHTML='0.00';
    
    //if ($('hours'))
    	//$('hours').innerHTML='00';
    
    if ($('mins')) {
    	$('mins').innerHTML='00';
    }	
    
    if ($('secs')) {
    	$('secs').innerHTML='00';
    }	
    
}


function sellerWidgets(){
    var elems = $('widgets').getElementsByTagName("a");
    for (var i=0; i < elems.length; i++) {
        elems[i].setAttribute("target","blank");
	}
    
}

function validExtra(){
    //return (!isNaN(getFloatFrom('additional')) && $('additional').value >= 0);
    return true;
}



// Checks seller online status every x seconds

function sellerOnlineStatus(idSeller, reconnectChat) {
	checkOnlineStatus(idSeller, reconnectChat);
	
   sellerOnlineStatusPE =  new PeriodicalExecuter(function(pe) {
        checkOnlineStatus(idSeller, false);
    },20);
}

function checkOnlineStatus(idS, reconnectChat) {
	var ajaxResult = $('ajaxOnlineStatus');
	
	ajaxRequest = new Ajax.Request('/sellerOnlineStatus.htm', {
	    method: 'post',
	    parameters:{idSeller:idS},
	    onSuccess: function(transport) {
	    	ajaxResult.update(transport.responseText);
	    	if (transport.responseText.match("online now")){
	    		//como el buyer esta in line y el seller on line se debe mostrar el chat
	   			//para chequear que ya no este abierto el panel del chat , ver que no este la solapa del mail abierta && !$('formEmail') 
	   			
	   			if( sellerOnlineStatusPE.timer != null && !$('successful') ){
	   				 showChatPanel(idS,document.getElementById('idBuyer').value, reconnectChat);
			   	}
			   	
		    	if (document.getElementById('sessionStatus').value != 'true'){
		        		//ver!!! 
		        }
		       	else if(transport.responseText.match("Redirect")){
	   				ajaxResult.update(transport.responseText);
	   			}
	   			
	        }else {//si no esta conectado
	        	
	    		if (!$('formEmail')&&!$('sendingEmail')){
			   			if (amILogged()) {
			   				showEmail(idS);
			   			}	
			   		}
	    	}
	    },
	    evalScripts:true
	});
}

function acceptCounterOffer(){
    $('minimum').value=getFloatFrom('minimum');
    $('fee').value=getFloatFrom('fee');
    var idB=$F('idBuyer');
    var idS=$F('idSeller');
    ajaxRequest = new Ajax.Request("/private/sellerAcceptRenegotiation.htm",{
        parameters:{fee:$F('fee'),minimum:$F('minimum'),idBuyer:idB},
        onSuccess: function(transport){
            if (transport.responseText.match(/id=\"cancelNegotiation\"/)){
                $('ajaxResult').update(transport.responseText);
                checkBuyer();
            }
            else {
                //$('feexmin').innerHTML=Math.round($F('fee')*100)/100;
                //calcTotal();
       			$('ajaxResult').update(transport.responseText);                
                waitForBuyerResponse(idB,idS);
            }
        },
        evalScripts:true
    });
}

function startTimer_onmouseover(){
    document.getElementById('startTimer').className='startTimer_on';
}
function startTimer_onmouseout(){
    document.getElementById('startTimer').className='startTimer';
}
function startTimer_off(){
    document.getElementById('startTimer').className='startTimer_off';
    document.getElementById('startTimer').onmouseover = null;
    document.getElementById('startTimer').onmouseout = null;
    document.getElementById('startTimer').onclick = null;
}
function accept_off(){
	if(document.getElementById('acceptNegociationImage')){
		document.getElementById('acceptNegociationImage').src='/resources/images/accept_grayed.png';
   		document.getElementById('acceptNegociationImage').style.cursor='default';
   		document.getElementById('acceptNegociationImage').onmouseover = null;
    	document.getElementById('acceptNegociationImage').onmouseout = null;
   		document.getElementById('acceptNegociation').onmouseover = null;
    	document.getElementById('acceptNegociation').onmouseout = null;
    	document.getElementById('acceptNegociation').onclick = null;
    }
}


function reject_onmouseover(){
    document.getElementById('reject').className='reject_on';
}
function reject_onmouseout(){
    document.getElementById('reject').className='reject';
}
function renegotiate_onmouseover(){
    document.getElementById('renegotiate').className='renegotiate_on';
}
function renegotiate_onmouseout(){
    document.getElementById('renegotiate').className='renegotiate';
}
function btnnext_onmouseover(){
    document.getElementById('next').className = 'btnnexton';
}
function btnnext_onmouseout(){
    document.getElementById('next').className = 'btnnext';
}

function buttonBehavior(){

//    if ($('cancelNegociationImage')) {
//        $('cancelNegociationImage').onmouseover=function() {
//            $('cancelNegociationImage').src='/resources/images/cancel_on.gif';
//        };
//        $('cancelNegociationImage').onmouseout=function(){
//            $('cancelNegociationImage').src='/resources/images/cancel.gif';
//        };
//    }
//
//    if ($('sendNegociationImage')){
//        $('sendNegociationImage').onmouseover=function() {
//            $('sendNegociationImage').src='/resources/images/send_on.gif';
//        };
//        $('sendNegociationImage').onmouseout=function(){
//            $('sendNegociationImage').src='/resources/images/send.gif';
//        };
//    }
//    if ($('acceptNegociationImage')){
//        $('acceptNegociationImage').onmouseover=function() {
//            $('acceptNegociationImage').src='/resources/images/accept_on.gif';
//        };
//        $('acceptNegociationImage').onmouseout=function(){
//            $('acceptNegociationImage').src='/resources/images/accept.gif';
//        };
//    }
}

function submitButtonOn(){
    $('submit').setAttribute("src","/resources/images/submit_on.gif");
}


function submitButtonOff(){
    $('submit').setAttribute("src","/resources/images/submit.gif");
}


function hasRated(){
    return ($('positiveRating').checked || $('neutralRating').checked || $('negativeRating').checked);
}

function hasChosenComplaintType(){
    return ($('complaintTimer').checked || $('complaintService').checked);
}

function completePurchaseOn(){
    $('completePurchaseImg').style.backgroundImage ='url(/resources/images/completePurchase.png)';
}

function completePurchaseOff(){
    $('completePurchaseImg').style.backgroundImage  ='url(/resources/images/complete-purchase_on.gif)';
}


function startButtonOn(){
    $('startTimerImg').setAttribute("src","/resources/images/start-timer_on.gif")
}

function startButtonOff(){
    $('startTimerImg').setAttribute("src","/resources/images/start_timer.png")
}

function cancelButtonOn(){
    $('cancelImg').setAttribute("src","/resources/images/cancel_on.gif")
}

function cancelButtonOff(){
    $('cancelImg').setAttribute("src","/resources/images/cancel.png")
}
function getFloatFrom(str){
	var string;
	if (document.getElementById(str)==null){
		string=new String(str);	
	}else{
		string=new String(document.getElementById(str).value);
	}
	string = string.replace(',','.');
	if(!isNaN(string)) {
		return parseFloat(string);
	} else {
		return NaN;
	}
}

function checkNegotiationStatus(idS,idB,userType){
	var container;
	if (userType == "S"){ //Buyer / Seller
    	container = $('ajaxResultT');
    } else {	
    	container = $('ajaxResultS');
    }
	negotiationStatus = new PeriodicalExecuter(function(pe){
		ajaxRequest = new Ajax.Request("/private/checkNegotiationStatus.htm",{
		method:'post',
		parameters:{idBuyer:idB,idSeller:idS,userType: userType},
		onComplete:function(transport){
			if(transport.responseText.match("cancelNegotiation")){
				container.update(transport.responseText);
				pe.stop();
				if (transport.responseText.match("S")){
					checkBuyer();
				}	
				if (transport.responseText.match("B")){
					//hideNegotiation();
				}
			}
		}
	});
	},10);
}
/*function hidePresentation(){
	document.getElementById('presentation').style["display"]= "none";
	document.getElementById('negociation').style["display"]= "";

}*/
/*function hideNegotiation(){
	document.getElementById('presentation').style["display"]= "";
	document.getElementById('negociation').style["display"]= "none";

}*/

function showStartTimer() {
	if(document.getElementById('startTimer')) {
		document.getElementById('startTimer').style.display = "";
	}	
}

function hideStartTimer() {
	if(document.getElementById('startTimer')) {
		document.getElementById('startTimer').style.display = "none";
	}	
}

function showCompletePurchase() {
	document.getElementById('completePurchaseImg').style.display = "";
}

function hideCompletePurchase() {
	document.getElementById('completePurchaseImg').style.display = "none";
}

function validateValues(number) {
	if (isNaN(number)) {
		return false;
	} else if ((number.indexOf(",") != -1) || (number.indexOf(".") != -1)){
		return false;
	} else {	
		if (number <= 0 || number > 999) {
			return false;
		}	
	}
	return true;
}

//Post sale fee renegotiation

function changeFee(idTransaction,buyer,seller){
    ajaxRequest = new Ajax.Request('/private/changeFee.htm',{
		parameters:{idTransaction:idTransaction, idBuyer:buyer, idSeller:seller },
		method: 'post',
		onSuccess: function(transport){
            if (transport.responseText.match(/id=\"changeFee\"/)){
                $('ajaxResult').update(transport.responseText);
                
            }
        },
        evalScripts:true
    });

}

function hasReason() {
    return ($('early').checked || $('late').checked || $('other').checked);
}

function payLater(idTransaction,buyer,seller){
	$('payLater').style.display="none";
	$('changeFee').style.display="none";
	$('message').innerHTML = "You have asked to pay later. <br />" + "You must complete the purchase within 5 days of the session.";
	
	ajaxRequest = new Ajax.Request('/private/buyerPayLater.htm',{
		parameters:{idBuyer:buyer, idSeller:seller,idTransaction: idTransaction },
		method: 'post',
		onSuccess: function(transport) {
			/*if (transport.responseText.match(/id=\"newFeePropose\"/) ){
				ajaxResult.update(transport.responseText);
				$('sessionStatus').value="Negotiation";
				pe.stop();
			}*/
		},
		evalScript:true
	});
	
	
}

//Checks if the buyer has requested a fee change after the session.
function checkForFeeChange (buyer, seller, idTransaction) {

	var ajaxResult = $('ajaxResult');
	checkForFeePE = new PeriodicalExecuter(function(pe) {
		ajaxRequest = new Ajax.Request('/private/checkForFeeChange.htm',{
			parameters:{idBuyer:buyer, idSeller:seller,idTransaction: idTransaction },
			method: 'post',
			onSuccess: function(transport) {
				if (transport.responseText.match(/id=\"newFeePropose\"/) ){
					ajaxResult.update(transport.responseText);
					$('sessionStatus').value="Negotiation";
					pe.stop();
				} else if (transport.responseText.match(/id=\"payLater\"/) ){
					$('message').innerHTML = "Student has asked to pay later. <br />"
					+ "Student must complete the purchase within 5 days of the session.";
					pe.stop();
					//checkRatingPE.stop();
					buyerTimeoutPE.stop();
					checkBuyer();
					$('studentNone').innerHTML = "<h2>Tutoring Session</h2>";
				}
			},
			evalScript:true
		});
	}, 10);

}

//Checks if the buyer has requested a fee change after the session.
function checkForFeeChangeResponse(buyer, seller) {

	var ajaxResult = $('ajaxResult');
	checkForFeeResponsePE = new PeriodicalExecuter(function(pe) {
		ajaxRequest = new Ajax.Request('/private/checkForFeeResponse.htm',{
			parameters:{idBuyer:buyer, idSeller:seller},
			method: 'post',
			onSuccess: function(transport) {
				if (transport.responseText.match(/id=\"renegotiated\"/) || transport.responseText.match(/id=\"rejected\"/) ){
					ajaxResult.update(transport.responseText);
					$('sessionStatus').value="Negotiation";
					pe.stop();
				}
			},
			onFailure: function (transport) {
				var lala = transport;
				var ia = 0;
				var lala2 = transport.responseText;
			},
			evalScript:true
		});
	}, 10);

}


function rejectNewFee(buyer,seller,idTransaction) {
	ajaxRequest = new Ajax.Request('/private/sellerFeeResponse.htm',{
		parameters:{idBuyer:buyer, idSeller:seller,feeResponse:"REJECTED",idTransaction: idTransaction },
		method: 'post',
		onSuccess: function(transport){
			if (transport.responseText.match(/id=\"stopped\"/)){
				$('ajaxResult').update(transport.responseText);
			}
        },
        evalScripts:true
    });
	checkForFeeChange(buyer,seller,idTransaction);
}


function acceptNewFee(buyer,seller,idTransaction) {
	ajaxRequest = new Ajax.Request('/private/sellerFeeResponse.htm',{
		parameters:{idBuyer:buyer, idSeller:seller, feeResponse:"ACCEPTED",idTransaction: idTransaction },
		method: 'post',
		onSuccess: function(transport){
            if (transport.responseText.match(/id=\"stopped"/)){
                $('ajaxResult').update(transport.responseText);
                
            }
        },
        evalScripts:true
    });
    checkForFeeChange(buyer, seller, idTransaction);
}

//checks if the buyer has been incative for more the X minutes, after the session is finished 
function checkForBuyerTimeOut(buyer,seller) {
	buyerTimeoutPE = new PeriodicalExecuter(function(pe) {
		ajaxRequest = new Ajax.Request('/private/buyerCheckTimeout.htm',{
			parameters:{idBuyer:buyer, idSeller:seller},
			method: 'post',
			onSuccess: function(transport) {
				if (transport.responseText.match(/id=\"buyerTimedOut\"/)) {
					pe.stop();
					checkRatingPE.stop();
					checkBuyer();
					$('studentNone').innerHTML = "<h2>Tutoring Session</h2>";
				}
			},
			evalScript:true
		});
	}, 30);
}

function startBuyerTimeout(buyer, seller) {
	ajaxRequest = new Ajax.Request('/private/buyerUpdateTimeOut.htm',{
		parameters:{idBuyer:buyer, idSeller:seller},
		method: 'post',
		onSuccess: function(transport) {
		//do nothing
		},
		evalScript:true
	});
}

function moveChatWindow() {

	//$'(studentNone').inneHTML.substring
	var oldChild;
	var node = $('chatContainer'); 
	if (node.parentNode) {
		// removes a chat window from the leftPanel, unless 
		// it's not in the panel already
		oldChild = node.parentNode.removeChild(node);
	}
	
	$('multipleChatsContainer').style.display='';
	var newDiv = document.createElement("div");
	newDiv.className = 'multipleChat';
	//$('multipleChats').insert($('multipleChats'),newDiv);
	newDiv.appendChild(oldChild);
	$('multipleChats').appendChild(newDiv);
	
}

function moveActiveChatWindow(newUserName) {
	var children = $('multipleChats').childNodes;
	var activeChat;
	var findString;
	for (var i = 0; i < children.length; i++) {
		var child = children[i];
		findString = newUserName + "</";
		if (child.innerHTML) {
			if (child.innerHTML.match(findString)) {
				activeChat = $('multipleChats').removeChild(child);
				//activeChat.down('div.chatTitle').hide();
				break;
			}
		}
	}
	if (activeChat) {
		for (var j = 0; j < activeChat.childNodes.length; j++) {
			var child = activeChat.childNodes[j];
			if (child.innerHTML) {
				if (child.innerHTML.match(findString)) {
					$('step1Tutor').appendChild(child);
					$('step1Tutor').style.display="";
				}
			}
		}
	}
}

function updateNegotiationStatus(idPostSeller, idPostBuyer, status) {
	new Ajax.Request('/private/updateNegotiationModel.htm',{
		parameters:{idSeller:idPostSeller, idBuyer:idPostBuyer, status:status},
		method:'post',
		onSuccess: function(transport){
		},
		evalScript:true
	});
}
