/***
* ajax object
* @version 1.0 build 100
* @package ajax
* @copyright (C) 2006 by RDG - All rights reserved!
**/

/**
* Global Variables
**/

var http_request = false;
var _ms_XMLHttpRequest_ActiveX="";
var http_request_handler=null;
var savedprogress=false;
var messagedisplayed=false;
var ajaxresult=null;

var ajax={

	/**
	* @function:
	* makeRequest(String URL, String handler variable,String submit type);
	*
	* @description:
	* Creates XMLHTTP Instance and submits AJAX request
	*
	* @returns
	* Nothing
	**/

	makeRequest:function(url,handler) {

		var type="GET";

		if(ajax.makeRequest.arguments[2]) type=ajax.makeRequest.arguments[2];

		http_request = false;


		if (window.XMLHttpRequest) { 

			http_request = new XMLHttpRequest();
	
			if (http_request.overrideMimeType) {
	
				http_request.overrideMimeType('text/xml');

			}

		} else if (window.ActiveXObject) { 

			var versions = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];

			for (var i = 0; i < versions.length ; i++) {
				try {

					http_request = new ActiveXObject(versions[i]);

					if (http_request) {
						_ms_XMLHttpRequest_ActiveX = versions[i];
						break;
					}
				}
				catch (objException) {} ;
			}
		}

		if (!http_request) {
			alert("Giving up :( Cannot create an XMLHTTP instance");
			return false;
		}

		
		http_request_handler=handler;
		http_request.onreadystatechange = ajax.resultHandlers;
		http_request.open(type, url, true);
		http_request.send(null);
		
	},
	resultHandlers:function() {

		var handler=http_request_handler;

		if (http_request.readyState == 4) {

			if (http_request.status == 200) {

				switch(handler){
						
			/* omni */
				case "omni_selectmod": omni_admin.finish_selectMod(http_request.responseXML); break;
				case "omni_selectnav": omni_admin.finish_selectNav(http_request.responseXML); break;
				case "omni_selectsubnav": omni_admin.finish_selectSubNav(http_request.responseXML); break;
				case "omni_reranknav": omni_admin.finish_rerankNav(http_request.responseXML); break;
				case "omni_selectomni": omni_admin.finish_selectOmni(http_request.responseXML); break;
				case "omni_updateomni": omni_admin.finish_updateOmni(http_request.responseXML); break;
			/* classifieds */
				case "clas_delete_image":
					classifieds.finishDeleteImage(); break;
				case "clas_adjust_selects":
					if(http_request.responseXML){				
						classifieds.finishAdjustSelects(http_request.responseXML);
					}
					break; 
				case "clas_fetch_data":
					if(http_request.responseXML){				
						classifieds.finishFetchData(http_request.responseXML);
					}
					break; 
				case "clas_update_cat":
					classifieds.finishUpdateCat();
					break; 
				case "clas_update_user":
					classifieds.finishUpdateUser();
					break;
				case "clas_update_item":
					classifieds.finishUpdateItem();
					break;
				case "clas_add_cat":
					classifieds.finishNewCat();
					break;
				case "clas_delete":
					classifieds.finishDeleteClas();
					break;

		/* streaming */
				case "rankmedia_finish":
					streaming.finishAJAX(http_request.responseXML); 
					break;
		
			   case "content_edit_search":
				   contents.finishContentEditSearch(http_request);
					break;

			   case "media_edit_search":
				   media.finishMediaEditSearch(http_request);
					break;

				case "content_search":
				   contents.finishContentSearch(http_request);
				   break;

			   case "Find_Search":
				   contents.finishListSearch(http_request);				 
					break;			

				case "duplicate_module":

					if(util.trim(http_request.responseText)!=""){

						var data=util.trim(http_request.responseText);

						var parts=data.split(/:/);
					
						cms.getUrl("/content/admin/modules/?action=mod_pref&mid="+parts[1]+"&mod="+parts[0]);

					}else{

						window.opener.cms.getUrl(window.opener.document.location);

                  setTimeout("self.close();",0);

					}

					break;

			   case "load_subcats":
               contents.finishSubcatResponse(http_request);
               break;

			   case "save_publication":
               contents.finishPublicationResponse(http_request);
               break;

				case "save_expiration":
               contents.finishExpirationResponse(http_request);
               break;


			case "drop_streaming_preroll":

				if(http_request.responseText!=""){


					var sel_content=document.getElementById('selected_content');
					sel_content.getElementsByTagName("TBODY")[0].removeChild(selActive);
					selActive=null;


				}
				break;


			case "drop_streaming_content":

				if(http_request.responseText!=""){


					var sel_content=document.getElementById('selected_content');
					sel_content.getElementsByTagName("TBODY")[0].removeChild(selActive);
					selActive=null;


				}
				break;

			   case "streaming_content":

					if(http_request.responseText!=""){

						var xmlDom=http_request.responseXML;

						var root=xmlDom.documentElement;

						if(root.firstChild && root.firstChild.nodeValue!=""){

							util.setMessage(root.firstChild.nodeValue);
							util.scrollMessage();

							selItem.getElementsByTagName("input")[0].checked=false;

						}else{

							var p=selItem.parentNode;
							p.removeChild(selItem);

							var newtr=document.createElement("TR");


							var href="/content/admin/modules/?action=mod_contentedit&amp;mod=simple_video&amp;cid="+root.getAttribute("id");

							var td=document.createElement("TD");

							td.style.textAlign="center";

								var atag=document.createElement("A");
								atag.setAttribute("href",href);
								atag.onclick=function(){util.popupWin(this.href,550,720,'editWin');return false};

								var im=document.createElement("IMG");
								im.setAttribute("src","/admin/images/icons/16x16/plain/document_edit.png");
								im.style.border="0px";

								atag.appendChild(im);

							td.appendChild(atag);

							newtr.appendChild(td);

							var td=document.createElement("TD");

								var atag=document.createElement("A");
								atag.setAttribute("href",href);
								atag.style.color="#000";
								atag.style.display="block";
								atag.setAttribute("href",href);
								atag.onclick=function(){util.popupWin(this.href,550,720,'editWin');return false};

								var txt=document.createTextNode(root.getAttribute("title"));
								atag.appendChild(txt);

								td.appendChild(atag);

								newtr.appendChild(td);

							var td=document.createElement("TD");

								var txt=document.createTextNode(root.getAttribute("category"));

								td.appendChild(txt);

							newtr.appendChild(td);

							var td=document.createElement("TD");
							td.style.textAlign="center";

							var href="/media_player.php?media_id="+root.getAttribute("media");

								var atag=document.createElement("A");
								atag.setAttribute("href",href);
								atag.onclick=function(){util.popupWin(this.href,500,685,'playWin');return false};

								var im=document.createElement("IMG");
								im.setAttribute("src","/admin/images/icons/16x16/plain/mediafile.gif");
								im.style.border="0px";

								atag.appendChild(im);

								td.appendChild(atag);

							newtr.appendChild(td);

							var td=document.createElement("TD");
							td.style.textAlign="center";

								var atag=document.createElement("A");
								atag.setAttribute("href","javascript:void(0)");
								atag.onclick=function(){confirmDrop(this.id.replace('drop_',''),this)}
								atag.id="drop_"+root.getAttribute("id");

								var im=document.createElement("IMG");
								im.setAttribute("src","/admin/images/icons/16x16/plain/delete.gif");
								im.style.border="0px";

								atag.appendChild(im);

								td.appendChild(atag);

							newtr.appendChild(td);


							var sel_content=document.getElementById('selected_content');

							sel_content.getElementsByTagName("TBODY")[0].appendChild(newtr);


						}



					}


				   break;


					case "friendlynames":

						if(http_request.responseText!=""){

							var result=http_request.responseText;

						}

						break;

					case "moduleswap":

						if(http_request.responseXML){
						
							var xmlDom=http_request.responseXML;

							var root=xmlDom.documentElement;

							var mid=root.getAttribute("ref");

							var new_position=root.getAttribute("position");

							var old_position=root.getAttribute("old_position");

							var sel_newposition=document.forms[new_position].modules;									

							var sel_oldposition=document.forms[old_position].modules;									

							var text = '';


							for (i=0;i<sel_oldposition.length;i++ ){
							
								if(sel_oldposition.options[i].value == mid) {

									text = sel_oldposition.options[i].text;

									sel_newposition.options[sel_newposition.length] = new Option(text,mid);

									sel_oldposition.options[i] = null;
								}
							}


							sel_newposition.selectedIndex=sel_newposition.length-1;
						}

						break;




					case "moduledelete":


						if( (http_request.responseXML) && (http_request.responseText != '')){
						
							var xmlDom=http_request.responseXML;

							var root=xmlDom.documentElement;

							var mid=root.getAttribute("ref");

							var new_position=root.getAttribute("position");

							var sel_newposition=document.forms[new_position].modules;									

							var text = '';


							for (i=0;i<sel_newposition.length;i++ ){
							
								if(sel_newposition.options[i].value == mid) {

									sel_newposition.options[i].style.color="#CCCCCC";

								}
								
							}

							document.forms[new_position].modules.selectedIndex=-1;

						} else {

							util.setMessage("Other modules rely on the settings of this module.  If you remove this module, ther other modules will no longer reference this one for settings.  Do you want to remove this module? <button type=\"button\" style=\"background-color:#FFFFEB;border:1px solid #CCC;\"><img src=\"/admin/images/icons/16x16/plain/check.gif\" style=\"vertical-align:middle\" /> Ok</button> <button type=\"button\" style=\"background-color:#FFFFEB;border:1px solid #CCC;\"><img src=\"/admin/images/icons/16x16/plain/delete.gif\" onclick=\"util.hideMessage()\" style=\"vertical-align:middle\" /> Cancel</button>");
							util.scrollMessage();

						}

						break;




					case "modulemovement":

						/**
						* Re-arranges modules in pages
						*/

						if(http_request.responseXML){
						
							var xmlDom=http_request.responseXML;

							var root=xmlDom.documentElement;

							var box=root.getAttribute("ref");

							var ops=root.getElementsByTagName("module");

							var sel=document.forms[box].modules;									

							sel.length=0;

							/**
							* Re-write option lists
							**/

							for(i=0;i<ops.length;i++){

								if(ops[i].getAttribute("selected")=="yes"){

									selindex=i;

								}

								sel.options[i]=new Option(ops[i].getAttribute("title"),ops[i].getAttribute("id"));

								if(ops[i].getAttribute("published")==0){

									sel.options[i].style.color="#C0C0C0";

								}

							}

							sel.selectedIndex=selindex;

						}

						break;

					case "revisionmatch":					

						ajaxresult=true;

						if(http_request.responseText=="false"){

							ajaxresult=false;

							util.setMessage("The revision does not match. Another user has updated the page you are working on.  You must write down your changes and <a href=\"javascript:window.reload()\">reload</a> the page. ");
							util.scrollMessage();

							
						}else{
							
							cms.forms.submitForm('page_editor_form');

						}


						break;

				}

			} else {

				alert("There was a problem with the request.");
	
			}
		}
	}
}