var website = "user.businessalertingservice.com";
var appId = 444;
var loginURI = "http://"+website+"/subscriber/Login"; // access URL for Login requests
var accountURI = "http://"+website+"/subscriber/SubscriberAccount"; // access URL for Subscriber Account requests
var settingsURI = "http://"+website+"/subscriber/SubscriberSettings"; // access URL for Subscriber Settings requests
var registerURI = "http://"+website+"/subscriber/SubscriberRegistration"; // access URL for Subscriber Settings requests
var prefURI = "http://"+website+"/subscriber/Prefs/"; // access URL for Application Preferences requests
var lookupURI = "http://"+website+"/subscriber/SymbolLookup/"; // access URL for Lookup Symbols
var previewURI = "http://"+website+"/subscriber/CompanyInfo/"; // access URL for Previews

var appRegistrationXML  = "<app appid='444' action='add' />" ;

var loginConnMethod = "POST";
var accountConnMethod = "POST";
var settingsConnMethod = "POST";
var prefConnMethod = "POST";
var lookupConnMethod = "POST";
var useServer = true;

var msgCounter = 0;
var sequenceId = 0;

var messageCookieName = "messageCookie";
var messageTypeCookieName = "messageTypeCookie";
var forwardCookieName = "forwardCookie";

function showMessage(msg, type){
	var messageContainer = YAHOO.util.Dom.get("messageContainer");
	messageContainer.innerHTML = "";
	var base = "message-";	

	var arr = msg.split("\n");
	for(var i=0 ; i < arr.length ; i++){
		if(arr[i].length > 0){
			var msgDiv = messageContainer.appendChild(document.createElement("div"));
			msgDiv.innerHTML = arr[i];
			YAHOO.util.Dom.addClass(msgDiv, base + type);
			msgDiv.id = base + msgCounter;
			msgCounter++;
		}
	}
}

function showMessageFromServer(status, msg, func){
	var xotree = new XML.ObjTree();
    var status = xotree.parseXML( status );
    
    var statusType = status.results.status;
    var errorCode, errorMsg;
    if(status.results.error){
    	errorCode = status.results.error.code;
    	switch (errorCode){
	    	case 0: //invalid username (upon login)
	    			msg = "The username entered does not exist.";
	    			break;
	    	case 1: //invalid password (upon login)
	    			msg = "Incorrect password.";
	    			break;
	    	case 2: //User Not Logged In
	    			msg = "You are not logged in.";
	    			func = forwardToLoginPage;
	    			break;
	    	case 3: // Email is already in use (When editing account details, Another account is already using that email)
	    			msg = "The email entered is already in registered.";
	    			break;
	    	case 4: //Existing password do not match (In editing passwords, when entry in "Old Password" field is different from real password)
	    			msg = "Old password does not match the existing password.";
	    			break;
	    	case 5: //Monitor name already exists
	    			msg = "Monitor name already exists.";
	    			break;
	    	case 6: //
	    			break;
	    	case 7: //XML error
	    			msg = "An error occurred. Please contact the site's administrator.";
	    			break;
	    	default:
			    	msg = status.results.error["#text"];
	    			break;
    	}
    }
    else if(func) func();
    
    showMessage(msg, statusType);   
}

function getXmlRequestHeader(action, reference){
	if(!reference)
		reference = "";
	return '<request reference="'+reference+'" command="'+action+'" sequence="'+(sequenceId++)+'">';
}

/* ***************************  *********************************** */
function showLoading(customHeader){

        if (!YAHOO.xtenit.wait) {

            // Initialize the temporary Panel to display while waiting for external content to load
            YAHOO.xtenit.wait = new YAHOO.widget.Panel("wait",
									   { width: "240px", 
										 fixedcenter: true, 
										 close: false, 
										 draggable: false, 
										 modal: true,
										 visible: false
									   });
    
            YAHOO.xtenit.wait.setHeader("Loading, please wait...");
            YAHOO.xtenit.wait.setBody("<img src=\"images/loading.gif\"/>");
            YAHOO.xtenit.wait.render(document.body);

        }
		
		if(customHeader){
			YAHOO.xtenit.wait.setHeader(customHeader);
		}
		YAHOO.xtenit.wait.show();
}

function hideLoading(){
	if(YAHOO.xtenit.wait){
		YAHOO.xtenit.wait.hide();
	}
}



/* ********************************* AJAX stuff ********************************* */
var div = document.getElementById('container');
var serverCallback;
var hideLoadingAfterServerCall = true;

var handleSuccess = function(o){
	YAHOO.util.Dom.get("contents").style.display = "";
	YAHOO.util.Dom.get("ajaxError").style.display = "none";
	serverCallback(o);
	if(hideLoadingAfterServerCall)
		hideLoading();
};

var handleFailure = function(o){
	YAHOO.util.Dom.get("contents").style.display = "none";
	YAHOO.util.Dom.get("ajaxError").style.display = "";
	YAHOO.util.Dom.get("ajaxError").innerHTML = o.responseText;
	hideLoading();
};

function callServer(sUrl, xmlData){
	//showLoading();
	var connMethod = loginConnMethod;
	
	if(sUrl == loginURI) loginConnMethod;
	else if(sUrl == accountURI) accountConnMethod;
	else if(sUrl == settingsURI) settingsConnMethod;
	else if(sUrl == prefURI){
		prefConnMethod;
		sUrl += appId;
	}
	
	var connection = YAHOO.util.Connect.asyncRequest(connMethod,
									sUrl,
									{ success:handleSuccess,
									  failure:handleFailure
									},
									"xml="+xmlData);
}

function forwardToLoginPage(){
	setMessageCookie('Please login.', 'error');
	setCookie(forwardCookieName,window.location,1);
	window.location = "login.html";
}

/* ********************************* Cookie *************************************** */
function getCookie(c_name){
	if (document.cookie.length>0){
		c_start=document.cookie.indexOf(c_name + "=")
		if (c_start!=-1){ 
			c_start=c_start + c_name.length+1 
			c_end=document.cookie.indexOf(";",c_start)
			if (c_end==-1) c_end=document.cookie.length
				return unescape(document.cookie.substring(c_start,c_end))
		} 
	}
	return ""
}

function setCookie(c_name,value,expiredays){
	var exdate=new Date()
	exdate.setDate(exdate.getDate()+expiredays)
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : "; expires="+exdate.toGMTString())
}

function setMessageCookie(msg,type){
	setCookie(messageCookieName,msg,1);
	setCookie(messageTypeCookieName,type,1);
}

function eraseMessageCookie(msg,type){
	setCookie(messageCookieName,msg,-1);
	setCookie(messageTypeCookieName,type,-1);
}

function showMessageFromCookie(){
	var msg = getCookie(messageCookieName);
	var msgType = getCookie(messageTypeCookieName);
	if(msg != null && msg != "" && msgType != null && msgType != ""){
		showMessage(msg, msgType);
		eraseMessageCookie();
	}
}

function logout(){
	if(useServer){
		hideLoadingAfterServerCall = false;
		serverCallback = function(response){
			setMessageCookie('Thank you for using Business Alerting Service.', 'success');
			window.location = "login.html";	
		};
	
		callServer(loginURI, getXmlRequestHeader('logout')+'</request>');
	}
	else{
	 window.location = "login.html";
	 }
}

function loadIsLoggedIn(){
	return getXmlRequestHeader('isloggedon')+'</request>';
}

function trim(sInString) {
  sInString = sInString.replace( /^\s+/g, "" );// strip leading
  return sInString.replace( /\s+$/g, "" );// strip trailing
}

function openWindow(url, name, width, height)
{
    popupWin = window.open(url, name, 'scrollbars,resizable,width='+width+',height='+height+',left=100,top=100');
    return false ;
}



function getMenu(isLoggedIn){
	var navlist = YAHOO.util.Dom.get("navlist");
	var loc = location.pathname;
	var li = navlist.appendChild(document.createElement("li"));
	var isCurrentPage = false;
	var link = li.appendChild(document.createElement("a"));
	
	var setCurrent = function(link, li){
		link.id = "current";
		li.id = "active";
	};
	
	if(isLoggedIn){
		isCurrentPage = loc.match("monitors.html");
		link.href = "monitors.html";
		link.innerHTML = "My Monitors";
		if(isCurrentPage) setCurrent(link, li);
		
		li = navlist.appendChild(document.createElement("li"));
		link = li.appendChild(document.createElement("a"));
		isCurrentPage = loc.match("details.html");
		link.href = "details.html";
		link.innerHTML = "Account";
		if(isCurrentPage) setCurrent(link, li);

		li = navlist.appendChild(document.createElement("li"));
		link = li.appendChild(document.createElement("a"));
		isCurrentPage = loc.match("/history.jsp");
		link.href = "/history.jsp";
		link.innerHTML = "History";
		if(isCurrentPage) setCurrent(link, li);
		
		li = navlist.appendChild(document.createElement("li"));
		li.innerHTML = '<a onclick="logout();">Logout</a>';
    }
    else{
		isCurrentPage = loc.match("home.html");
		link.href = "home.html";
		link.innerHTML = "Home";
		if(isCurrentPage) setCurrent(link, li);

		li = navlist.appendChild(document.createElement("li"));
		link = li.appendChild(document.createElement("a"));		
		isCurrentPage = loc.match("/register.jsp?appid=444");
		link.href = "/register.jsp?appid=444";
		link.innerHTML = "Register";
		if(isCurrentPage) setCurrent(link, li);
		
		li = navlist.appendChild(document.createElement("li"));
		link = li.appendChild(document.createElement("a"));
		isCurrentPage = loc.match("login.html");
		link.href = "login.html";
		link.innerHTML = "Login";
		if(isCurrentPage) setCurrent(link, li);
    }
}
