
//asyncronious get from url
function myAjaxGet(url,callbackFunc,custom_id){
  	if (document.getElementById) {
    	var http = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
  	}
	if(http){
      	http.onreadystatechange = function() {
            if(http.readyState == 4 /* complete */) {
            	var s=false;
                if (http.status == 200 || http.status == 304) {
                        s = http.responseText;
                }else{
                        // error occured
                        s=false;
                }
                callbackFunc(custom_id,s);
            }
      	}
      	http.open("GET", url, true/*async*/);
      	//http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
      	http.send(null);
      	return true;
    }else{
  		return false;
  	}

}


//asyncronious post to url
function myAjaxPost(url,callbackFunc,custom_id,postData){
  	if (document.getElementById) {
    	var http = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
  	}
	if(http){
      	http.onreadystatechange = function() {
            if(http.readyState == 4 /* complete */) {
            	var s=false;
                if (http.status == 200 || http.status == 304) {
                        s = http.responseText;
                }else{
                        // error occured
                        s=false;
                }
                callbackFunc(custom_id,s);
            }
      	}
      	http.open("POST", url, true/*async*/);
      	http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
      	http.send(postData);
      	return true;
    }else{
  		return false;
  	}

}

function myAjaxPostForm(url,callbackFunc,custom_id,fobj){
	var postData=getFormValues(fobj);
//	alert(postData);
	myAjaxPost(url,callbackFunc,custom_id,postData);

}


// prepare post data string from hash array
function myAxajGetPostData(formArray){
	var str = "";
	for(var i in formArray){
		str +=  (str?"&":'') + i + "=" + encodeURIComponent(formArray[i]);
	}
	return str;
}

/* Collect all fields into URL-encoded string key=value&key2=value2... */
function getFormValues(fobj){
var str = "";
	for(var i = 0;i < fobj.elements.length;i++) {
		switch(fobj.elements[i].type){
			case "text":
			case "textarea":
			case "password":
				if (!fobj.elements[i].disabled) 
					str += fobj.elements[i].name + "=" + encodeURIComponent(fobj.elements[i].value) + "&";
			break;
			case "hidden":
			//hidden cannot be disabled
				str += fobj.elements[i].name + "=" + encodeURIComponent(fobj.elements[i].value) + "&";
			break;
			case "checkbox":
				if(fobj.elements[i].checked && !fobj.elements[i].disabled) 
					str += fobj.elements[i].name + "=" + encodeURIComponent(fobj.elements[i].value) + "&";
			break;
			case "select-one":
				if (!fobj.elements[i].disabled){ 
					str += fobj.elements[i].name + "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
				}
			case "radio":
				if (fobj.elements[i].checked && !fobj.elements[i].disabled){ 
					str += fobj.elements[i].name + "=" + encodeURIComponent(fobj.elements[i].value) + "&";
				}
			break;
			case "select-multiple":
				if (!fobj.elements[i].disabled){
					for (var j = 0; j < fobj.elements[i].length; j++){
						optElem = fobj.elements[i].options[j];
						if (optElem.selected == true){
							str += fobj.elements[i].name + "" + "=" + optElem.value + "&";
						}
					}
				}
			break;
		}
	}
	//Strip final &amp;
	str = str.substr(0,(str.length - 1));
	return str;
}




function myAjaxLoadHtml(obj,url){
	myAjaxGet(url,
		function(obj,resultstr){
		    obj.innerHTML=resultstr;
			//alert(resultstr);
			//alert(obj.id);
		},
		obj)	
}



// my functions to get/set form control's values
function getCtrlValue(name){
  var oo=document.getElementsByName(name);
  var o1;
  if(oo && oo.length) o1=oo.item(0);
  else return;

  if(o1.tagName=='INPUT')
  {
    if(o1.type=='radio') {
	  for(i=0;i<oo.length;i++) 
	    if(oo.item(i).checked) return oo.item(i).value
	  return '';		
	}
    else if(o1.type=='checkbox') {
      if(o1.checked) return o1.value;
      else	  return '';
	  return '';		
	}
	else return o1.value;
  }
  else if(o1.tagName=='SELECT')
  { if(o1.selectedIndex<0) return;
  	var opt=o1.options[o1.selectedIndex];
	return opt.value;//?opt.value:opt.text;
  }
  else if(o1.tagName=='TEXTAREA')
  { return o1.value
  }
}


function setCtrlValue(name,val)
{
//  alert("set "+name+" to "+val);
  var oo=document.getElementsByName(name);
  var o1,i;
  if(oo && oo.length) o1=oo.item(0);
  else return;
  if(o1.tagName=='INPUT')
  { 
    if(o1.type=='radio') {
	  for(i=0;i<oo.length;i++) 
	    if(oo.item(i).value==val) {oo.item(i).checked=true;return;}
	  return '';		
	}
    else if(o1.type=='checkbox') {
      if(val) o1.checked=true
      else	  o1.checked=false;
	  return '';		
	}
	else o1.value=val;

  }
  else if(o1.tagName=='SELECT')
  {
    for(i=0;i<o1.options.length;i++)
    { //var vv; vv=o1.options(i).value ? o1.options(i).value : o1.options(i).text;
      var vv; vv= o1.options[i].value;
	  if(vv==val) {o1.selectedIndex=i;return;}
	}
	o1.selectedIndex=0;
  }
  else o1.value=val;
}

function el(id){
    var obj;
    obj=document.getElementById(id);
    if(obj) return obj;
    obj=document.getElementsByName(id);
    if(obj) return obj[0];
//	return document.getElementById(id)
}


// ------------------------- Custom functions ------------------------


//Comments
var myCommentsChangedFlag=false;
// show comments block 
function myCommentsShow(qry){
        // if called with query then it is called from inside popup
        if(qry){
        	myCommentsChangedFlag=true;
        }
		
		$.getJSON("index.php?"+qry, {action:"comments_show_block"}, function(data){
			var obj=document.getElementById('Comments');;
		    obj.innerHTML=data.html;
		    eval(data.script);
		    obj.className='show';
		});


}


function commentsBlockSave(f,uid){
	if(!uid){
		alert('Only registered user can leave a comment!');
		return;		
	}
	
	if(f.title.value==''){
		alert('Please type your comment in the text area below!');
		return;		
	}
	

	myCommentsChangedFlag=true;
	myAjaxPostForm('/index.php',commentsBlockSaveCallback,null,f);
}

function commentsBlockSaveCallback(custom_id, s){
	//document.getElementById('comments_review').className='show';document.getElementById('comments_add').className='hide'
	//alert('Saved:'+s);
	if(s=='err_code'){alert('Code Number Error');return;}
	if(s!=(s*1)){alert('error: '+s);return;}
	var comment_id=s;
	//refresh comments block
	//myCommentsShow();
	document.getElementById('comments_review').className='show';
	document.getElementById('comments_add').className='hide';
	myAjaxLoadHtml(document.getElementById('comments_review'), 'index.php?action=comments_show_response&comment_id='+comment_id);
//	alert(comment_id);
}

function myCommentsClose(){
    if(myCommentsChangedFlag){
    	//new comments left. need to reload main page
    	document.location.href=document.location.href;
    }else{
    	// just close
		document.getElementById('Comments').className='hide';
	    myCommentsChangedFlag=false;
	}
}


// --------------------- Page template functions ----------------
	function checkComForm(com)	{
		if (com.name.value=="") {
			alert("Input your name please!");
			com.name.focus();
			return false;
		}
		if (com.comment.value=="") {
			alert("Input your comment please!");
			com.name.focus();
			return false;
		}
		if (com.code.value!="[var.d.all]") {
			alert("Input code number please!");
			com.code.focus();
			return false;
		}
		form.submit();
 	  	
 	}

//  ---- Register ----
    var myRegCompletedFlag=false;

	function checkSignup(f) {

	   	if(f.u_username_new.value == "") {
	   	      alert("Please Enter Login Name to Create an Account");
	   	      f.u_username_new.focus();
	   	      return false;	   	
	   	}
	   	if(f.u_email_new.value == "" || !validEmail(f.u_email_new.value)) {
	   	      alert("Please Enter Valid Email Address to Create an Account");
	   	      f.u_email_new.focus();
	   	      return false;	   	
	   	}
	   	if(f.u_pass_new.value=='') {
	   	      alert("Please Enter Password to Create an Account");
	   	      f.u_pass_new.focus();
	   	      return false;
	   	} 
	   	if(f.u_pass_new.value!=f.u_pass2_new.value) {
	   			alert("Password Mismatch");
	   			f.u_pass2_new.focus();
	   			return false;
	   	}
	   	if(f.firstname.value=='') {
	   	      alert("Please Enter First Name");
	   	      f.firstname.focus();
	   	      return false;
	   	} 

	   	if(f.lastname.value=='') {
	   	      alert("Please Enter Last Name");
	   	      f.lastname.focus();
	   	      return false;
	   	} 
//	   	if(f.organization_name.value=='') {
//	   	      alert("Please Enter Name of Organization");
//	   	      f.organization_name.focus();
//	   	      return false;
//	   	} 
	   	if(f.firstname.value=='') {
	   	      alert("Please First Name");
	   	      f.firstname.focus();
	   	      return false;
	   	} 
//	   	if(f.position_title.value=='') {
//	   	      alert("Please Enter Position/Title");
//	   	      f.position_title.focus();
//	   	      return false;
//	   	} 
//	   	if(f.department.value=='') {
//	   	      alert("Please Enter Department");
//	   	      f.department.focus();
//	   	      return false;
//	   	} 
//	   	if(f.address1.value=='') {
//	   	      alert("Please Enter Address 1");
//	   	      f.address1.focus();
//	   	      return false;
//	   	} 
//	   	if(f.address1.value=='') {
//	   	      alert("Please Enter Address 1");
//	   	      f.address1.focus();
//	   	      return false;
//	   	} 
//	   	if(f.address2.value=='') {
//	   	      alert("Please Enter Address 2");
//	   	      f.address2.focus();
//	   	      return false;
//	   	} 
	   	if(f.city.value=='') {
	   	      alert("Please Enter City");
	   	      f.city.focus();
	   	      return false;
	   	} 
	   	if(f.newstate.selectedIndex==0) {
	   	      alert("Please Select State");
	   	      f.newstate.focus();
	   	      return false;
	   	} 
	   	if(f.zip.value=='') {
	   	      alert("Please Enter Zip Code");
	   	      f.zip.focus();
	   	      return false;
	   	} 

	   	if(!f.cb_agree.checked) {
	   	      alert("Please Agree with a Terms and Conditions");
	   	      f.cb_agree.focus();
	   	      return false;
	   	} 

		
	   //f.submit();
		//myAjaxPost('/index.php?action=login_recover',passwordRecoveryCallback,0,str);
		myAjaxPostForm('/index.php',signupCallback,0,f);

	}

	function signupCallback(custom_id, str){
	    switch(str){
	    	case 'ok': 
	    		//alert('Okeeeey');
				document.getElementById('reg_form').className='hide';
				document.getElementById('reg_thanks').className='show'
				myRegCompletedFlag=true;
	    		break;

	    	case 'duplicated':
	    		alert('Erorr: Username is duplicated');
		    	break;

	    	default:
		    	alert(str);
		}


	}


	function regFormClose(){
	    if(myRegCompletedFlag){
	    	window.parent.document.location.href=window.parent.document.location.href;
			return false;
	    }else{
			return window.parent.hs.close()
	    }
	    
	}





	function checkLogin(f) {
	
	   if(f.u_username.value != "") {
	   	if(!(f.u_username.value)) {
	   	      alert("Please Enter Login Name to Login to Your Account");
	   	      f.u_username.focus();
	   	      return false;	   	
	   	}
	   	if(f.u_pass.value=='') {
	   	      alert("Please Enter Password to Login to Your Account");
	   	      f.u_pass.focus();
	   	      return false;
	   	}
	   }
	
		f.submit();
	   return true;
	}

	function passwordHelpClick(){
		document.getElementById('divRecoverSave').className='show';
		document.getElementById('divRecoverRoll').className='hide';
		document.getElementById('login').className='hide';
		document.getElementById('pass_help').className='show';
	}

    function passwordRecoverySubmit(f){
	   	if(!(f.username.value)) {
	   	      alert("Please Enter Login Name to recover your password");
	   	      f.email.focus();
	   	      return false;	   	
	   	}

		var str='username='+f.username.value;
		myAjaxPost('/index.php?action=login_recover',passwordRecoveryCallback,0,str);
		document.getElementById('divRecoverSave').className='hide';
		document.getElementById('divRecoverRoll').className='show';
	}

	function passwordRecoveryCallback(i, str){
		document.getElementById('thanks_text').innerHTML=str;//New password was sent to you...		
		document.getElementById('pass_help').className='hide';
		document.getElementById('thanks').className='show';	
	}


// --------------------- Form events ------------------------------------
function myFormEditClick(finst_id, num){
	var o;
	document.getElementById('form'+finst_id+'_open'+num).value='1';// mark item as opened
	o=document.getElementById('form'+finst_id+'_line'+num); if(o) o.className='hide';
	document.getElementById('form'+finst_id+'_edit'+num).className='show';
}

function myFormSaveClick(fobj, num, rec_id){
	$(fobj).append($("<input type='hidden' name='scrolltop' value='"+document.documentElement.scrollTop+"'>"));
	fobj.submit();
}

function myFormWysiwygSaveClick(fobj){
	$(fobj).append($("<input type='hidden' name='scrolltop' value='"+document.documentElement.scrollTop+"'>"));
	fobj.submit();
}


function myScrollTop(scrolltop){
	var docElement=(document.compatMode=='CSS1Compat')? document.documentElement: document.body
 	docElement.scrollTop=scrolltop;
};

function selClear(sel)
{
  var cnt=sel.options.length;
  if(cnt)
  for(i=cnt-1;i>=0;i--) sel.options[i]=null;
}

// --------------- login click
function myLoginClick(){
	document.getElementById('login').className='show';document.getElementById('signup').className='hide';document.getElementById('pass_help').className='hide';document.getElementById('thanks').className='hide'
}
