//var webServiceUrl = "../../ws/"; //STAGING
var webServiceUrl = "../../ws/";  //LIVE
//var webServiceUrl = "http://hexosearch.com/wstest/"; //DO NOT use this, testing only!
//var webServiceUrl = "http://localhost:1906/WebServices/"; //LEO LOCAL

var vote_id;
var myTimeoutMessage;

function Button1_onclick() {
	misc.GetServerResponse("asdf", OnComplete, OnError, OnTimeOut);
}

function OnComplete(arg) {
	alert(arg);
}

function OnTimeOut(arg) {
	alert("timeOut has occured");
}

function OnError(arg) {
	alert("error has occured: " + arg._message);
}

function voteUp() {
	//var langOfCountries = googleCheckLangOfCountries();

	var url = getQuerystring("zurlz");
	var keyword = getQuerystring("zqz");
	var pageTitle = getQuerystring("ztz");
	var lv = getQuerystring("zlvz");
	var userName = document.getElementById("hiddenUsername").value;
	
	var sUrl = webServiceUrl + "digg.asmx";
	var sServiceNamespace = "http://hexosearch.com/digg";
	var sMethodName = "voteUp";

	var pl = new SOAPClientParameters();
	pl.add("url", url);
	pl.add("keyword", keyword);
	pl.add("pageTitle", pageTitle);
	pl.add("login", userName);
	pl.add("lv", lv);
	SOAPClient.invoke(sUrl, sMethodName, pl, true, voteUpCallback);
	document.getElementById("external_content").innerHTML = "Processing, please wait.";
	
	if(document.getElementById("voted") != null){
		document.getElementById("voted").style.display = "none";
	}
	if(document.getElementById("not_voted") != null){
		document.getElementById("not_voted").style.display = "none";
	}
	//var r = "259||2||leofan||3||jackjackjackjackjack||1||marspark{VoteInfo}KEYWORD";
	//voteUpCallback(r);
}

function voteUpCallback(r) {
	if (r == "ip exist") {
		document.getElementById("external_content").innerHTML = "You've already voted for this link.";
	}else {
		document.getElementById("external_content").innerHTML = "Thank you for your input!";
		/*var r_sub = r.substring(0, r.indexOf("{VoteInfo}"));
		var data = r_sub.split("||");
		var own_name = document.getElementById("hiddenUsername").value;
		if(data.length == 1 || (data.length == 3 && data[2] == own_name)){
			document.getElementById("external_content").innerHTML = "Thank you for your input!";
		}else{
			var to = "<b>To:</b> ";
			vote_id = data[0];
			
			for(var i = 1; i < data.length; i+=2){
				if(data[i+1] != own_name){
					if(to != "<b>To:</b> "){
						to += ", ";
					}
					to += "<a href='user.aspx?user="+data[i+1]+"'>"+data[i+1]+"</a>";
				}
			}
			document.getElementById("external_content").style.display = "none";
			document.getElementById("external_message").style.display = "block";
			document.getElementById("vote_panel").style.width = "125px";
			document.getElementById("disclaimer").style.width = "100px";
			document.getElementById("external_message").style.width = "100px";
			votePanelWidth = 140;
			document.getElementById("message_panel_to").innerHTML = to;
		}*/
	}
}

function sendMessage(){
	var sUrl = webServiceUrl + "misc.asmx";
	var sServiceNamespace = "http://hexosearch.com/misc";
	var sMethodName = "addTAMessage";
	
	var message = document.getElementById("message_form").value;
	var user_id = document.getElementById("hiddenUid").value;
	
	if(user_id == ""){
		user_id = -1;
	}
	
	var pl = new SOAPClientParameters();
	pl.add("userid", user_id);
	pl.add("diggid", vote_id);
	pl.add("message", message);
	SOAPClient.invoke(sUrl, sMethodName, pl, true, sendMessageCallback);
	document.getElementById("message_panel").innerHTML = "Processing, please wait.";
}

function sendMessageCallback(r){
	document.getElementById("message_panel").innerHTML = "Your message has been sent, thank you!";
	myTimeoutMessage = window.setTimeout("close_panel('message_panel'); close_panel('message_close_panel');", 2000);
}

function voteDown() {
	var url = getQuerystring("zurlz");
	var keyword = getQuerystring("zqz");
	var pageTitle = getQuerystring("ztz");
	var lv = getQuerystring("zlvz");
	var userName = document.getElementById("hiddenUsername").value;

	var sUrl = webServiceUrl + "digg.asmx";
	var sServiceNamespace = "http://hexosearch.com/digg";
	var sMethodName = "voteDown";

	var pl = new SOAPClientParameters();
	pl.add("url", url);
	pl.add("keyword", keyword);
	pl.add("pageTitle", pageTitle);
	pl.add("login", userName);
	pl.add("lv", lv);
	SOAPClient.invoke(sUrl, sMethodName, pl, true, voteDownCallback);
	document.getElementById("external_content").innerHTML = "Processing, please wait.";
	if(document.getElementById("voted") != null){
		document.getElementById("voted").style.display = "none";
	}
	if(document.getElementById("not_voted") != null){
		document.getElementById("not_voted").style.display = "none";
	}
}

function voteDownCallback(r) {
	if (r == "ip exist") {
		document.getElementById("external_content").innerHTML = "You've already voted for this link.";
	}
	else {
		document.getElementById("external_content").innerHTML = "Thank you for your input!";
	}
}


function toSubmit(url, keyword, pageTitle, lv){
	var sUrl = webServiceUrl + "digg.asmx";
	var sServiceNamespace = "http://hexosearch.com/digg";
	var sMethodName = "voteUp";
	var pl = new SOAPClientParameters();
	pl.add("url", url);
	pl.add("keyword", keyword);
	pl.add("pageTitle", pageTitle);
	pl.add("login", "");
	pl.add("lv", lv);
	SOAPClient.invoke(sUrl, sMethodName, pl, true, toSubmitCallback);
}

function toCheck(){
	var url = UrlDecode(getQuerystring("zurlz"));
	var keyword = UrlDecode(getQuerystring("zqz"));
	var pageTitle = UrlDecode(getQuerystring("ztz"));
	var lv = getQuerystring("zlvz");
	
	if(!isFilled(url) || !isFilled(pageTitle)){
		showSubmitError();
	}else if(isFilled(url) && isFilled(pageTitle) && isFilled(keyword) && isFilled(lv)){
		toSubmit(url, keyword, pageTitle, lv);
	}else{
		var sUrl = webServiceUrl + "digg.asmx";
		var sServiceNamespace = "http://hexosearch.com/digg";
		var sMethodName = "hasVotedUp";
		var pl = new SOAPClientParameters();
		pl.add("url", url);
		pl.add("login", "");
		SOAPClient.invoke(sUrl, sMethodName, pl, true, toCheckCallback);
	}
}

function toCheckCallback(r){
	if(r){
		showSubmitFail();
	}else{
		showSubmitInput();
	}
}

function showSubmitError(){
	document.getElementById("submit_title").innerHTML = "Vote failed, HexoSearch button is not embedded correctly.";
	document.getElementById("submit_content_success").style.display = "none";
	document.getElementById("submit_content_fail").style.display = "none";
	document.getElementById("submit_content_input").style.display = "none";
	document.getElementById("submit_content_error").style.display = "block";
}

function showSubmitInput(){
	document.getElementById("submit_title").innerHTML = "Please complete the following information to submit your vote.";
	document.getElementById("submit_content_success").style.display = "none";
	document.getElementById("submit_content_fail").style.display = "none";
	document.getElementById("submit_content_input").style.display = "block";
	document.getElementById("submit_content_error").style.display = "none";
	
	document.getElementById("submit_content_title").style.color = "#067aca"; 
	document.getElementById("submit_content_url").style.color = "#067aca"; 
	document.getElementById("submit_content_keyword").style.color = "#067aca"; 
	document.getElementById("submit_content_type").style.color = "#067aca";
	
	var url = UrlDecode(getQuerystring("zurlz"));
	
	if(url.length > 110){
		url = url.substring(0, 110)+"...";
	}
	document.getElementById("submit_content_title").innerHTML = UrlDecode(getQuerystring("ztz"));
	document.getElementById("submit_content_url").innerHTML  = url;
	
	if(isFilled(UrlDecode(getQuerystring("zqz")))){
		document.getElementById("submit_keyword").style.display = "none";
		document.getElementById("submit_content_keyword").innerHTML = UrlDecode(getQuerystring("zqz"));
	}
	
	if(isFilled(UrlDecode(getQuerystring("zlvz")))){
		document.getElementById("submit_lv").style.display = "none";
		document.getElementById("submit_content_type").innerHTML = getLv(UrlDecode(getQuerystring("zlvz")));
	}
}

function submitInput(){
	if(!isFilled(document.getElementById("submit_content_keyword").innerHTML)){
		document.getElementById("submit_error_keyword").innerHTML = "Please enter keywords";
	}else{
		document.getElementById("submit_error_keyword").innerHTML = "";
	}
	if(!isFilled(document.getElementById("submit_content_type").innerHTML)){
		document.getElementById("submit_error_type").innerHTML = "Please select the category";
	}else{
		document.getElementById("submit_error_type").innerHTML = "";
	}
	if(isFilled(document.getElementById("submit_content_keyword").innerHTML) && isFilled(document.getElementById("submit_content_type").innerHTML)){
		var lv;
		switch(document.getElementById("submit_content_type").innerHTML){
			case "Any":
				lv = "0";
				break;
			case "Actionscript 2":
				lv = "1";
				break;
			case "Actionscript 3":
				lv = "2";
				break;
			case "Flex":
				lv = "3";
				break;
		}
		toSubmit(UrlDecode(getQuerystring("zurlz")), document.getElementById("submit_content_keyword").innerHTML, document.getElementById("submit_content_title").innerHTML, lv);
	}
}

function changeLvPreview(n){
	document.getElementById("submit_content_type").innerHTML = getLv(n);
}

function changeKeywordPreview(){
	document.getElementById("submit_content_keyword").innerHTML = UrlDecode(document.getElementById("keyword").value);
}

function showSubmitFail(){
	document.getElementById("submit_title").innerHTML = "You've already voted for this link.";
	document.getElementById("submit_content_success").style.display = "none";
	document.getElementById("submit_content_fail").style.display = "block";
	document.getElementById("submit_content_input").style.display = "none";
	document.getElementById("submit_content_error").style.display = "none";
}

function toSubmitCallback(r) {
	if (r == "ip exist") {
		showSubmitFail();
	}else {
		document.getElementById("submit_title").innerHTML = "Thank you for your vote!";
		document.getElementById("submit_content_success").style.display = "block";
		document.getElementById("submit_content_fail").style.display = "none";
		document.getElementById("submit_content_input").style.display = "none";
		document.getElementById("submit_content_error").style.display = "none";
	}
}

function toSubmitTest(){
	var url = UrlDecode(getQuerystring("zurlz"));
	var keyword = UrlDecode(getQuerystring("zqz"));
	var pageTitle = UrlDecode(getQuerystring("ztz"));
	var lv = getQuerystring("zlvz");
	
	if(!isFilled(url) || !isFilled(pageTitle)){
		showSubmitTestFail(url, keyword, pageTitle, lv);
	}else{
		showSubmitTestSuccess(url, keyword, pageTitle, lv);
	}
}

function showSubmitTestFail(url, keyword, pageTitle, lv){
	document.getElementById("submit_title").innerHTML = "Test failed!";
	document.getElementById("submit_content_success").style.display = "none";
	document.getElementById("submit_content_fail").style.display = "block";
	var testTitle;
	if(!isFilled(pageTitle)){
		testTitle = "(Page title is empty)";
		document.getElementById("submit_content_testfail_title").style.color = "#ff0000"; 
	}else{
		testTitle = pageTitle;
	}
	var testUrl;
	if(!isFilled(url)){
		testUrl = "(Page url is empty)";
		document.getElementById("submit_content_testfail_url").style.color = "#ff0000"; 
	}else{
		if(url.length > 110){
			url = url.substring(0, 110)+"...";
		}
		testUrl = url;
	}
	var testKeywords;
	if(!isFilled(keyword)){
		testKeywords = "Null (Voters will be asked to input keywords to describe the page)";
	}else{
		testKeywords = keyword;
	}
	var testLv;
	if(!isFilled(lv)){
		testLv = "Null (Voters will be asked to choose page's category)";
	}else{
		testLv = getLv(lv);
	}
	document.getElementById("submit_content_testfail_title").innerHTML = testTitle;
	document.getElementById("submit_content_testfail_url").innerHTML = testUrl;
	document.getElementById("submit_content_testfail_keyword").innerHTML = testKeywords;
	document.getElementById("submit_content_testfail_type").innerHTML = testLv;
}

function showSubmitTestSuccess(url, keyword, pageTitle, lv){
	document.getElementById("submit_title").innerHTML = "Test successful!";
	document.getElementById("submit_content_success").style.display = "block";
	document.getElementById("submit_content_fail").style.display = "none";
	
	document.getElementById("submit_content_test_title").style.color = "#067aca"; 
	document.getElementById("submit_content_test_url").style.color = "#067aca"; 
	document.getElementById("submit_content_test_keyword").style.color = "#067aca"; 
	document.getElementById("submit_content_test_type").style.color = "#067aca"; 
	
	var testKeywords;
	if(!isFilled(keyword)){
		testKeywords = "Null (Voters will be asked to input keywords to describe the page)";
	}else{
		testKeywords = keyword;
	}
	
	var testLv;
	if(!isFilled(lv)){
		testLv = "Null (Voters will be asked to choose page's category)";
	}else{
		testLv = getLv(lv);
	}
	if(url.length > 110){
		url = url.substring(0, 110)+"...";
	}
	document.getElementById("submit_content_test_title").innerHTML = pageTitle;
	document.getElementById("submit_content_test_url").innerHTML = url;
	document.getElementById("submit_content_test_keyword").innerHTML = testKeywords;
	document.getElementById("submit_content_test_type").innerHTML = testLv;
}

function addFeedback() {
	var feedback = document.getElementById("feedback");
	var feedbackEmail = document.getElementById("feedback_email");
	var feedbackTitle = document.getElementById("feedback_title");
	if(!isFilled(feedback.value, "Feedback")){
		feedbackTitle.innerHTML = "FEEDBACK CANNOT BE EMPTY";		 
	}else{

		feedbackTitle.innerHTML = "PROCESSING, PLEASE WAIT";
	
		var sUrl = webServiceUrl + "misc.asmx";
		var sServiceNamespace = "http://hexosearch.com/misc";
		var sMethodName = "addFeedback";
		var pl = new SOAPClientParameters();
		pl.add("feedback", feedback.value);
		pl.add("feedbackEmail", feedbackEmail.value);
		SOAPClient.invoke(sUrl, sMethodName, pl, true, addFeedbackCallback);
	}
}

function addFeedbackCallback(r) {
	var feedback = document.getElementById("feedback");
	var feedbackEmail = document.getElementById("feedback_email");
	var feedbackTitle = document.getElementById("feedback_title");
	if (r.constructor.toString().indexOf("function Error()") != -1) {
		feedbackTitle.innerHTML = "CAN'T CONNECT TO SERVER";
	} else {
		feedback.value = "Feedback";
		feedbackEmail.value = "Email [optional]";
		feedback.style.color = "#067aca";
		feedbackEmail.style.color = "#067aca";
		feedbackTitle.innerHTML = "THANK YOU";
	}
}

function addUrl(url) {
	var sUrl = webServiceUrl + "misc.asmx";
	var sServiceNamespace = "http://hexosearch.com/misc";
	var sMethodName = "addUrl";

	var pl = new SOAPClientParameters();
	pl.add("url", url);
	SOAPClient.invoke(sUrl, sMethodName, pl, true, addUrlCallback);
}

function getLv(lv){
	switch(lv){
		case "0":
			return "Any";
		case "1":
			return "Actionscript 2";
		case "2":
			return "Actionscript 3";
		case "3":
			return "Flex";
	}
	return "Null";
}

function addUrlCallback(r) { }

function googleCheckLangOfCountries() {
	var text = document.getElementById("inputText").value;

	google.language.detect(text, function(result) {
		if (!result.error) {
			var language = 'unknown';
			for (l in google.language.Languages) {
				if (google.language.Languages[l] == result.language) {
					language = l;
					break;
				}
			}
			var container = document.getElementById("detection");
			return container;
			//container.innerHTML = text + " is: <b>" + language + "</b>";
		}
	});
}

function createListItem() {
	// create xml that will create a new list item
	var batch = '<Batch OnError="Continue"><Method ID="1" Cmd="New"><Field Name="ID">New</Field><Field Name="Title">Hello World</Field></Method></Batch>';

	// build parameter object
	var parameters =
    {
    	listName: "My List",
    	updates: batch       // xml created earlier
    }

	// create soap envelope
	var soap = Soap.createEnvelope(
        "UpdateListItems",
        "http://schemas.microsoft.com/sharepoint/soap/",
        parameters);

	// call web service
	new Ajax.Request(
        "http://myserver/mysite/_vti_bin/lists.asmx",
        {
        	method: "post",
        	contentType: "application/soap+xml",
        	postBody: soap,
        	onSuccess: function(transoprt) { alert("Success: " + transport.responseText); },
        	onFailure: function(transport) { alert("Error: " + transport.responseText); }
        });
}