function CH_AjaxRequest( post, reply_to, showLoading ) {
	
	if(showLoading == "bottom") {
		CH_AppendContent_bottom( languageLoading, reply_to );
	}
	else if(showLoading != "no") {
		CH_AppendContent_top( languageLoading, reply_to );
	}
	
	var data = new Array();
	data = post.split("?");
	var url = data[0];
	var postString = data[1];
	
	var oXHR = zXmlHttp.createRequest();
	oXHR.open("post", MainURL+url, true);
	oXHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	oXHR.onreadystatechange = function() {
		if (oXHR.readyState == 4) {
			CH_AjaxReply( oXHR.responseText, reply_to );
		}
	}
	oXHR.send( postString );
	
}

function CH_AjaxFormSubmit( formName, fields, reply_to ) {
	var fieldsArray = new Array();
	fieldsArray = fields.split(",");
	var postString = "";
	for(i=0;i<fieldsArray.length;i++){
		var fieldInfo = new Array();
		var fieldValue = "";
		fieldInfo = fieldsArray[i].split(":");
		switch(fieldInfo[1]) {
			case 'selectMultiple':
				fieldValue = CH_GetSelectMultipleValue( formName, fieldInfo[0] );
				break;
			case 'textfieldSet':
				fieldValue = CH_GetTextfieldSetValue( formName, fieldInfo[0] );
				break;
			case 'radio':
				fieldValue = CH_GetRadioValue(document.forms[formName].elements[fieldInfo[0]]);
				break;
			case 'dropdown':
				fieldValue = CH_GetDropdownValue(document.forms[formName].elements[fieldInfo[0]]);
				break;
			default:
				fieldValue = document.forms[formName].elements[fieldInfo[0]].value;
				break;
		}
		if(fieldInfo[1] != "selectMultiple" && fieldInfo[1] != "textfieldSet")
			postString+= fieldInfo[0]+"="+encodeURIComponent( fieldValue )+"&";
		else
			postString+= fieldValue;
	}
	var post = "ajax.php?"+postString;
	CH_AjaxRequest( post, reply_to );
	return false;
}

function CH_AjaxReply ( content, reply_to ) {
	var js = content.substring( 0, 2 );
	if(js == "js") {
		var jscode = content.substring( 3, 6 );
		switch(jscode){
			case 'CH1':
				CH_DelayedHide( reply_to );
				break;
			case 'CH2':
				var vid_id = content.substring( 7 );
				CH_CreateNewPlaylist( vid_id );
				content = "";
				break;
			case 'CH3':
				CH_SetThanksInfo();
				break;
			case 'CH4':
				CH_SwitchSubscribeButton();
				CH_DelayedHide( reply_to );
				break;
			case 'CH5':
				var push = content.substring( 6 );
				CH_AppendContent_bottom(push,reply_to);
				return false;
				break;
			case 'CH6':
				var push = content.substring( 6 );
				CH_AppendContent_top(push,reply_to);
				return false;
				break;
		}
		var push = content.substring( 6 );
	} else {
		var push = content;
	}
	CH_PushContent( push, reply_to );
}

function CH_AppendContent_bottom( content, handlerID ) {
	var Handler = document.getElementById( handlerID );
	var newcontent = Handler.innerHTML.replace(new RegExp(languageLoading, "gi"), '')+content;
	Handler.innerHTML = newcontent;
	if(Handler.style.display == "" || Handler.style.display == "none"){
		Handler.style.display = "block";
	}
}

function CH_AppendContent_top( content, handlerID ) {
	var Handler = document.getElementById( handlerID );
	var newcontent = content+ Handler.innerHTML.replace(new RegExp(languageLoading, "gi"), '');
	Handler.innerHTML = newcontent;
	if(Handler.style.display == "" || Handler.style.display == "none"){
		Handler.style.display = "block";
	}
}
function CH_HideHandler( handlerID ){
	var Handler = document.getElementById( handlerID );
	Handler.style.display = "none";
}

function CH_DelayedHide( handlerID ) {
	setTimeout( "CH_HideHandler('"+handlerID+"')" , 2000 );
}

function CH_PushContent( content, handlerID ) {
	var Handler = document.getElementById( handlerID );
	Handler.innerHTML = content;
	if(Handler.style.display == "" || Handler.style.display == "none"){
		Handler.style.display = "block";
	}
}

function CH_GetSelectMultipleValue( formName, fieldName ) {
	var fieldHandler = document.forms[formName].elements[fieldName+"[]"];
	var optionsLength = fieldHandler.options.length;
	var postString = "";
	for(var i=0;i<optionsLength;i++){
		if(fieldHandler.options[i].selected == true){
			postString+= fieldName+"[]="+encodeURIComponent( fieldHandler.options[i].value )+"&";
		}
	}
	return postString;
}

function CH_GetTextfieldSetValue( formName, fieldName ) {
	var postString = "";
	for(var i=0; i < document.forms[formName].elements.length; i++){
		if(document.forms[formName].elements[i].name == fieldName+"[]") {
			postString+= fieldName+"[]="+encodeURIComponent( document.forms[formName].elements[i].value ) + "&";
		}
	}
	return postString;
}

function CH_GetRadioValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function CH_GetDropdownValue(dropdownObj) {
	var Ind = dropdownObj.options.selectedIndex;
	return dropdownObj.options[Ind].value;
}
