﻿var _postsPerPage = 10
var currCatStr;
var currThreadStr;
var currCatId;
var currThreadId;
var currPageNumber = 1;
var currThreadPageNumber = 1;
var currTotalPages;
var cacheFn;
var _isEmailInUse = true;
var _isUsernameInUse = true;
function onEnterLogin(e) {
var keynum;
var keychar;
var numcheck;
if(window.event) // IE
  {
  keynum = e.keyCode;
  }
else if(e.which) // Netscape/Firefox/Opera
  {
  keynum = e.which;
  }
if (keynum == 13) {
    login();
}
}

function getLink() {
return;
}


  function deleteThread(id) {
  forum.deleteThread(id,refresh,onError);
  return;
  }
  function pinThread(id,val) {
  forum.pinThread(id,val,refresh,onError);
  return;
  }
  function lockThread(id, val) {
//  alert('lock thread ID: '  + id + ' set: ' + val);
  forum.lockThread(id,val,refresh,onError);
  return;
  }

function reloadNewsBox() {
forum.getForumNewsBox(function(args) {document.getElementById('newsBox').innerHTML = args;},function(args) {document.getElementById('newsBox').innerHTML = args._message;});
}
function showMask() {
	// Add the HTML to the body
	theBody = document.getElementsByTagName('BODY')[0];
	popmask = document.createElement('div');
	popmask.id = 'popupMask';
	
	
	theBody.appendChild(popmask);
	
	
	gPopupMask = document.getElementById("popupMask");
}
function getLoginAndRegisterBox(fn) {
    if (document.getElementById('loginAndRegisterBox').innerHTML == '') {
        forum.getLoginAndRegisterBox(function(args) {document.getElementById('loginAndRegisterBox').innerHTML = args; fn()},onError);
    return false
    } else {
      return true
    }
}
function reloadCmdBar(isLoggedIn) {
    var navBarObj
    if (isLoggedIn) {
    navBarObj = new Array({text:'Logout', funcstr:'logout()'},{text:'Refresh', funcstr:'refresh()'});
    } else {
    navBarObj = new Array({text:'Register', funcstr:'registerNewAccount()'},{text:'Login', funcstr:'openLogin()'},{text:'Refresh', funcstr:'refresh()'});
    }
    if(currPageNumber != 0) {
    navBarObj.push({text:'Back', funcstr:'goBack()'})
    }
    var _ostr = '';
    for (var i = 0; i < navBarObj.length; i++) {
    _ostr += getButtonHtml(navBarObj[i].text,navBarObj[i].funcstr);
    }
    document.getElementById('menuNavBar').innerHTML = _ostr;
}
function getButtonHtml(text,funcStr) {
return '<div style=\"float: right; height: 27px;  padding-right:5px \"><a class=\"CommonImageTextButton\" href=\"javascript:getLink();\" onClick=\"' + funcStr +'\"><span class=\"CommonReplyButton\">' + text + '</span></a></div>'
}
function getPageButtonHtml(text,funcStr,isCurrent) {
return '<div style=\"float: right; height: 27px;  padding-right:1px \"><a class=\"' + ((isCurrent) ? 'CommonTextButtonHighlight' : 'CommonTextButton') + '\" href=\"javascript:getLink();\" onClick=\"' + funcStr +'\"><span class=\"CommonReplyButton\">' + text + '</span></a></div>'
}


function refreshPageLinks() {
if (document.getElementById('pageNavBar')) {
    var str = '';
    if (currPageNumber < currTotalPages) {
        str += getPageButtonHtml('Next >','getPage(' + (currPageNumber+1) + ')',(i==currPageNumber))    
    }
    for (var i = currTotalPages; i >0; i--) {
       str += getPageButtonHtml(i.toString(),'getPage(' + i + ')',(i==currPageNumber))      
    }
    if (currPageNumber > 1) {
        str += getPageButtonHtml('< Previous','getPage(' + (currPageNumber-1) + ')',(i==currPageNumber))    
    }
    str += '<div style=\"float: right; height: 27px; padding-right:1px \">Page:</div>'
    document.getElementById('pageNavBar').innerHTML = str;
      
    }
}
function refreshThreadPageLinks() {
if (document.getElementById('pageNavBar')) {
    var str = '';
    if (currThreadPageNumber < currTotalPages) {
        str += getPageButtonHtml('Next >','getThreadPage(' + (currThreadPageNumber+1) + ')',(i==currThreadPageNumber))    
    }
    for (var i = currTotalPages; i >0; i--) {
       str += getPageButtonHtml(i.toString(),'getThreadPage(' + i + ')',(i==currThreadPageNumber))      
    }
    if (currThreadPageNumber > 1) {
        str += getPageButtonHtml('< Previous','getThreadPage(' + (currThreadPageNumber-1) + ')',(i==currThreadPageNumber))    
    }
    str += '<div style=\"float: right; height: 27px; padding-right:1px \">Page:</div>'
    document.getElementById('pageNavBar').innerHTML = str;
      
    }
}
function getPage(nr) {
currPageNumber = nr;
refresh();
}
function getThreadPage(nr) {
currThreadPageNumber = nr;
refresh();

}
function forumNavigationPath() {
    var linksObj = new Array();
    linksObj.push({text:'Home',url:'Default.aspx'})
    linksObj.push({text:'Support'})
    linksObj.push({url:'javascript:getCategorys();',text:'Forum'})
    if (currCatStr != '' && currCatStr != null)  {
     linksObj.push({url:'javascript:getThreads(' + currCatId +');',text:currCatStr})
     if (currThreadId != '' && currThreadId != null)  {
     linksObj.push({url:'javascript:getPosts(' + currThreadId +');',text:currThreadStr})
     }
     }
    setSitePath(linksObj);
}
     

    function setForumPath(catname,cId,threadname,tId) {
         currCatStr = catname;
     currCatId = cId;
     currThreadStr = threadname;
     currThreadId = tId;
     forumNavigationPath();
     }
    function hideMask() {
	gPopupIsShown = false;
	var theBody = document.getElementsByTagName("BODY")[0];
	theBody.style.overflow = "";
	
	if (gPopupMask == null) {
		return;
	}
	theBody.removeChild(gPopupMask)
	//gPopupMask.style.display = "none";
		
	// display all select boxes
	
}
function goBack() {
 if (currThreadId != null && currThreadId != '') {
        getThreads(currCatId);
        } else if (currCatId != null && currCatId != '') {
        getCategorys();
        
        
    }
}
function refresh(args) {
    if (currThreadId != null && currThreadId != '') {
        getPosts(currThreadId);
        } else if (currCatId != null && currCatId != '') {
        getThreads(currCatId);
        } else {
        getCategorys();
        
    }
}
	function getCategorys() {
		forum.getForumCategoryHtml(OnComplete,onError);
  }

	function getThreads(catId) {
	forum.getForumCategoryThreadHtml(currThreadPageNumber,_postsPerPage,catId,OnComplete,onError);
  }
  	function getPosts(threadId,postId) {
  	//forum.getForumCategoryThreadHtml(pageNr,postsPerPage,threadId,OnComplete,onError);
  	if (postId != null) {
  	forum.getForumThreadPostHtml(currPageNumber,_postsPerPage,threadId,postId,function(args){OnComplete(args);ScrollToElement(document.getElementById("replyBox" + postId))} ,onError);
  	} else {
  	forum.getForumThreadPostHtml(currPageNumber,_postsPerPage,threadId,0,OnComplete,onError);
  	}
	
  }
  
  //forum.isLoggedIn(function(args){if(args == true){
 // }else{openLogin(function(){
  //})}},onError)
  
  function replyToMessage(ThreadId,userName) {
  forum.isLoggedIn(function(args){if(args == true){reloadCmdBar(true);forum.getSinglePostTextRaw(ThreadId,userName,setMessageText,onError)}else{openLogin(function(){forum.getSinglePostTextRaw(ThreadId,userName,setMessageText,onError)})}},onError)
  
  
//    alert('ID:' + document.getElementById("PostText" + ThreadId).innerHTML);
  }

  function checkIfUserExists(val) {
    if (val.length >= 2) {
       forum.isNameInUse(val,function(args){_isUsernameInUse=args; if(args==true){ document.getElementById("userNameInfo").innerHTML=' Username exists!'; setErrorSelection(document.getElementById('txt_username'),true);} else {setErrorSelection(document.getElementById('txt_username'),false);document.getElementById("userNameInfo").innerHTML=''}},onError);
       
      
    }
  }
function checkIfPasswordsAreSame() {
  var _p1 = document.getElementById("txt_password")
  var _p2 = document.getElementById("txt_password2")
    if (_p1.value.length > 0 && _p2.value.length > 0) {
        if (_p1.value != _p2.value) {
        setErrorSelection(_p1,true);
        setErrorSelection(_p2,true);
        _p1.onfocus=function(){this.select();this.onfocus=null;};
        _p2.onfocus=function(){this.select();this.onfocus=null;};
        document.getElementById("passwordInfo").innerHTML='Password dosn\'t match!<br />';
		return false;
        } else {
        document.getElementById("passwordInfo").innerHTML=''
        setErrorSelection(_p1,false);
        setErrorSelection(_p2,false);
        return true;
        }
    }
  }
  function checkIfEmailAreSame(noChk) {
  var _p1 = document.getElementById("txt_email")
  var _p2 = document.getElementById("txt_email2")
  if (!isValidEmail(_p1.value)) {
  setErrorSelection(_p1,true);
  document.getElementById("emailInfo").innerHTML='invalid email address!<br />';
  return false;
 }
    if (_p1.value.length > 0 && _p2.value.length > 0) {
        if (_p1.value != _p2.value) {
        setErrorSelection(_p1,true);
        setErrorSelection(_p2,true);
        _p1.onfocus=function(){this.select();this.onfocus=null;};
        _p2.onfocus=function(){this.select();this.onfocus=null;};
       document.getElementById("emailInfo").innerHTML='Emails dosn\'t match!<br />';
          return false;
        } else {
        document.getElementById("emailInfo").innerHTML=''
        setErrorSelection(_p1,false);
        setErrorSelection(_p2,false);
       
       
        }
    }
	if (noChk != true) {
     forum.isEmailInUse(_p1.value,function(args){_isEmailInUse=args; if(args==true){document.getElementById("emailInfo").innerHTML=' Account with this email allready exists!<br />'; setErrorSelection(_p1,true);setErrorSelection(_p2,true);} else {setErrorSelection(_p1,false);setErrorSelection(_p2,false);document.getElementById("emailInfo").innerHTML=''}},onError);
	 }
	 return true
  }

  function registerFormSend() {
  //Public Function createNewUser(ByVal username As String, ByVal password As String, ByVal fullName As String, ByVal companyName As String, ByVal email As String, ByVal sendEmailAlerts As Integer) As String
  var _userName = document.getElementById('txt_username')
  var _email = document.getElementById('txt_email')
  var _companyName = document.getElementById('txt_companyName')
  var _password = document.getElementById('txt_password')
  var _firstName =document.getElementById('txt_firstname')
  var _lastName = document.getElementById('txt_lastname')
  var _sendEmailAlerts = 0
  var formArr = new Array(_userName,_email,_companyName,_password,_firstName,_lastName)
  var isOk = true;
  for (var i = 0; i < formArr.length; i++) {
  if (formArr[i].value.length < 2) {
    formArr[i].onkeyup = function() {if(this.value.length > 1) { this.onkeyup=null; setErrorSelection(this,false);}};
    setErrorSelection(formArr[i],true);
    isOk = false
    }else{
    setErrorSelection(formArr[i],false);
      }
  }
    if (isOk == true) {
		isOk = checkIfEmailAreSame(true)
	}
	  if (isOk == true) {
		isOk = checkIfPasswordsAreSame();
	}
	if (isOk == true) {
		isOk = !_isEmailInUse
	}
		if (isOk == true) {
		isOk = !_isUsernameInUse
	}

	  if (isOk == true) {
	    forum.createNewUser(_userName.value,_password.value,_firstName.value + ' ' + _lastName.value,_companyName.value,_email.value,_sendEmailAlerts,onRegisterComplete,onRegisterError);
	   document.getElementById("registerForm").style.display = 'none';
	   document.getElementById("registerBox").style.display = 'block';
	   document.getElementById("resultBox").style.display = 'block';
//  resultBox
	  }
  }
  function onRegisterComplete(args) {
         document.getElementById("registerResult").innerHTML = 'Registration complete!<br />You will soon receive an email with an verfication link<br />'
  }
  function onRegisterError(args) {
       document.getElementById("registerResult").innerHTML = args._message
  }
  function isValidEmail(strEmail){
  var validRegExp = new RegExp('\^[_a-zA-Z0-9-]+(\\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$');
  if (strEmail.search(validRegExp) == -1) 
   {
      return false;
    } 
    return true; 
}

  function setErrorSelection(objVal,ToF,colorValue) {
    if (objVal != null) {
        if (ToF == false) {
        objVal.style.borderCollapse = '';
         objVal.style.borderStyle='';
            objVal.style.borderWidth = '';
            objVal.style.borderColor = '';
       } else {
       objVal.style.borderStyle='solid';
            objVal.style.borderCollapse = 'collapse';
            objVal.style.borderWidth = '2px';
            objVal.style.borderColor = (colorValue == null)? '#ff0000' : colorValue
            objVal.select();
            objVal.focus();
       }
    }
  }
  
  function registerNewAccount() {
  if (getLoginAndRegisterBox(registerNewAccount)) {
    showMask();
    document.getElementById("registerForm").style.display = 'block';
    document.getElementById("registerBox").style.display = 'block';
   }
    }
  function hideModal(formName) {
   hideMask();
  document.getElementById(formName).style.display = 'none';
  }
  function openLogin(th) {
  //reloadCmdBar(false);
  if (getLoginAndRegisterBox(function() {openLogin(th);})) {
    cacheFn = th;
     showMask();
   document.getElementById("loginBox").style.display = 'block';
   document.getElementById("txt_usr").focus();
   }
    
  }
  function login() {
 
  forum.loginUser(document.getElementById("txt_usr").value,document.getElementById("txt_pass").value,onLogin,onError)
 }
  function onLogin(args) {
  if (args.SUCCESS == true) {
  if (document.getElementById('menuNavBar')) {
  reloadCmdBar(true);
  }
  hideMask();
  document.getElementById("loginBox").style.display = 'none';
   if (cacheFn != null) {
   cacheFn()
   cacheFn = null
      } else {
     refresh();
     }
   } else {
       document.getElementById("loginMsg").innerHTML = "Invalid username or password.. try again..";
   }
  }
  function setMessageText(args) {
  ScrollToElement(document.getElementById("replyBox"));
  document.getElementById("forumText").value += '[QUOTE BY='+args.userName+']' + args.message + '[/QUOTE]' + '\r';
  }
  function addThread() {
	 forum.isLoggedIn(function(args){if(args == true){forum.addNewThread(document.getElementById("forumText").value, document.getElementById("threadTitle").value,document.getElementById("threadDesc").value,document.getElementById("catId").value,OnNewThread,onError);} else { openLogin(function() {forum.addNewThread(document.getElementById("forumText").value, document.getElementById("threadTitle").value,document.getElementById("threadDesc").value,document.getElementById("catId").value,OnNewThread,onError)})}},onError)
  }
	function sendPost() {
	 forum.isLoggedIn(function(args){if(args == true){reloadCmdBar(true);forum.sendPost(document.getElementById("forumText").value, document.getElementById("threadTitle").value,document.getElementById("threadId").value,document.getElementById("postId").value,OnPost,onError);	document.getElementById("postId").value = "NEW";  }else{openLogin(function(){forum.sendPost(document.getElementById("forumText").value, document.getElementById("threadTitle").value,document.getElementById("threadId").value,document.getElementById("postId").value,OnPost,onError);	document.getElementById("postId").value = "NEW";  })}},onError)
	
  }
  function logout() {
  
  //reloadCmdBar(false);
  forum.logout(function(args){refresh();},onError );
  }
  
  function OnComplete(args) {
    if (args.html) {
    document.getElementById("outputDiv").innerHTML = args.html;
    }     
    if (args.totalPages) {
    currTotalPages = args.totalPages;
    }
    if (currThreadId == null || currThreadId == '') {
        currPageNumber = 1;
        currThreadPageNumber = args.currentPage;
        refreshThreadPageLinks();
    } else if (currCatId == null || currCatId == '') {
        currPageNumber = args.currentPage;
        refreshPageLinks();
    }

    setForumPath(args.categoryName,args.categoryId,args.threadName,args.threadId);
    if (document.getElementById('menuNavBar').innerHTML == '') {
        forum.isLoggedIn(function(args){reloadCmdBar(args);},onError);
    }else {
        //alert('|' + document.getElementById('menuNavBar').innerHTML + '|');
    }
 }
function OnNewThread(args) {

  getThreads(document.getElementById("catId").value)
}
function OnPost(args) {
  getPosts(document.getElementById("threadId").value,args)
  
}
function setEditText(args) {
  ScrollToElement(document.getElementById("replyBox"));
  document.getElementById("forumText").value = args.message
  document.getElementById("threadTitle").value = args.postTitle
  document.getElementById("postId").value = args.ID
  
  }
function editPost(ID) {
 forum.getSinglePostTextRaw(ID, null,setEditText,onError);
}
function deletePost(ID) {
forum.deletePost(ID,function() {getPosts(document.getElementById("threadId").value)},onError)
}
function ScrollToElement(theElement){

  var selectedPosX = 0;
  var selectedPosY = 0;
              
  while(theElement != null){
    selectedPosX += theElement.offsetLeft;
    selectedPosY += theElement.offsetTop;
    theElement = theElement.offsetParent;
  }
                        		      
 window.scrollTo(selectedPosX,selectedPosY);

}


//	 function OnComplete(args) {

//    document.getElementById("outputDiv").innerHTML = args.html;
//     currPageNumber = args.currentPage;
//    currTotalPages = args.totalPages;

//     refreshPageLinks();
//  setForumPath(args.categoryName,args.categoryId,args.threadName,args.threadId);
//	  if (document.getElementById('menuNavBar').innerHTML == '') {
//	  forum.isLoggedIn(function(args){reloadCmdBar(args);},onError);
//	  }else {
//	  //alert('|' + document.getElementById('menuNavBar').innerHTML + '|');
//	  }
//  }
function randomString() {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var returnStr = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		returnStr += chars.substring(rnum,rnum+1);
	}
	return returnStr
}

  function displayUser(userId) {
  //alert(userId);
  alert('function not yet implemented');
  }
function onError(args) {
//alert('error!')
var str;
if (typeof args == "object") {


for (s in args) {
str = str + '\n\r' + s + ' = ' + args[s]
};
document.getElementById("outputDiv").innerHTML = 'Error ' + args._statusCode + '<br />' + args._message + '<br />' + args._stackTrace.replace(' vid ',' <br /> vid ');
} else {
document.getElementById("outputDiv").innerHTML = 'Error ' + args
}
  
//document.getElementById("outputDiv").innerHTML = 'An Error has occured. Please try again.' 
}

isIncLoaded = true;
