
var Connector = function(){
	this.ConnectType = "MySql"; // "File", "Xml"
	this.ConnectFile = "connect/connect.php";
	this.Class = "connect";
	this.Include = "class.connect.php";
	this.Funktion = "";
	this.CallbackObj = "";
	this.CallbackElement = "";
	this.CallbackFunction = "";

	this.SqlType = "";
	this.SqlField = "*";
}

Connector.prototype.createXHR = function(){
	if (typeof XMLHttpRequest != "undefined") {
		return new XMLHttpRequest();
	}
	else
	if (window.ActiveXObject){
		var aVersions =[ "MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0"];
		for (var i = 0; i < aVersions.length; i++){
			try { 
				var oXHR = new ActiveXObject(aVersions[i]);
				return oXHR;
			}
			catch (e){}
		}
	}
	throw new Error("EMLHttp object could not becreated.")
}

Connector.prototype.Connect_Type = function(Val){
  if (Val == "MySql" || Val == "File" || Val == "Xml") this.ConnectType = Val;
  else alert("Wrong Connect Type!");
}

Connector.prototype.Connect_File = function(Val){
  this.ConnectFile = Val;
}

Connector.prototype.SetClass = function(Val){
  this.Class = Val;
}

Connector.prototype.SetInclude = function(Val){
  this.Include = Val;
}

Connector.prototype.SetFunktion = function(){
	this.Funktion = Val;
}

Connector.prototype.Callback_Obj = function(Val){
  this.CallbackObj = Val;
}

Connector.prototype.Callback_Element = function(Val){
  this.CallbackElement = Val;
}

Connector.prototype.Callback_Function = function(Val){
  this.CallbackFunction = Val;
}

Connector.prototype.Sql_Type = function(Val){
  Val = Val.toUpperCase();
  if (Val == "SELECT" || Val == "UPDATE" || Val == "REPLACE" || Val == "DELETE") this.SqlType = Val;
  else alert(Val + " is a wrong Sql request!");
}

Connector.prototype.Sql_Field = function(Val){
  this.SqlField = Val;
}

Connector.prototype.Split_File = function(Val){

}

Connector.prototype.Server_Connector = function(connector,include,Class,funktion,CallBackObj,CallBackFunction,variabler)
{

 connectString = connector+"?Include="+include+"&Class="+Class+"&ConnectFunction="+funktion+"&CallbackObj=" + CallBackObj +"&CallBackFunction="+CallBackFunction;
 	if (variabler) connectString += variabler;

	if(connectString.length<=2048)
	{ 
		this.Connect_Script(connectString);
	}
	else
	{
	  alert("Too long file, error code #0001")
	}
}


Connector.prototype.Post_Script = function(ScriptFilename){
	var sParams = "";
	sParams = addPostParam(sParams, "name", "Nicholas");
	sParams = addPostParam(sParams, "book", "Professional JavaScript");
	oRequest.open("post","page.php", false);
	oRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	oRequest.send( sParams);
}

// skal laves så den automatisk deler filen op og sender ad flere gange! hvis ScriptFilename er for stor
Connector.prototype.Connect_Script = function(ScriptFilename){
	this.HtmlDoc = document.getElementsByTagName('head').item(0);
	if (this.JsFile) this.HtmlDoc.removeChild(this.JsFile);
  this.JsFile = document.createElement('script');
  this.JsFile.setAttribute('language', 'javascript');
  this.JsFile.setAttribute('type', 'text/javascript');
  this.JsFile.setAttribute('src', ScriptFilename);
  if (this.HtmlDoc.appendChild(this.JsFile)) return this.JsFile;
  return false;
}

Connector.prototype.Sql_Connect = function(Obj,Sql,Funktion,CallBackObj,CallBackFunction){
  var Value = new Array();
  Sql = Sql.replace(/\+/,"%2b");
//  Sql = escape(Sql);
	for (var n=5; n<arguments.length; n++) Value.push(escape(arguments[n]));
	this.Server_Connector(SERVER_ADDR + "/ADMIN/connect/connect.php","class.sql_connect.php","sql_connect",Funktion,CallBackObj,CallBackFunction,"&Sql="+Sql+"&Sql_Target_Value="+Value.join(",,"));
}

Connector.prototype.Sql_Logon = function(Obj,Sql,Funktion,CallBackObj,CallBackFunction,Username,PassWord,CHECKED){
  var Value = new Array();
	this.Server_Connector(SERVER_ADDR + "/ADMIN/connect/logon.php","class.sql_connect.php","sql_connect",Funktion,CallBackObj,CallBackFunction,"&Sql="+Sql +"&Username=" + Username + "&PassWord=" + PassWord +"&CHECKED=" + CHECKED);
}

Connector.prototype.Create_UPDATE = function(Table,Field,where,orderby,limit){
  var sql =  UPDATE + " " + Table + " SET " + Field;
  if (where) sql+= " " + WHERE + " " + where;
  if (orderby) sql+= " " + ORDER_BY + " " + orderby;
  if (limit) sql+= " " + LIMIT + " " + limit;
  return  sql;
}

Connector.prototype.Create_DELETE = function(table_name,where_condition,limit){
  var sql =  DELETE + " " + FROM + " " + table_name + " " + WHERE + " " + where_condition;
  if (limit) sql+= " " + LIMIT + " " + limit;
  return  sql;
}

Connector.prototype.Create_INSERT = function(Table,Field,Values){
  var sql =  INSERT + " " + INTO + " "+ Table + " (" + Field +") " + VALUES + " (" + Values + ")";
  return  sql;
}

Connector.prototype.Create_SELECT = function(from, Select, where, orderby,limit,asc, desc){
  var sql = SELECT + " " + Select + " " + FROM  + " " + from;
  if (where) sql+= " " + WHERE + " " + where;
  if (orderby) sql+= " " + ORDER_BY + " " + orderby;
  if (limit) sql+= " " + LIMIT + " " + limit;
  if (asc) sql+= " " + ASC;
  if (desc) sql+= " " + DESC;
  return  sql;
}

Connector.prototype.Ajax_Post = function(Url,Target){
	xmlhttp.open('POST', Url, true);
	xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
        alert("gemt i Ajax");
    }
  	Target.submit();
  	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  	xmlhttp.send('rating=' + target.elements['rating'].value);
//  xmlhttp.send(null);
	}
}
Connector.prototype.Save2 = function(Url,oForm,CallBack){

	var oXHR =  this.createXHR();
	oXHR.open('post', oForm.action, true);
	oXHR.onreadystatechange = function() {
    if (oXHR.readyState == 4) {
			CallBack.failure;
		}
		else{
        CallBack.success;
    }
  }
	oXHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	oXHR.send(PostData);
}	
Connector.prototype.Save = function(oForm){
	SITE.EditorValue = oForm.EditorValue.value;
	var PostData = "EditorValue="+escape(oForm.EditorValue.value)+"&Id="+oForm.id.value;
	var oXHR =  CON.createXHR();
	oXHR.open('post', oForm.actions, true);
	oXHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	oXHR.onreadystatechange = function() {
    if (oXHR.readyState == 4) {
    	if (oXHR.status==200){
				alert(oXHR.responseText)
			}
			else{
				alert("Der sket en fejl" + OXHR.statusText)
			}
		}
  }
	oXHR.send(PostData);
}	

// var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);

// Special functions

Connector.prototype.Order_By_Function = function(Table_Name,Target_Objects,Id_Name,Order_By_Name,Id_Selected,Order_By_Selected,End_Target_Function)
{
	this.Sql = con.Create_UPDATE(Table_Name,Order_By_Name + "=%d",Id_Name + "='%s'");

	for (var n=0; n<Target_Objects.length; n++)
	{
	  if (Target_Objects[n][Order_By_Name] >= Order_By_Selected && Target_Objects[n][Id_Name] != Id_Selected) 
	  {
	  	Target_Objects[n][Order_By_Name]++;
//	  con.Sql_Connect(Obj,this.Sql,"update_sql","Return_Message",(n==(Target_Objects.length-1)) ? "void(0)" : End_Target_Function ,Target_Objects[n][Order_By_Name],Target_Objects[n][Id_Name]);
		}
	}   
}

Connector.prototype.Send_Mail = function(To,Cc,Bcc,Subject,Message,From,CallBackObj,CallBackFunction)
{
 	this.Server_Connector(SERVER_ADDR + "/SHARE/connect/mail.php","class.mail.php","mail","send_mail",CallBackObj,CallBackFunction,"&To="+To+"&Cc="+Cc+"&Bcc="+Bcc+"&Subject="+escape(Subject)+"&Message="+escape(Message)+"&From="+From);
}

