// JavaScript Document
var state = 'Master';
var activeObject, activePanel; //for creating program History feature
var user = {
  username:'',
  priceList:new Object(),
  discount:new Object(),
  currentCharge:0
};
var presidium = ['admin', 'sales-man', 'domain-registerar', 'host-planer', 'reseller-supervisor', 'dbms-superintendent', 'plat-proctor', 'ssl-provisioner']; //هیئت رئیسه
var winHosting, linHosting, winReseller, linReseller, DbmsSrvs, ServerSrvs, SSLSrvs, availableDomains=new Array();
new Ajax.Request('login.php', {
  method: 'get',
  onSuccess: function(transport) {
    var Response=eval('('+transport.responseText+')');
	winHosting=Response.winHosting;
	linHosting=Response.linHosting;
	winReseller=Response.winReseller;
	linReseller=Response.linReseller;
	DbmsSrvs=Response.DbmsSrvs;
	ServerSrvs=Response.ServerSrvs;
	SSLSrvs=Response.SSLSrvs;
	availableDomains=Response.availableDomains;
	user.priceList=Response.priceList;
  },
  parameters: 'action=getPrices',
  asynchronous: false
});
var webHosting=new Array(winHosting, linHosting);

/*var winHosting=new Array("wh3", "wh4", "wh6", "wh7", "wp1", "wp2", "wp3");
var linHosting=new Array("lh1", "lh2", "lh6", "lh7", "lp1", "lp2", "lp3", "lp4");
var webHosting=new Array(winHosting, linHosting);
var availableDomains=new Array("com", "net", "org", "ir", "ac.ir", "sch.ir", "co.ir", "net.ir", "gov.ir", "org.ir", "id.ir", "info", "biz", "ws", "eu");
var priceList={"com":9000, "net":9000, "org":9000, "ir":12000, "ac.ir":9000, "sch.ir":9000, "co.ir":9000, "net.ir":9000, "gov.ir":9000, "org.ir":9000, "id.ir":9000, "info":12000, "biz":12000, "ws":25000, "eu":19000, "wh3":30000, "wh4":40000, "wh6":65000, "wh7":95000, "wp1":165000, "wp2":315000, "wp3":515000, "lh1":25000, "lh2":38000, "lh6":58000, "lh7":85000, "lp1":150000, "lp2":285000, "lp3":460000, "lp4":1035000, "fwd":5000};*/

var myPattern='{';
for(var i=0; i<availableDomains.length; i++)
  myPattern+='"'+availableDomains[i]+'":{}, ';
for(var i=0; i<winHosting.length; i++)
  myPattern+='"'+winHosting[i]+'":{}, ';
for(var i=0; i<linHosting.length; i++)
  myPattern+='"'+linHosting[i]+'":{}, ';
for(var i=0; i<winReseller.length; i++)
  myPattern+='"'+winReseller[i]+'":{}, ';
for(var i=0; i<linReseller.length; i++)
  myPattern+='"'+linReseller[i]+'":{}, ';
for(var i=0; i<DbmsSrvs.length; i++)
  myPattern+='"'+DbmsSrvs[i]+'":{}, ';
for(var i=0; i<ServerSrvs.length; i++)
  myPattern+='"'+ServerSrvs[i]+'":{}, ';
for(var i=0; i<SSLSrvs.length; i++)
  myPattern+='"'+SSLSrvs[i]+'":{}, ';
myPattern+='"fwd":{}';
//myPattern=myPattern.substr(myPattern.length-2)==', ' ? myPattern.substr(0, myPattern.length-2) : myPattern;
myPattern+='}';
//var myPattern='{"com":{}, "net":{}, "org":{}, "ir":{}, "ac.ir":{}, "sch.ir":{}, "co.ir":{}, "net.ir":{}, "gov.ir":{}, "org.ir":{}, "id.ir":{}, "info":{}, "biz":{}, "ws":{}, "eu":{}, "wh3":{}, "wh4":{}, "wh6":{}, "wh7":{}, "wp1":{}, "wp2":{}, "wp3":{}, "lh1":{}, "lh2":{}, "lh6":{}, "lh7":{}, "lp1":{}, "lp2":{}, "lp3":{}, "lp4":{}, "fwd":{}}';
var myPatternObj=eval('('+myPattern+')');

user.discount=eval('('+myPattern+')');
var runSQLResult = { SQLStmt:'', runSQL:[], fieldNames:[], totalRows:'', totalPages:'', pageNum:'', postFunction:function() {} };

//user.discount.net[1]=10/100;
//user.discount.net[5]=50/100;

var Global = {
  reverse_action:'',
  title:'',
  usingTable:''
};

var customReports = {};

var Domain = {
  tld:'.com', //in correct com
  displayInput:function(Container, Droped) {
    Domain.tld=Droped.id;
	Container=Container.update('www. ');
	Container.appendChild(Domain.inputBox('domainName', 'yourname'));
	new Insertion.Bottom(Container, ' .' + Droped.id + '&nbsp;');
	Container.appendChild(Domain.buttonBox('»'));
  }, 
  displayGeneralInput:function(Container) {
    Container=Container.update('www. ');
	Container.appendChild(Domain.inputBox('domainName', 'yourname'));
	new Insertion.Bottom(Container, ' .');
	Container.appendChild(Domain.selectBox());
	//new Insertion.Bottom(Container, + '&nbsp;');
	Container.appendChild(Domain.buttonBox('»'));
  }, 
  instantDomainInput:function(Container) {
    Container=Container.update('www.');
	var instantDomainName=Builder.node('input', {name:'Domain', id:'instantDomainName'});
	//instantDomainName.onkeydown=function(e) {return CatchEnter(e, 'instantDomain()');};
	Container.appendChild(instantDomainName);
	/*Container.appendChild(Domain.divBox('domain_autoList', 'autoCompleteMenu'));
	new Ajax.Autocompleter(
	  'instantDomainName',
	  'domain_autoList',
	  'login.php',
	  {method:'get', parameters:'action=instantDomain', indicator:'indicator'}
	);*/
	new Insertion.Bottom(Container, '&nbsp;&nbsp;');
	Container.appendChild(Builder.node('button', {onclick:'instantDomain();'}, '»'));
  }, 
  selectBox: function(id, value) {
	var tempSelect=Builder.node('select', {id:'', onchange:'Domain.tld=this.value;'});
	for(var i=0; i<availableDomains.length; i++) 
	  tempSelect.appendChild(Builder.node('option', {value:availableDomains[i]}, availableDomains[i]));
	tempSelect.selectedIndex=0;
	Domain.tld=tempSelect.options[tempSelect.selectedIndex].value;
	return tempSelect;
  },
  inputBox: function(id, value) {
	var tempInput=Builder.node('input', {style:'background: #F0F0F0 top right no-repeat;'}, '');
	tempInput.setAttribute('id', id);
	tempInput.setAttribute('value', value);
	tempInput.style.backgroundImage=(typeof farsi_keyboard=='undefined'||farsi_keyboard.langFarsi==false)? 'url(images/en.gif)': 'url(images/fa-red.gif)';
	tempInput.onkeydown=function(e) {return CatchEnter(e, 'CheckWhois()');};
	tempInput.onkeypress=KeyConvert;
	return tempInput;
  }, 
  buttonBox: function(label) {
	var tempButton=document.createElement('button');
	tempButton.appendChild(document.createTextNode(label));
	tempButton.onclick=function() {return CheckWhois();};
	return tempButton;
  }, 
  divBox: function(id, myclass, contents) {
	var tempDiv=document.createElement('div');
	if ((typeof(id)!='undefined') || (id=='')) tempDiv.setAttribute('id', id);
	if ((typeof(myclass)!='undefined') || (myclass='')) tempDiv.className=myclass;
	if (typeof(contents)!='undefined') tempDiv.innerHTML=contents;
	return tempDiv;
  }, 
  imgBox: function(src, width, height, id, myclass) {
	var tempImg=document.createElement('img');
	tempImg.src=src;
	tempImg.setAttribute('width', width);
	tempImg.setAttribute('height', height);
	tempImg.setAttribute('id', id);
	tempImg.className=myclass;
	return tempImg;
  }
};

var Host = {
  hst:'.wh1', //in correct wh1
  displayInput:function(Container, Droped) {
	Host.hst=Droped.id;
	Container=Container.update('plan ');
	Container.appendChild(Host.inputBox('hostName', 'yourname.com'));
	Container.appendChild(Domain.divBox('hst_autoList', 'autoCompleteMenu'));
	new Autocompleter.Local('hostName', 'hst_autoList', UnHostedDomains()[0], {});
	
	if(Host.hst=='fwd') {
	  new Insertion.Bottom(Container, ' -> ');
	  Container.appendChild(Host.inputBox('fwdName', 'forward.com'));
	  Container.appendChild(Domain.divBox('fwd_autoList', 'autoCompleteMenu'));
	  new Autocompleter.Local('fwdName', 'fwd_autoList', UnHostedDomains()[1], {});
	}
	
	new Insertion.Bottom(Container, ' .' + Droped.id + '&nbsp;');
	Container.appendChild(Host.buttonBox('»'));
  }, 
  displayGeneralInput:function(Container, Droped) {
	Container=Container.update('plan ');
	Container.appendChild(Host.inputBox('hostName', 'yourname.com'));
	Container.appendChild(Domain.divBox('hst_autoList', 'autoCompleteMenu'));
	new Autocompleter.Local('hostName', 'hst_autoList', UnHostedDomains()[0], {});
	
	new Insertion.Bottom(Container, ' .');
	Container.appendChild(Host.selectBox());
	Container.appendChild(Host.buttonBox('»'));
  }, 
  selectBox: function(id, value) {
	var tempSelect=Builder.node('select', {id:'', onchange:'Host.hst=this.value;'});
	for(var i=0; i<winHosting.length; i++)
	  tempSelect.appendChild(Builder.node('option', {value:winHosting[i]}, winHosting[i]));
	for(var i=0; i<linHosting.length; i++)
	  tempSelect.appendChild(Builder.node('option', {value:linHosting[i]}, linHosting[i]));
	
	tempSelect.selectedIndex=0;
	Host.hst=tempSelect.options[tempSelect.selectedIndex].value;
	return tempSelect;
  },
  inputBox: function(id, value) {
	var tempInput=Builder.node('input', {style:'background: #F0F0F0 top right no-repeat;'}, '');
	tempInput.setAttribute('id', id);
	tempInput.setAttribute('value', value);
	tempInput.style.backgroundImage=(typeof farsi_keyboard=='undefined'||farsi_keyboard.langFarsi==false)? 'url(images/en.gif)': 'url(images/fa-red.gif)';
	tempInput.onkeydown=function(e) {return CatchEnter(e, 'CheckHost()');};
	tempInput.onkeypress=KeyConvert;
	return tempInput;
  }, 
  buttonBox: function(label) {
	var tempButton=document.createElement('button');
	tempButton.appendChild(document.createTextNode(label));
	tempButton.onclick=function() {return CheckHost();};
	return tempButton;
  }
}

var Reseller = {
  rsl:'wr1',
  displayInput:function(Container, Droped) {
	Reseller.rsl=Droped.id;
	Container=Container.update('srvc ');
	Container.appendChild(Reseller.inputBox('resellerName', 'yourname'));
	new Insertion.Bottom(Container, ' .' + Droped.id + '&nbsp;');
	Container.appendChild(Reseller.buttonBox('»'));
  }, 
  displayGeneralInput:function(Container, Droped) {
	Container=Container.update('srvc ');
	Container.appendChild(Reseller.inputBox('resellerName', 'yourname'));
	new Insertion.Bottom(Container, ' .');
	Container.appendChild(Reseller.selectBox());
	Container.appendChild(Reseller.buttonBox('»'));
  }, 
  selectBox: function(id, value) {
	var tempSelect=Builder.node('select', {id:'', onchange:'Reseller.rsl=this.value;'});
	for(var i=0; i<winReseller.length; i++)
	  tempSelect.appendChild(Builder.node('option', {value:winReseller[i]}, winReseller[i]));
	for(var i=0; i<linReseller.length; i++)
	  tempSelect.appendChild(Builder.node('option', {value:linReseller[i]}, linReseller[i]));
	
	tempSelect.selectedIndex=0;
	Reseller.rsl=tempSelect.options[tempSelect.selectedIndex].value;
	return tempSelect;
  },
  inputBox: function(id, value) {
	var tempInput=Builder.node('input', {style:'background: #F0F0F0 top right no-repeat;'}, '');
	tempInput.setAttribute('id', id);
	tempInput.setAttribute('value', value);
	tempInput.style.backgroundImage=(typeof farsi_keyboard=='undefined'||farsi_keyboard.langFarsi==false)? 'url(images/en.gif)': 'url(images/fa-red.gif)';
	tempInput.onkeydown=function(e) {return CatchEnter(e, 'checkName("reseller")');};
	tempInput.onkeypress=KeyConvert;
	return tempInput;
  }, 
  buttonBox: function(label) {
	var tempButton=document.createElement('button');
	tempButton.appendChild(document.createTextNode(label));
	tempButton.onclick=function() {return checkName("reseller");};
	return tempButton;
  }
}

var Dbms = {
  dbs:'mssql2k1',
  displayInput:function(Container, Droped) {
	Dbms.dbs=Droped.id;
	Container=Container.update('dbms ');
	Container.appendChild(Dbms.inputBox('dbmsName', 'yourname'));
	new Insertion.Bottom(Container, ' .' + Droped.id + '&nbsp;');
	Container.appendChild(Dbms.buttonBox('»'));
  }, 
  displayGeneralInput:function(Container, Droped) {
	Container=Container.update('dbms ');
	Container.appendChild(Dbms.inputBox('dbmsName', 'yourname'));
	new Insertion.Bottom(Container, ' .');
	Container.appendChild(Dbms.selectBox());
	Container.appendChild(Dbms.buttonBox('»'));
  }, 
  selectBox: function(id, value) {
	var tempSelect=Builder.node('select', {id:'', onchange:'Dbms.dbs=this.value;'});
	for(var i=0; i<DbmsSrvs.length; i++)
	  tempSelect.appendChild(Builder.node('option', {value:DbmsSrvs[i]}, DbmsSrvs[i]));
	
	tempSelect.selectedIndex=0;
	Dbms.dbs=tempSelect.options[tempSelect.selectedIndex].value;
	return tempSelect;
  },
  inputBox: function(id, value) {
	var tempInput=Builder.node('input', {style:'background: #F0F0F0 top right no-repeat;'}, '');
	tempInput.setAttribute('id', id);
	tempInput.setAttribute('value', value);
	tempInput.style.backgroundImage=(typeof farsi_keyboard=='undefined'||farsi_keyboard.langFarsi==false)? 'url(images/en.gif)': 'url(images/fa-red.gif)';
	tempInput.onkeydown=function(e) {return CatchEnter(e, 'checkName("dbms")');};
	tempInput.onkeypress=KeyConvert;
	return tempInput;
  }, 
  buttonBox: function(label) {
	var tempButton=document.createElement('button');
	tempButton.appendChild(document.createTextNode(label));
	tempButton.onclick=function() {return checkName("dbms");};
	return tempButton;
  }
}

var PlatForm = { //Server
  plt:'dell1', //srv
  displayInput:function(Container, Droped) {
	PlatForm.plt=Droped.id;
	Container=Container.update('plat ');
	Container.appendChild(PlatForm.inputBox('serverName', 'yourname'));
	new Insertion.Bottom(Container, ' .' + Droped.id + '&nbsp;');
	Container.appendChild(PlatForm.buttonBox('»'));
  }, 
  displayGeneralInput:function(Container, Droped) {
	Container=Container.update('plat ');
	Container.appendChild(PlatForm.inputBox('serverName', 'yourname'));
	new Insertion.Bottom(Container, ' .');
	Container.appendChild(PlatForm.selectBox());
	Container.appendChild(PlatForm.buttonBox('»'));
  }, 
  selectBox: function(id, value) {
	var tempSelect=Builder.node('select', {id:'', onchange:'PlatForm.plt=this.value;'});
	for(var i=0; i<ServerSrvs.length; i++)
	  tempSelect.appendChild(Builder.node('option', {value:ServerSrvs[i]}, ServerSrvs[i]));
	
	tempSelect.selectedIndex=0;
	PlatForm.plt=tempSelect.options[tempSelect.selectedIndex].value;
	return tempSelect;
  },
  inputBox: function(id, value) {
	var tempInput=Builder.node('input', {style:'background: #F0F0F0 top right no-repeat;'}, '');
	tempInput.setAttribute('id', id);
	tempInput.setAttribute('value', value);
	tempInput.style.backgroundImage=(typeof farsi_keyboard=='undefined'||farsi_keyboard.langFarsi==false)? 'url(images/en.gif)': 'url(images/fa-red.gif)';
	tempInput.onkeydown=function(e) {return CatchEnter(e, 'checkName("server")');};
	tempInput.onkeypress=KeyConvert;
	return tempInput;
  }, 
  buttonBox: function(label) {
	var tempButton=document.createElement('button');
	tempButton.appendChild(document.createTextNode(label));
	tempButton.onclick=function() {return checkName("server");};
	return tempButton;
  }
}

var SecLayer = { //SSL. Secure Socket Layer
  ssl:'ssl1',
  displayInput:function(Container, Droped) {
	SecLayer.ssl=Droped.id;
	Container=Container.update('socket ');
	Container.appendChild(SecLayer.inputBox('sslName', 'yourname'));
	new Insertion.Bottom(Container, ' .' + Droped.id + '&nbsp;');
	Container.appendChild(SecLayer.buttonBox('»'));
  }, 
  displayGeneralInput:function(Container, Droped) {
	Container=Container.update('socket ');
	Container.appendChild(SecLayer.inputBox('sslName', 'yourname'));
	new Insertion.Bottom(Container, ' .');
	Container.appendChild(SecLayer.selectBox());
	Container.appendChild(SecLayer.buttonBox('»'));
  }, 
  selectBox: function(id, value) {
	var tempSelect=Builder.node('select', {id:'', onchange:'SecLayer.ssl=this.value;'});
	for(var i=0; i<SSLSrvs.length; i++)
	  tempSelect.appendChild(Builder.node('option', {value:SSLSrvs[i]}, SSLSrvs[i]));
	
	tempSelect.selectedIndex=0;
	SecLayer.ssl=tempSelect.options[tempSelect.selectedIndex].value;
	return tempSelect;
  },
  inputBox: function(id, value) {
	var tempInput=Builder.node('input', {style:'background: #F0F0F0 top right no-repeat;'}, '');
	tempInput.setAttribute('id', id);
	tempInput.setAttribute('value', value);
	tempInput.style.backgroundImage=(typeof farsi_keyboard=='undefined'||farsi_keyboard.langFarsi==false)? 'url(images/en.gif)': 'url(images/fa-red.gif)';
	tempInput.onkeydown=function(e) {return CatchEnter(e, 'checkName("ssl")');};
	tempInput.onkeypress=KeyConvert;
	return tempInput;
  }, 
  buttonBox: function(label) {
	var tempButton=document.createElement('button');
	tempButton.appendChild(document.createTextNode(label));
	tempButton.onclick=function() {return checkName("ssl");};
	return tempButton;
  }
}

/*var Revival = {
  displayInput:function(Container, Droped) {
	Container=Container.update('Revival ');
	Container.appendChild(Host.inputBox('revivName', 'yourname.com'));
	Container.appendChild(Domain.divBox('rvv_autoList', 'autoCompleteMenu'));
	new Autocompleter.Local('revivName', 'rvv_autoList', RevivalableDHs(), {});
	
	new Insertion.Bottom(Container, ' .' + Droped.id + '&nbsp;');
	Container.appendChild(Revival.buttonBox('»'));
  }
}*/

var Controllers = {
  domainReg: function(Container) { //not in use
	Container.appendChild(Controllers.buttonBoxClient('ثبت دامین', 'ourServices($("about_us_cen"), "Domain Services"); Renderer.renderInteraction("Domain Services", null);'));
  },
  hostRent: function(Container) { //not in use
	Container.appendChild(Controllers.buttonBoxClient('فضای میزبانی', 'ourServices($("about_us_cen"), "Host Services"); Renderer.renderInteraction("Host Services", null);'));
  },
  /*resellerReg: function(Container) {
	Container.appendChild(Controllers.buttonBoxClient('فضای میزبانی', 'ourServices($("about_us_cen"), "Reseller Services"); Renderer.renderInteraction("Reseller Services", null);'));
	var resellerBtn=Builder.node('input', {type:'image', src:'images/reseller.gif', title:'ورود به سیستم', style:'border:0px; background:transparent;'});
	checkBtn.onclick=function() {
	  Controllers.loginBox($("interaction"));
	}
	Container.appendChild(checkBtn);
  },
  dbmsReg: function(Container) {
	Container.appendChild(Controllers.buttonBoxClient('فضای میزبانی', 'ourServices($("about_us_cen"), "Dbms Services"); Renderer.renderInteraction("Dbms Services", null);'));
  },*/
  checkAccount: function(Container) {
	//Container.appendChild(Controllers.buttonBoxClient('ورود به سیستم', 'Controllers.loginBox($("interaction"))'));
	var checkBtn=Builder.node('input', {type:'image', src:'images/login.gif', title:'ورود به سیستم', style:'border:0px; background:transparent;'});
	checkBtn.onclick=function() {
	  Controllers.loginBox($("interaction"));
	}
	Container.appendChild(checkBtn);
  },
  chargeAccount: function(Container) {
    var chargeBtn=Builder.node('input', {type:'image', src:'images/charge.gif', title:'افزودن موجودی', style:'border:0px; background:transparent; margin-right:2px'});
	chargeBtn.onclick=function() {
	  generalUpdater("about_us_cen", "charge.htm")
	}
	Container.appendChild(chargeBtn);
	//Container.appendChild(Controllers.buttonBoxClient('شارژ حساب', 'generalUpdater("about_us_cen", "charge.htm")'));
  },
  agencyReq: function(Container) {
	var tempButton=Builder.node('img', {src:'images/agency.gif', title:'درخواست نمایندگی'});
	tempButton.onclick=function() {
	  Controllers.agencyRequest();
	}
	Container.appendChild(tempButton);
  },
  payment: function(Container) {
    var paymentBtn=Builder.node('input', {type:'image', id:'balance', src:'images/pay.gif', style:'border:0px; background:transparent; margin-right:2px'});
	paymentBtn.onclick=function() {
	  if(totalPurchase>0)
	  Controllers.makePayment("interaction");
	}
	//var paymentBtn = Controllers.buttonBox('پرداخت', 'Controllers.makePayment("interaction")');
	//paymentBtn is displayed if user is logged in, therefore currentCharge() can be calculated. 
	paymentBtn.setAttribute('title', 'پرداخت |مجموع خرید: '+totalPurchase+' و باقیمانده اعتبار: '+user.currentCharge);
	if (user.type=='agency') { if (2*totalPurchase>user.currentCharge) paymentBtn.setAttribute('disabled', 'disabled'); } //alert(totalPurchase+', '+currentCharge());
	else if (totalPurchase>user.currentCharge) paymentBtn.setAttribute('disabled', 'disabled'); //case of user.type==regular||agency-req.
	Container.appendChild(paymentBtn);
  },
  view_port: function(Container) {
    var view_port=['profile', 'logs', 'charges', 'domainPayments', 'hostPayments', 'resellerPayments', 'dbmsPayments', 'platPayments', 'sslPayments', 'transferOut', 'transferIn'],
		src=['profile.gif', 'logs.gif', 'charge-m.gif', 'domain-m.gif', 'host-m.gif', 'reseller-m.gif', 'dbms.gif', 'servers.gif', 'ssl.gif', 'trans-out.gif', 'trans-in.gif'],
		title=['مشخصات', 'وقايع', 'شارژها', 'دامينها', 'فضاي ميزباني', 'نمايندگيها', 'پايگاههاي داده', 'سرورها', 'لایه های امن', '[انتقال[خروج', '[انتقال[ورود'];

	view_port.each(function(value, index) {
	  var tempBtn=Builder.node('img', {src:'images/'+src[index], title:title[index]});
	  tempBtn.onclick=function() {
	    activePanel=view_port[index];
	    if(!$(activePanel)) myProfile($("about_us_cen"));
	    else toggleDisplay(activePanel);
	  }
	  Container.appendChild(tempBtn);
	});
  },/*
  profile: function(Container) {
    var tempButton=Builder.node('img', {src:'images/profile.gif', title:'پروفایل'});
	tempButton.onclick=function() {
	  myProfile($("about_us_cen"));
	}
	Container.appendChild(tempButton);
  },*/
  store: function(Container) {
    var tempBtn=Builder.node('img', {src:'images/store.gif', title:'سبد خريد'});
	tempBtn.onclick=function() {
	  ourServices($('about_us_cen'), 'Domain Services');
	  Renderer.renderInteraction('Domain Services', null);
	}
	Container.appendChild(tempBtn);
  },
  adminProfile_Btn: function(Container) {
	var tempButton=Builder.node('img', {src:'images/profile.gif', title:'پروفایل مدیر'});
	tempButton.onclick=function() {
	  controlPanel($("about_us_cen"));
	}
	Container.appendChild(tempButton);
  },
  clock_Btn: function(Container) {
    var tempButton=Builder.node('img', {src:'images/clock.gif', title:'تاریخ امروز: '+user.currentTime});
	Container.appendChild(tempButton);
  },
  customLog_Btn: function(Container) {
    var tempButton=Builder.node('img', {src:'images/custom-log.gif', title:'شارژ دلخواه'});
	tempButton.onclick=function() {
	  generalUpdater("about_us_cen", "custom-log.htm");
	}
	Container.appendChild(tempButton);
  },
  manageUsers_Btn: function(Container) {
	var tempButton=Builder.node('img', {src:'images/users-m.gif', title:'مدیریت کاربران'});
	tempButton.onclick=function() {
	  Global.reverse_action='edit_profile';
	  Global.title='مدیریت کاربران';
	  Global.usingTable='user';
	  runSQLResult.postFunction=function() {manageEntity($("about_us_cen"), Global.title, Global.reverse_action)};
	  runSQL('SELECT * FROM `user`', '', '');
	}
	Container.appendChild(tempButton);
  },
  manageCharges_Btn: function(Container) {
	var tempButton=Builder.node('img', {src:'images/charge-m.gif', title:'مدیریت شارژها'});
	tempButton.onclick=function() {
	  Global.reverse_action='edit_charges';
	  Global.title='مدیریت شارژها';
	  Global.usingTable='accountcharge';
	  runSQLResult.postFunction=function() {manageEntity($("about_us_cen"), Global.title, Global.reverse_action)};
	  runSQL('SELECT * FROM `accountcharge`', '', '');
	}
	Container.appendChild(tempButton);
  },
  manageSSLPays_Btn: function(Container) {
	var tempButton=Builder.node('img', {src:'images/ssl-m.gif', title:'مدیریت لایه های امن'});
	tempButton.onclick=function() {
	  Global.reverse_action='edit_sslpays';
	  Global.title='مدیریت لایه های امن';
	  Global.usingTable='ssl_payments';
	  runSQLResult.postFunction=function() {manageEntity($("about_us_cen"), Global.title, Global.reverse_action)};
	  runSQL('SELECT * FROM `ssl_payments`', '', '');
	}
	Container.appendChild(tempButton);
  },
  managePlatPays_Btn: function(Container) {
	var tempButton=Builder.node('img', {src:'images/plat-m.gif', title:'مدیریت سرورهای اختصاصی'});
	tempButton.onclick=function() {
	  Global.reverse_action='edit_serverpays';
	  Global.title='مدیریت سرورهای اختصاصی';
	  Global.usingTable='server_payments';
	  runSQLResult.postFunction=function() {manageEntity($("about_us_cen"), Global.title, Global.reverse_action)};
	  runSQL('SELECT * FROM `server_payments`', '', '');
	}
	Container.appendChild(tempButton);
  },
  manageDbmsPays_Btn: function(Container) {
	var tempButton=Builder.node('img', {src:'images/dbms-m.gif', title:'مدیریت سرويسهاي پايگاه داده'});
	tempButton.onclick=function() {
	  Global.reverse_action='edit_dbmspays';
	  Global.title='مدیریت سرويسهاي پايگاه داده';
	  Global.usingTable='dbms_payments';
	  runSQLResult.postFunction=function() {manageEntity($("about_us_cen"), Global.title, Global.reverse_action)};
	  runSQL('SELECT * FROM `dbms_payments`', '', '');
	}
	Container.appendChild(tempButton);
  },
  manageResellerPays_Btn: function(Container) {
	var tempButton=Builder.node('img', {src:'images/reseller-m.gif', title:'مدیریت نمايندگيها'});
	tempButton.onclick=function() {
	  Global.reverse_action='edit_resellerpays';
	  Global.title='مدیریت نمايندگيها';
	  Global.usingTable='reseller_payments';
	  runSQLResult.postFunction=function() {manageEntity($("about_us_cen"), Global.title, Global.reverse_action)};
	  runSQL('SELECT * FROM `reseller_payments`', '', '');
	}
	Container.appendChild(tempButton);
  },
  manageHostPays_Btn: function(Container) {
	var tempButton=Builder.node('img', {src:'images/host-m.gif', title:'مدیریت هاست'});
	tempButton.onclick=function() {
	  Global.reverse_action='edit_hostpays';
	  Global.title='مدیریت هاست';
	  Global.usingTable='host_payments';
	  runSQLResult.postFunction=function() {manageEntity($("about_us_cen"), Global.title, Global.reverse_action)};
	  runSQL('SELECT * FROM `host_payments`', '', '');
	}
	Container.appendChild(tempButton);
  },
  manageDomainPays_Btn: function(Container) {
	var tempButton=Builder.node('img', {src:'images/domain-m.gif', title:'مدیریت دامینها'});
	tempButton.onclick=function() {
	  Global.reverse_action='edit_domainpays';
	  Global.title='مدیریت دامینها';
	  Global.usingTable='domain_payments';
	  runSQLResult.postFunction=function() {manageEntity($("about_us_cen"), Global.title, Global.reverse_action)};
	  runSQL('SELECT * FROM `domain_payments`', '', '');
	}
	Container.appendChild(tempButton);
  },
  customSQL_Inpt: function(Container) {
    var tempInput=document.createElement('input');
	tempInput.setAttribute('id', 'SQL_Inpt');
	tempInput.setAttribute('value', 'Custom SQL input');
	tempInput.onkeydown=function(e) {
	  if (!CatchEnter(e, '')) { // If Enter key is pressed
	  Global.reverse_action=$('aimed_rsaction').value;
	  Global.title='نتایج اجرای دستور';
	  runSQLResult.postFunction=function() {manageEntity($("about_us_cen"), Global.title, Global.reverse_action)};
	  runSQL(this.value, '', '');
	  }
	}
	Container.appendChild(tempInput);
	//Container.appendChild(Domain.divBox('SQL_autoList', 'autoCompleteMenu'));
	//new Autocompleter.Local('SQL_Inpt', 'SQL_autoList', ['SELECT', 'FROM', 'accountcharge', 'domain_payments', 'host_payments', 'logs', 'payment', 'user', 'WHERE', 'AND', 'OR', 'ANY'], {tokens:' '});
	var aimed_rsaction=Builder.node('input', {id:'aimed_rsaction', className:'miniInput'});
	Container.appendChild(aimed_rsaction);
	Container.appendChild(Domain.divBox('aim_rsaction_autoList', 'autoCompleteMenu'));
	//new Autocompleter.Local('aimed_rsaction', 'aim_rsaction_autoList', ['edit_profile', 'edit_charges', 'edit_hostpays', 'edit_domainpays']);
  },
  makePayment: function(cntId) {
	var myJSONCart='{';
	//myPHPCart='';
	for (var i in myCart) { //i is tld
      myJSONCart+='"'+i+'":{';
	  for (var j in myCart[i]) { //j is domain & myCart[i][j] is period
		var period=myCart[i][j];
		myJSONCart+='"'+j+'":'+period+', ';
		//myPHPCart+='$myCart["'+i+'"]["'+j+'"]='+myCart[i][j]+';';
      }
	  if (myJSONCart.lastIndexOf(', ')==myJSONCart.length-2) myJSONCart=myJSONCart.substr(0, myJSONCart.length-2);
	  myJSONCart+='}, ';
    }
	if (myJSONCart.lastIndexOf(', ')==myJSONCart.length-2) myJSONCart=myJSONCart.substr(0, myJSONCart.length-2);
	myJSONCart+='}';
	//alert(myJSONCart);
	var Prmts='action=payment&myJSONCart='+myJSONCart;
	new Ajax.Request('login.php', {
      method: 'get',
      onLoading: function(transport) {
    	Element.show('indicator');
      }, 
      onComplete: function(transport) {
    	Element.hide('indicator')
      },
      onSuccess: function(transport) {
        var Response=eval('('+transport.responseText+')');
		if(Response.status) {
		  //empty myCart variable
		  //display profile panel.
		  user.currentCharge=Response.currentCharge;
		  user.domain_paymentHistory=Response.domain_paymentHistory;
		  user.host_paymentHistory=Response.host_paymentHistory;
		  user.reseller_paymentHistory=Response.reseller_paymentHistory;
		  user.dbms_paymentHistory=Response.dbms_paymentHistory;
		  user.server_paymentHistory=Response.server_paymentHistory;
		  user.ssl_paymentHistory=Response.ssl_paymentHistory;
		  myCart=eval('('+myPattern+')');
		  
		  ourServices($('about_us_cen'), 'Domain Services');
		  Renderer.renderCart();
		  Renderer.renderControllers('controllers');
		  $('comments').update('خرید شما با موفقیت انجام شد، برای انجام عملیات پس از خرید به تنظيمات بروید <br />'+Response.centre_msg);//برای تعیین نام سرورهای دامین های جدید خود به پروفایلتان بروید.
		}else {
		  ourServices($('about_us_cen'), 'Domain Services');
		  $('comments').update(Response.msg);
		}
      },
      parameters: Prmts
    });
  },
  changeStatus: function(type, cntId) {
    if(type=='login') {
	  var Prmts='action=login&UName='+$('UName').value+'&UPass='+$('UPass').value;
	  var InformMessage='كاربر گرامي به كنترل پنل خود خوش آمديد';
	  InformMessage+='<br /><font color="red">توجه : </font>اگر از پیش شناسه-ایرنیک دارید آن را در مشخصات خود وارد کنید در غیر این صورت آن را <a href="irnic-epp/contact_create.php" target="_blank">ایجاد</a> نمایید';
	}else {
	  var Prmts='action=logout&UName='+user.username;
	  var InformMessage='اکنون شما از سيستم خارج شده اید';
	}

    new Ajax.Request('login.php', {
      method: 'get',
      onLoading: function(transport) {
    	Element.show('indicator');
      }, 
      onComplete: function(transport) {
    	Element.hide('indicator')
      },
      onSuccess: function(transport) {
        var Response=eval('('+transport.responseText+')');
    	if(Response.status) {//user=Response; note that this is not appropriated.
	 	if(presidium.include(Response.type)) {
		  user.type=Response.type;
		  user.username=Response.username;
		  user.currentTime=Response.currentTime;
		  user.profile=Response.profile;
		  controlPanel($("about_us_cen"));
		}else {
		  user.type=Response.type;
		  user.username=Response.username;
		  user.priceList=Response.priceList;
	 	  user.discount=Object.extend(user.discount, Response.discount);
		  user.currentCharge=Response.currentCharge;
		  user.currentTime=Response.currentTime;
		  user.profile=Response.profile;
		  user.logsHistory=Response.logsHistory;
		  user.chargeHistory=Response.chargeHistory;
		  user.domain_paymentHistory=Response.domain_paymentHistory;
		  user.host_paymentHistory=Response.host_paymentHistory;
		  user.reseller_paymentHistory=Response.reseller_paymentHistory;
		  user.dbms_paymentHistory=Response.dbms_paymentHistory;
		  user.server_paymentHistory=Response.server_paymentHistory;
		  user.ssl_paymentHistory=Response.ssl_paymentHistory;
		  user.transferOut=Response.transferOut;
		  user.transferIn=Response.transferIn;
		  /*replaceContent('mb_2');  */ourServices($('about_us_cen'), 'Domain Services');
		  Renderer.renderCart();
		  Renderer.renderControllers('controllers');
		  $('comments').update(InformMessage);
		}
		}else {
		  $('comments').update(Response.msg);
		}
      },
      parameters: Prmts
    });
  },
  logout_Btn: function(Container) {
	var tempButton=Builder.node('img', {src:'images/logout.gif', title:'خروج'});
	tempButton.onclick=function() {
	  Controllers.changeStatus("logout", "interaction");
	}
	Container.appendChild(tempButton);
  },
  loginBox: function(Container) {
    if($('UName')) Controllers.changeStatus("login", Container.id); else {
	Container=Container.update(' UName: '); //نام کاربری
	Container.appendChild(Controllers.inputBox('UName', 'نام کاربری', 'Controllers.changeStatus("login", "'+Container.id+'")'));
	new Insertion.Bottom(Container, '&nbsp;<br/> UPass: '); //کلمه عبور
	var UPass=Controllers.inputBox('UPass', '', 'Controllers.changeStatus("login", "'+Container.id+'")');
	UPass.type="password"; UPass.title="کلمه عبور";
	Container.appendChild(UPass);
	new Insertion.Bottom(Container, '&nbsp;<br/> ');
	//Container.appendChild(Controllers.buttonBoxClient('کاربر جدید', 'generalUpdater("about_us_cen", "register.htm")'));
	Container.appendChild(Builder.node('img', {src:'images/register.gif', title:'کاربر جدید', onclick:'generalUpdater(\'about_us_cen\', \'register.htm\')'}));
	new Insertion.Bottom(Container, '&nbsp;');
	var tempButton=Builder.node('img', {src:'images/information.gif', title:'فراموشی رمز'});
	tempButton.onclick=function() {
	  Controllers.forgotBox(Container.id);
	}
	Container.appendChild(tempButton);
	}
  },
  newUser: function(Container) {
    var clientSideFormValidation=(
	$F('username')=='' || $F('password')=='' || $F('name')=='' || $F('family')=='' || $F('email')=='' || $F('secureCode')=='' ||
	$('email').value.match(/.+@(\w+\.)+\D\D+/)==null //email pattern check.this version supports it@urmia.ac.ir
	) ? false : true;
	
	if (clientSideFormValidation) {
	var Prmts='action=register&username='+$F('username')+'&password='+$F('password')+'&name='+$F('name')+'&family='+$F('family')+'&email='+$F('email')+'&secureCode='+$F('secureCode')+'&workphone='+$F('Work-Phone')+'&homephone='+$F('Home-Phone')+'&workfax='+$F('Work-Fax')+'&mobile='+$F('Mobile')+'&city='+$F('City')+'&workaddress='+$F('Work-Address')+'&email2='+$F('Second-Email')+'&POBox='+$F('P.O.Box')+'&ICNum='+$F('I.C.Num')+'&nicHandle='+$F('Nic-Handle');
	new Ajax.Request('login.php', {
      method: 'get',
      onLoading: function(transport) {
    	Element.show('indicator');
      }, 
      onComplete: function(transport) {
    	Element.hide('indicator')
      },
      onSuccess: function(transport) {
        var Response=eval('('+transport.responseText+')');
		if(Response.status) {
		  replaceContent('mb_2');
		  ourServices($('about_us_cen'), 'Domain Services');
		  Controllers.loginBox($("interaction"));
		  $('comments').update('هم اكنون مى ‌توانيد وارد سيستم شويد');
		}else {
			alert(Response.msg);
		  //$('ourServices').appendChild(Builder.node('font', {color:'red'}, Response.msg));
		}
      },
      parameters: Prmts
    });
	}else
	alert('please fill the form correctly.');
  },
  forgotBox: function(cntId) {
	Container=$(cntId).update(' E-Mail: ');
	Container.appendChild(Controllers.inputBox('E-Mail', 'your email address', 'Controllers.remember()'));
	Container.appendChild(Controllers.buttonBox('Send', 'Controllers.remember()'));
  },
  remember: function() {
	var Prmts='action=remember&E-Mail='+$('E-Mail').value;//alert(Prmts);
	new Ajax.Request('login.php', {
      method: 'get',
      onLoading: function(transport) {
    	Element.show('indicator');
      }, 
      onComplete: function(transport) {
    	Element.hide('indicator')
      },
      onSuccess: function(transport) {
        var Response=eval('('+transport.responseText+')');
		$('comments').update(Response.msg);
      },
      parameters: Prmts
    });
  },
  agencyRequest: function() {
	var Prmts='action=agencyRequest&user_id=';
	new Ajax.Request('login.php', {
      method: 'get',
      onLoading: function(transport) {
    	Element.show('indicator');
      }, 
      onComplete: function(transport) {
    	Element.hide('indicator')
      },
      onSuccess: function(transport) {
        var Response=eval('('+transport.responseText+')');
		$('comments').update(Response.msg);
      },
      parameters: Prmts
    });
  },
  inputBox: function(id, value, goal) {
	var tempInput=document.createElement('input');
	tempInput.setAttribute('id', id);
	tempInput.setAttribute('value', value);
	tempInput.onkeydown=function(e) {
	  return CatchEnter(e, goal);
	};
	return tempInput;
  }, 
  buttonBox: function(label, goal) {
	var tempButton=document.createElement('button');
	tempButton.setAttribute('id', label);
	tempButton.appendChild(document.createTextNode(label));
	tempButton.onclick=function() {
	  eval(goal);
	};
	return tempButton;
  },/*
  linkBox: function(linkName, linkBase, linkQuery, linkTarget) {
	var linkHref=linkBase + '?' + linkQuery;
	var tempLink=document.createElement('a');
	tempLink.setAttribute('href', '#');
	tempLink.appendChild(document.createTextNode(linkName));
	tempLink.onclick=function() {generalUpdater(linkTarget, linkBase, linkQuery); return false;};
	return tempLink;
  },*/
  buttonBoxClient: function(label, action) {
	var tempButton=document.createElement('button');
	tempButton.appendChild(document.createTextNode(label));
	tempButton.onclick=function() {
	  eval(action);
	};
    return tempButton;
  },
  PagingResults: function(Container) {
	var Pager=Domain.divBox('Pager', 'title');
	Pager.style.height='14px'; Pager.style.cssFloat='left';
	if (runSQLResult.pageNum > 0) { // Show if not first page
	  //First Button
	  var FirstImg=Domain.imgBox('images/First.gif', '14px', '14px', '', '');
	  FirstImg.setAttribute('align', 'absmiddle');
	  FirstImg.onclick=function () {
	    runSQLResult.pageNum=0;
		runSQL(runSQLResult.SQLStmt, runSQLResult.pageNum, runSQLResult.totalRows);
	  }
	  Pager.appendChild(FirstImg);
	  //Previous Button
	  var PreviousImg=Domain.imgBox('images/Previous.gif', '14px', '14px', '', '');
	  PreviousImg.setAttribute('align', 'absmiddle');
	  PreviousImg.onclick=function () {
	    runSQLResult.pageNum=Math.max(0, runSQLResult.pageNum - 1);
		runSQL(runSQLResult.SQLStmt, runSQLResult.pageNum, runSQLResult.totalRows);
	  }
	  Pager.appendChild(PreviousImg);
	}
	
	if (runSQLResult.totalPages > 0) { //Show if we have more than one page
	  //Random Access Input
	  var tempInput=document.createElement('input');
	  tempInput.setAttribute('title', '0-'+runSQLResult.totalPages);
	  tempInput.setAttribute('id', 'Random-Access');
	  tempInput.setAttribute('value', runSQLResult.pageNum);
	  tempInput.onkeydown=function(e) {
		if (!CatchEnter(e, '')) { // If Enter key is pressed
		  runSQLResult.pageNum=Math.min(Math.abs(parseInt(this.value)), runSQLResult.totalPages);
		  runSQL(runSQLResult.SQLStmt, runSQLResult.pageNum, runSQLResult.totalRows);
		}
	  };
	  Pager.appendChild(tempInput);
	}
	
	if (runSQLResult.pageNum < runSQLResult.totalPages) { // Show if not last page
	  //Next Button
	  var NextImg=Domain.imgBox('images/Next.gif', '14px', '14px', '', '');
	  NextImg.setAttribute('align', 'absmiddle');
	  NextImg.onclick=function () {
	    runSQLResult.pageNum=Math.min(runSQLResult.totalPages, runSQLResult.pageNum + 1);
		runSQL(runSQLResult.SQLStmt, runSQLResult.pageNum, runSQLResult.totalRows);
	  }
	  Pager.appendChild(NextImg);
	  //Last Button
	  var LastImg=Domain.imgBox('images/Last.gif', '14px', '14px', '', '');
	  LastImg.setAttribute('align', 'absmiddle');
	  LastImg.onclick=function () {
	    runSQLResult.pageNum=runSQLResult.totalPages;
		runSQL(runSQLResult.SQLStmt, runSQLResult.pageNum, runSQLResult.totalRows);
	  }
	  Pager.appendChild(LastImg);
	}
	Container.appendChild(Pager);
  }/*,
  urlComponents: function(linkHref) {
    var url, queryString;	
	linkArray=linkHref.split('?');
	url=linkArray[0];
	queryString=typeof linkArray[1]=='undefined' ? '' : linkArray[1];
  }*/
};

/*var CustomerLogin = {
  
  
  
  
  
}

function chargeHistory(charge, authority_code, charge_time, bank){
  this.charge=charge;
  this.authority_code=authority_code;
  this.charge_time=charge_time;
  this.bank=bank;
}

function paymentHistory(period, type, name, payment_code, payment_time){
  this.period=period;
  this.type=type;
  this.name=name;
  this.payment_code=payment_code;
  this.payment_time=payment_time;
}
paymentHistory.prototype.cost=function(){ 
  switch (this.type) {
	case '.com':
	case '.net':
	case '.org':
	  return 9000*this.period;
	  break;
	case '.ir':
	  return 12000*this.period;
	  break;
	case 'wh5':
	  return 30000*this.period;
	  break;
  }
}

//now using prototype.js, json.js, cookie.js you can read the 'javascript object on the cookie'
//var myHistory=document.cookie("JSONString");

function totalPayments() {
  var sum=0;
  myHistory.paymentHistory.each(function (value, index) { sum+=value.invoke("cost"); });
  return sum;
}

function totalCharges() {
  var sum=0;
  myHistory.chargeHistory.each(function (value, index) { sum+=value.charge; });
  return sum;
}

function currentCharge() {
  //return totalCharges()-totalPayments();
  //return 23500;
}*/

function CatchEnter(e, func){
  if(window.event){
	var key = window.event.keyCode;
  } else if(e){
  var key=e.keyCode;
  }
  if(key==13){
	eval(func);
	return false;
  }else{
	return true;
  }
}

function KeyConvert(e){
if(typeof(farsi_keyboard)=='undefined') {
new Ajax.Request('js/farsi_keyboard.js', {
  method: 'get',
  onSuccess: function(transport) {
	eval(transport.responseText);
  },
  evalScripts:false ,
  asynchronous: false
});
}
farsi_keyboard.FKeyPress(e);
}

function validateWhois(strDomainName) {
  var extIdn = new Array('[idn]', '.idn', 'ایران');
  /*Domain.isIdn = false;
  extIdn.each(function(item) {Domain.isIdn = Domain.tld.indexOf(item)!=-1 ? true : Domain.isIdn;});*/
  Domain.isIdn = extIdn.any(function(item) { return Domain.tld.indexOf(item)!=-1; });

  var START='^', FINISH='$', ENNUMS='0-9', ENCHRS='a-zA-Z', FANUMS='۰۱۲۳۴۵۶۷۸۹', FACHRS='آاءأبپتثجچحخدذرزژسش٠صضطظعغفقکگلمنوؤهةیئ', ARNUMS='٠١٢٣٤٥٦٧٨٩', ARCHRS='كي'; //two extra arabic chars.
  var SPECIAL_CHRS={ZWJ: String.fromCharCode(0x200D), ZWNJ: String.fromCharCode(0x200C), MINUS: '-'}; //FF 2 fixed.
  if(Domain.isIdn) {
	if(strDomainName.length>30) {$('comments').update('طول نام دامنه بیش از حد مجاز است'); return false;}
	var RegEx_SubPattern='(['+FACHRS+ARCHRS+']['+FACHRS+FANUMS+ARCHRS+ARNUMS+ENNUMS;
	$H(SPECIAL_CHRS).values().each(function(item) {RegEx_SubPattern+='\\'+item;});
	RegEx_SubPattern+=']+['+FACHRS+ARCHRS+'])';
  }else {
	if(strDomainName.length>63) {$('comments').update('طول نام دامنه بیش از حد مجاز است'); return false;}
	var RegEx_SubPattern='(['+ENCHRS+ENNUMS+'][-'+ENCHRS+ENNUMS+']+['+ENCHRS+ENNUMS+'])';
  }

  var RegEx_wrap=new RegExp(START+'\\$'+RegEx_SubPattern+'\\$'+FINISH);
  if(RegEx_wrap.test(strDomainName)){
	cartUpdater(Domain.tld, '$'+strDomainName.match(RegEx_wrap)[1], 1); //Bypass Prefix: 'βρ.'/ '$'
	$('comments').update('دامین به سبد خریدتان اضافه شد');
    return false;
  }

  RegEx_wrap.compile(START+RegEx_SubPattern+FINISH);
  if(!RegEx_wrap.test(strDomainName)){
	$('comments').update('نام وارد شده معتبر نمی باشد');
	return false;  
  }

  return true;
}

function CheckWhois(){
	var strDomainName = $('domainName').value;
	if(strDomainName=="yourname"||strDomainName=="")
	  return false;
		  
	if(!validateWhois(strDomainName))
	  return false;
   		
	proxy(strDomainName);
	  return false;
}

function CheckHost(){
  var strHostName = $('hostName').value;
  var hostableDomains=new Array();
  for(var i=0; i<availableDomains.length; i++)
    hostableDomains[availableDomains.length-1-i]='.'+availableDomains[i]; //pay attension to the priority of '.ac.ir' to the '.ir'
  //var hostableDomains = ['.com', '.net', '.org', '.id.ir', '.org.ir', '.gov.ir', '.net.ir', '.co.ir', '.sch.ir', '.ac.ir', '.ir', '.info', '.biz', '.ws', '.eu'];
  //Bubble Sort Based On Comparison Function
  hostableDomains.sort(
	function(former, later) {
	  return later.indexOf(former); //.ir|.id.ir->3, .org|.org.ir->0, .gov.ir|.ir->-1
    }
  );
  var domainName = "";
  var ext = "";
  var flag = hostableDomains.any(
	function(tld) { 
	  if(strHostName.lastIndexOf(tld)!=-1 && strHostName.length==strHostName.lastIndexOf(tld)+tld.length) {
		domainName = strHostName.substr(0, strHostName.lastIndexOf(tld));
		ext = tld; Domain.tld = tld; //adds history
		return true;
	  } else 
	    return false;
	}
  );
  if(strHostName=="yourname.com"||!flag||domainName=="") {
	if(!flag) $('comments').update('سرنام وارد شده برای هاست پشتیبانی نگردیده است');
	else $('comments').update('مقدار خالی یا پیش فرض ارسال کرده اید');
	return false;
  }
  
  if(!validateWhois(domainName))
	return false;

  cartUpdater(Host.hst, $('hostName').value + ($('fwdName') ? '->' + $('fwdName').value : ''), 1);

  //Host.displayInput($('interaction'), $(Host.hst));
}

function UnHostedDomains(){
  var UnHostedDomains=new Array();
  var HostedDomains=new Array();
  var RealHostedDomains=new Array();
  for (var tld in myCart) {
  if(availableDomains.include(tld))
	for (var domain in myCart[tld]) { 
	  UnHostedDomains.push(domain+"."+tld);
	}
  else if(winHosting.include(tld)||linHosting.include(tld))
	for (var host in myCart[tld]) { 
	  HostedDomains.push(host);
	  RealHostedDomains.push(host);
	}
  else if(tld=="fwd")
	for (var host in myCart[tld]) { 
	  host=host.split("->")[0];
	  HostedDomains.push(host);
	}
  }
  HostedDomains.each( function(value) {UnHostedDomains=UnHostedDomains.without(value)} );
  return [UnHostedDomains, RealHostedDomains];
}

function checkName(stuff) {
  var type;
  switch (stuff) {
  case 'reseller':
	type=Reseller.rsl;
	break;
  case 'dbms':
	type=Dbms.dbs;
	break;
  case 'server':
	type=PlatForm.plt;
	break;
  case 'ssl':
	type=SecLayer.ssl;
	break;
  }
  var name=$(stuff+'Name').value;
  if(name=="yourname"||name=="")
	return false;
  
  Domain.tld = '.com'; //forces latin stuff names.
  if(!validateWhois(name))
	return false;

  cartUpdater(type, name, 1);
}

/*function RevivalableDHs() { //Revivalable Domain Hosts
  var RevivalableDHs=new Array();
  for (var i=0; i<user.domain_paymentHistory.length; i++) {
	RevivalableDHs.push(user.domain_paymentHistory[3]); //type element that is same as tld.
  }
  for (var i=0; i<user.host_paymentHistory.length; i++) {
    RevivalableDHs.push(user.host_paymentHistory[4]+(user.host_paymentHistory[10]==''?"->"+user.host_paymentHistory[10]:"")+"."+user.host_paymentHistory[3]);
  }
}*/

/*function CheckAutoLogin() {
  var strCookie = document.cookie;
  if(strCookie.indexOf("AutoLogin=Enabled=yes")!=-1){
	return true;
  }else{
	return false;
  }
}

function GetUName() {
  var strCookie = document.cookie;
  var iPosUName = strCookie.indexOf("UName=")+6;
  var strUName = strCookie.substring(iPosUName,strCookie.indexOf("&",iPosUName));
  if(strUName.indexOf("=")!=-1)
	return false;

  //document.getElementById("spnUName").innerHTML = strUName;
}*/

/*function Request(URL, Prmts, sendMethod) {
new Ajax.Request(encodeURIComponent(URL), {
  method: sendMethod,
  onLoading: function(transport) {
	Element.show('indicator')
  }, 
  onComplete: function(transport) {
	Element.hide('indicator')
  },
  onSuccess: function(transport) {
    var response=eval('('+transport.responseText+')');
	return response;
  },
  parameters: Prmts
});
}*/

/*function cartUpdater() {
new Ajax.Updater('cart', 'services.php', {
  onLoading: function(request) {
	Element.show('indicator')
  }, 
  onComplete: function(request) {
	Element.hide('indicator')
  }, 
  parameters: 'action=add&tld=' + Domain.tld + '&domain=' + encodeURIComponent($('domainName').value), 
  evalScripts:true, 
  asynchronous:true
});
}*/

var myCart=eval('('+myPattern+')');
var discount;
var totalPurchase=0;

function cartUpdater(tld, domain, period) {
//this function is for cartAdd and cartChange and probably cartRemove
  if (parseInt(period)==0 || period=="") {
	delete myCart[tld][domain];
  }else if (!isNaN(parseInt(period))) {
	myCart[tld][domain]=parseInt(period);
  }
  
  Renderer.renderCart();
  Renderer.renderHostSugg(tld);
  Renderer.renderControllers('controllers');
}

function isCartEmpty(myCart) {
for (var i in myCart) { //i is tld
  for (var j in myCart[i]) { //j is domain & myCart[i][j] is period
	return false;
  }
}
return true;
}

function displayCart() {
totalPurchase=0;discount=0;
if (isCartEmpty(myCart)) {
  var tempDiv=Builder.node('div', {}, 'سبد خرید تان در حال حاضر خالی است، برای قرار دادن کالا در آن یکی از آیتم های بالا را در آن بیاندازید و ادامه مراحل خرید را از پنل سمت راست دنبال کنید');
}else {
  var tempDiv=Builder.node('div', {}, '');
  for (var tld in myCart) {
	for (var domain in myCart[tld]) { 
	  var period=myCart[tld][domain];
		  //alert("myCart['"+tld+"']['"+domain+"']="+period);
		  tempDiv.appendChild(Domain.imgBox('images/cart/'+tld+'_cart.gif', '22px', '8px', tld+'_'+domain, 'cart-items'));
		  var titleBox=document.createElement('span');
		  titleBox.setAttribute('title', domain+'.'+tld);
		  titleBox.className='domain';
		  titleBox.appendChild(document.createTextNode((domain+'.'+tld)/*.substr(0, 7)*/));
		  tempDiv.appendChild(titleBox);
		  var tempInput=document.createElement('input');
		  tempInput.setAttribute('value', period);
		  tempInput.style.width='11px';
		  tempInput.setAttribute('tld', tld);
		  tempInput.setAttribute('domain', domain);
		  tempInput.onchange=function() { cartUpdater(this.getAttribute('tld'), this.getAttribute('domain'), this.value) };
		  tempDiv.appendChild(tempInput);
		  var priceBox=document.createElement('span');
		  priceBox.className='price';
		  discount=typeof user.discount[tld][period] == 'undefined' ? 0/100 : user.discount[tld][period];
		  priceBox.appendChild(document.createTextNode(Math.ceil(period*user.priceList[tld]*(1-discount))));
		  tempDiv.appendChild(priceBox);
		  totalPurchase=totalPurchase+Math.ceil(period*user.priceList[tld]*(1-discount));
		  var removeBox=Builder.node('img', {id:'removeItem', src:'images/x.gif', title:'حذف'});
		  /*var removeBox=document.createElement('img');
		  removeBox.setAttribute('src', 'images/x.gif');
		  removeBox.setAttribute('title', 'حذف');
		  removeBox.setAttribute('id', 'removeItem');*/
		  removeBox.setAttribute('tld', tld);
		  removeBox.setAttribute('domain', domain);
		  removeBox.onclick=function() { cartUpdater(this.getAttribute('tld'), this.getAttribute('domain'), 0) };
		  tempDiv.appendChild(removeBox);
		  
		  tempDiv.appendChild(Domain.divBox('', 'brclear'));
	}
  }
  tempDiv.style.textAlign='left';
  tempDiv.setAttribute('TPurchase', totalPurchase);
}
return tempDiv;
}

/*function removeItem(tld, domain) {
//this function is for cartRemove
  myCart[tld].without(myCart[tld][domain]);
  //myCart[tld][domain]=null;
  //myCart[tld].compact();
}*/

function generalUpdater(container, url, queryString) {
new Ajax.Updater(container, url, {
  onLoading: function(request) {
	Element.show('indicator')
  }, 
  onComplete: function(request) {
	Element.hide('indicator')
  }, 
  parameters: queryString, 
  evalScripts:true, 
  asynchronous:true
});
}

function instantDomain() {
  if (state=='Master'||!$('com')) {replaceContent('mb_2');  ourServices($('about_us_cen'), 'Domain Services');}
  var forgeStuff=$('instantDomainName').value.substr($('instantDomainName').value.lastIndexOf('.')+1);
  Renderer.renderInteraction('Domain Services', $(forgeStuff));
  $('domainName').value=$('instantDomainName').value.substring(0, $('instantDomainName').value.lastIndexOf('.'));;
}

function proxy(strDomainName) {
var Prmts='&domain='+strDomainName+'&tld='+Domain.tld;
new Ajax.Request('login.php?action=proxy', {
  method: 'get',
  onLoading: function(transport) {
    Element.show('indicator');
  }, 
  onComplete: function(transport) {
    Element.hide('indicator')
  },
  onSuccess: function(transport) {
	var Response=eval('('+transport.responseText+')');
    if (Response.status) {
      cartUpdater(Domain.tld, $('domainName').value, 1);
	  $('comments').update(Response.msg);//.setStyle({ background: '#dfd' });
	}else
      $('comments').update(Response.msg);//.setStyle({ background: '#fdd' });
  },
  onFailure: function(transport) {
	$('comments').update('HTTP '+transport.status+' '+transport.statusText);
  },
  parameters: Prmts
});
}

/*function loadJs(path) {
  var Js = document.createElement('script');
  Js.id = "graphic_scrollbar";
  Js.src = path;
  document.body.appendChild(Js);
}*/

/*function removeItem(element) {
new Ajax.Updater('cart', 'services.php', {
  onLoading:function(request){
    Element.show('indicator')
  },
  onComplete:function(request){
	Element.hide('indicator')
  }, 
  parameters:'action=remove&id=' + encodeURIComponent(element.id), 
  evalScripts:true, 
  asynchronous:true
});
}*/

function replaceContent(elementId) {
if(elementId=='mb_1'||elementId=='mb_2'||elementId=='mb_3'||elementId=='mb_4') {
  state='DrillDown';
  switch (elementId) {
  case 'mb_1':
    //
	var headline='&nbsp;about us';
	var links='<ul><li><a href="" onclick="generalUpdater(\'about_us_cen\', \'t.htm\'); return false;">تعرفه ها</a></li><li><a href="whatwedo.htm">نمونه کارها</a></li><li><a href="" onclick="generalUpdater(\'about_us_cen\', \'a.htm\'); return false;">درباره ما</a></li></ul>';
	var myBox='information';
	var drill='about_us_drill';
	var style='';
	break;
  case 'mb_2':
    //
	var headline='&nbsp;services';
	var links='<ul><li><a href="" onclick="ourServices($(\'about_us_cen\'), \'Domain Services\');Renderer.renderInteraction(\'Domain Services\', null); return false;">ثبت دامین</a></li><li><a href="" onclick="ourServices($(\'about_us_cen\'), \'Host Services\');Renderer.renderInteraction(\'Host Services\', null); return false;">فضای میزبانی</a></li><li><a href="" onclick="ourServices($(\'about_us_cen\'), \'Host Services\');Renderer.renderInteraction(\'Host Services\', $(\'fwd\')); return false;">فوروارد هاست</a></li><li><a href="" onclick="ourServices($(\'about_us_cen\'), \'Reseller Services\');Renderer.renderInteraction(\'Reseller Services\', null); return false;">فضای قابل تفکیک</a></li><li><a href="" onclick="ourServices($(\'about_us_cen\'), \'Dbms Services\');Renderer.renderInteraction(\'Dbms Services\', null); return false;">سرويس پايگاه داده</a></li><li><a href="" onclick="ourServices($(\'about_us_cen\'), \'Server Services\');Renderer.renderInteraction(\'Server Services\', null); return false;">اجاره سرور</a></li><li><a href="" onclick="ourServices($(\'about_us_cen\'), \'SSL Services\');Renderer.renderInteraction(\'SSL Services\', null); return false;">رويه ‌های حفاظت</a></li></ul>'; //note that $('fwd') can be evaluated to an element or be undefined. one that is important is that it is not null.
	var myBox='tire';
	var drill='services_drill';
	break;
  case 'mb_3':
    //
	var headline='&nbsp;solutions';
	var links='<ul><li><a href="http://www.azarandesign.com">طراحی وب سایت</a></li><li><a href="http://www.azaranportal.com">پورتال سازمانی</a></li><li>اتوماسیون اداری</li></ul>';
	var myBox='letter';
	var drill='solutions_drill';
	break;
  case 'mb_4':
    //
	var headline='&nbsp;contacts';
	var links='<ul><li><a href="" onclick="generalUpdater(\'about_us_cen\', \'support.htm\'); return false;">پشتیبانی فنی</a></li><li><a href="" onclick="generalUpdater(\'about_us_cen\', \'f.htm\'); return false;">سوالات متداول</a></li><li><a href="" onclick="generalUpdater(\'about_us_cen\', \'contactus.php\'); return false;">تماس با ما.</a></li></ul>';
	var myBox='envelop';
	var drill='contacts_drill';
	break;
  }
  //for eliminating IE bug that cause error when dragging stuff elements after drill page reload (when come back to main page from drill page and again go to the drill page)
  var childsCount=$('place-holder').childNodes.length;
  for(var i=0; i<childsCount; i++) {
	Element.remove($('place-holder').firstChild);
  }

  var about_us_drill=Domain.divBox(drill);
  about_us_drill.appendChild(Domain.divBox('', 'item_headline', headline));
  about_us_drill.appendChild(Domain.divBox('', 'links', links));
  
  var tempDiv=Domain.divBox();
  tempDiv.appendChild(Domain.divBox('abou_space', '', '&nbsp;'));
    var myBoxContent=Domain.divBox(myBox);
      var tempImg=Domain.imgBox('images/'+elementId+'.gif', '94px', '88px', elementId+'_drill', 'item'); //giving width and height in pixels in IE is very important when rendering results.
      /*var tempScript=document.createElement('script');
      tempScript.createTextNode("new Draggable('"+elementId"', {revert:true})");*/
    myBoxContent.appendChild(tempImg);
    /*myBoxContent.appendChild(tempScript);*/
  tempDiv.appendChild(myBoxContent);
  
  about_us_drill.appendChild(tempDiv);
  
  var about_us_con=Domain.divBox('about_us_con');
  about_us_con.appendChild(Domain.divBox('about_us_top'));
  about_us_con.appendChild(Domain.divBox('about_us_cen'));
  about_us_con.appendChild(Domain.divBox('about_us_bot'));
  
  $('place-holder').appendChild(about_us_drill);
  $('place-holder').appendChild(Domain.divBox('about_us_left'));
  $('place-holder').appendChild(about_us_con);
  $('place-holder').appendChild(Domain.divBox('about_us_right'));
  
  new Draggable(elementId+'_drill', {revert:true});
  //ourServices($('about_us_cen'), 'Domain Services');
}else {  //elementId is mb_1_drill or mb_2_drill or mb_3_drill or mb_4_drill
  state='Master';
  ////for eliminating IE bug that cause error when dragging stuff elements after drill page reload (when move to main page from drill page and come back to drill page)
  var childsCount=$('place-holder').childNodes.length;
  for(var i=0; i<childsCount; i++) {
	Element.remove($('place-holder').firstChild);
  }
  var elements=['about_us', 'services', 'solutions', 'cotacts'];
  var space=['abou_space', 'serv_space', 'solu_space', 'cont_space'];
  var headline=['&nbsp;about us', 'services', 'solutions', 'contacts&nbsp;'];
  var links=['<ul><li><a href="" onclick="replaceContent(\'mb_1\'); generalUpdater(\'about_us_cen\', \'t.htm\'); return false;">تعرفه ها</a></li><li><a href="whatwedo.htm" target="_blank">نمونه کارها</a></li><li><a href="" onclick="replaceContent(\'mb_1\'); generalUpdater(\'about_us_cen\', \'a.htm\'); return false;">درباره ما</a></li></ul>', '<ul><li><a href="" onclick="replaceContent(\'mb_2\');ourServices($(\'about_us_cen\'), \'Domain Services\');Renderer.renderInteraction(\'Domain Services\', null); return false;">ثبت دامین</a></li><li><a href="" onclick="replaceContent(\'mb_2\');ourServices($(\'about_us_cen\'), \'Host Services\');Renderer.renderInteraction(\'Host Services\', null); return false;">فضای میزبانی</a></li><li><a href="" onclick="replaceContent(\'mb_2\');ourServices($(\'about_us_cen\'), \'Domain Services\');Controllers.loginBox($(\'interaction\')); return false;">ورود</a></li></ul>', '<ul><li><a href="http://www.azarandesign.com">طراحی وب سایت</a></li><li><a href="http://www.azaranportal.com">پورتال سازمانی</a></li><li>اتوماسیون اداری</li></ul>', '<ul><li><a href="" onclick="replaceContent(\'mb_4\'); generalUpdater(\'about_us_cen\', \'support.htm\'); return false;">پشتیبانی فنی</a></li><li><a href="" onclick="replaceContent(\'mb_4\'); generalUpdater(\'about_us_cen\', \'f.htm\'); return false;">سوالات متداول</a></li><li><a href="" onclick="replaceContent(\'mb_4\'); generalUpdater(\'about_us_cen\', \'contactus.php\'); return false;">تماس با ما.</a></li></ul>']; //note that $('fwd') is undefined. one that is important is that it is not null.
  var myBox=['information', 'tire', 'letter', 'envelop'];
  
  for(var i=0; i<4; i++) {
  var myDiv=Domain.divBox(elements[i]);
  myDiv.appendChild(Domain.divBox('', 'item_headline', headline[i]));
  myDiv.appendChild(Domain.divBox('', 'links', links[i]));
  
  var tempDiv=Domain.divBox();
  tempDiv.appendChild(Domain.divBox(space[i], '', '&nbsp;'));
    var myBoxContent=Domain.divBox(myBox[i]);
      var tempImg=Domain.imgBox('images/mb_'+(i+1)+'.gif', '94px', '88px', 'mb_'+(i+1), 'item');
    myBoxContent.appendChild(tempImg);
  tempDiv.appendChild(myBoxContent);
  
  myDiv.appendChild(tempDiv);

  $('place-holder').appendChild(myDiv);
  new Draggable('mb_'+(i+1), {revert:true});
  }
}
}

function shopBox() {
  var shop=Domain.divBox('shop');
  var cart=Domain.divBox('cart');

  cart.appendChild(displayCart());
  shop.appendChild(cart);
  return shop;
}

function myStuff() {
  var shelf=Domain.divBox('', 'shelf flexcroll');
  for (var i=0; i<arguments.length; i++) {
	var stuff=Domain.imgBox('images/'+arguments[i]+'.gif', '', '', arguments[i], 'stuff');
	new Draggable(stuff, {revert:true});
    shelf.appendChild(Domain.divBox('').appendChild(stuff));
  }
  return shelf;
}

var Renderer = { //the general switch case function
  whichArea: "",
  renderShelf: function(myService) {
	switch (myService) {
    case 'Domain Services':
	  return myStuff('com', 'net', 'org', 'ir', 'info');
	  break;
    case 'Host Services':
	  return myStuff('wh3', 'wp1', 'lh1', 'lp1', 'fwd');
  	  break;
    case 'Reseller Services':
	  return myStuff('wr1', 'wr3', 'wr5', 'lr1', 'lr3');
  	  break;
    case 'Dbms Services':
	  return myStuff('mssql2k1', 'mssql2s1', 'mssql2e1', 'mysql1', 'oracle1'); //pgsql1
  	  break;
    case 'Server Services':
	  return myStuff('dell1', 'dell2', 'dell3', 'dell4', 'dell5');
  	  break;
    case 'SSL Services':
	  return myStuff('ssl1', 'ssl2', 'ssl3', 'ssl4', 'ssl5');
  	  break;
    }
  },
  renderCart: function() {
	//if cart exists in page, render its contents
	if ($('cart')) {
	  $('cart').update(''); 
	  $('cart').appendChild(displayCart());
	}
  },
  renderInteraction: function(myService, element) {
    if (myService=='Domain Services') {
	  if (element==null) Domain.displayGeneralInput($('interaction'));
	  else Domain.displayInput($('interaction'), element);
	} else if (myService=='Host Services') {
	  if (element==null) Host.displayGeneralInput($('interaction'));
	  else Host.displayInput($('interaction'), element);
	} else if (myService=='Forward Services') {
	  Host.displayInput($('interaction'), element);
	} else if (myService=='Reseller Services') {
	  if (element==null) Reseller.displayGeneralInput($('interaction'));
	  else Reseller.displayInput($('interaction'), element);
	} else if (myService=='Dbms Services') {
	  if (element==null) Dbms.displayGeneralInput($('interaction'));
	  else Dbms.displayInput($('interaction'), element);
	} else if (myService=='Server Services') {
	  if (element==null) PlatForm.displayGeneralInput($('interaction'));
	  else PlatForm.displayInput($('interaction'), element);
	} else if (myService=='SSL Services') {
	  if (element==null) SecLayer.displayGeneralInput($('interaction'));
	  else SecLayer.displayInput($('interaction'), element);
	}/* else if (myService=='Revival Services') {
	  Revival.displayInput($('interaction'), element);
	}*/
	//roundedCorners
  //Nifty("#interaction,#comments,#controllers");
  },
  renderControllers: function(Container) {
	Container=$(Container).update("");
	if (user.username=='') Controllers.checkAccount(Container);
	else {
	  Controllers.payment(Container);
	  Controllers.chargeAccount(Container);
	  if (user.type!='agency') Controllers.agencyReq(Container);
	  Controllers.view_port(Container);
	  Controllers.store(Container);
	  Controllers.clock_Btn(Container);
	  Controllers.logout_Btn(Container);
	}
  },
  renderAdminControllers: function(Container) {
	Container=$(Container).update("");
	Controllers.adminProfile_Btn(Container);
	Controllers.manageUsers_Btn(Container);
	if (user.type=='sales-man'||user.type=='admin') { Controllers.manageCharges_Btn(Container); Controllers.customLog_Btn(Container); }
	if (user.type=='ssl-provisioner'||user.type=='admin') Controllers.manageSSLPays_Btn(Container); //provisioner: تهیه کننده، تدارک دهنده
	if (user.type=='plat-proctor'||user.type=='admin') Controllers.managePlatPays_Btn(Container); //proctor: ناظر، متولی
	if (user.type=='dbms-superintendent'||user.type=='admin') Controllers.manageDbmsPays_Btn(Container); //superintendent: سرپرست، ناظر
	if (user.type=='reseller-supervisor'||user.type=='admin') Controllers.manageResellerPays_Btn(Container); //supervisor: ناظر، سرپرست
	if (user.type=='host-planer'||user.type=='admin') Controllers.manageHostPays_Btn(Container);
	if (user.type=='domain-registerar'||user.type=='admin') Controllers.manageDomainPays_Btn(Container);
	Controllers.clock_Btn(Container);
	//Controllers.customSQL_Inpt(Container);
	Controllers.logout_Btn(Container);
  },
  renderHostSugg: function() {
	//if element 'hostName' exists in page re-render its auto list
	if ($('hostName')) Renderer.renderInteraction('Host Services', $(Host.hst)); //Host.displayInput($('interaction'), $(Host.hst)) is only responsible for real host stuffs.
  },
  renderProfile: function(Container) {
	Container=$(Container).update("");/*username="+user.profile[1]+"<br/>membership_time="+user.profile[5]+"<br/>discount=*/
	var profileTable=profiler(user.profile, ['id', 'username', 'password', 'name', 'family', 'gender', 'email', 'workphone', 'homephone', 'workfax', 'city', 'country', 'mobile', 'workaddress', 'homeaddress', 'email2', 'membership_time', 'pobox', 'icnum', 'irnic-handle', 'status'], ['شناسه', 'نام کاربری', 'رمز عبور', 'نام', 'نشان', 'جنسیت', 'پست الکترونیک', 'تلفن محل کار', 'تلفن خانه', 'فکس محل کار', 'شهر', 'کشور', 'تلفن همراه', 'آدرس محل کار', 'آدرس منزل', 'پست الکترونیک دوم', 'زمان عضویت', 'کد پستی', 'کدملی', 'شناسه ایرنیک', 'وضعیت'], 'profileTable');
	profileTable=tableEnhancer(profileTable);
	Container.appendChild(profileTable);
	//return profileTable;
  },
  renderLogs: function(Container) {
	Container=$(Container).update("");
	if(user.logsHistory.size()==0) var logsTable=Builder.node('div', {className:'no-record'}, 'واقعه ای ثبت نگردیده است');
	else {
	  var logsTable=tableDrawer(user.logsHistory, ['id', 'user_id', 'log_time', 'user_ip', 'activity_log'], ['id', 'شناسه کاربری', 'زمان', 'آی پی', 'فعالیت'], 'logsTable');
	  logsTable=tableEnhancer(logsTable);
	  logsTable.style.direction='rtl';
	}
	Container.appendChild(logsTable);
  },
  renderCharges: function(Container) {
	Container=$(Container).update("");
	if(user.chargeHistory.size()==0) var chargesTable=Builder.node('div', {className:'no-record'}, 'شارژی موجود نمی باشد');
	else {
	  var chargesTable=tableDrawer(user.chargeHistory, ['id', 'user_id', 'charge', 'authority_code', 'charge_time', 'bank', 'status'], ['id', 'شناسه کاربری', 'شارژ', 'کد پیگیری', 'زمان شارژ', 'بانک', 'وضعیت'], 'chargesTable');
	  chargesTable=tableEnhancer(chargesTable);
	}
	Container.appendChild(chargesTable);
	//return chargesTable;
  },
  renderDomainPayments: function(Container) {
	Container=$(Container).update("");
	if(user.domain_paymentHistory.size()==0) var domainsTable=Builder.node('div', {className:'no-record'}, 'دامینی موجود نمی باشد');
	else {
	  var domainsTable=tableDrawer(user.domain_paymentHistory, ['id', 'user_id', 'period', 'type', 'name', 'payment_code', 'payment_time', 'unit_price', 'password', 'ns1', 'ns2', 'other_ns', 'status', 'expire_date'], ['id', 'شناسه کاربری', 'دوره', 'نوع', 'نام', 'کد پرداخت', 'زمان پرداخت', 'قیمت واحد', 'رمز', 'ns1', 'ns2', 'other_ns', 'وضعیت', 'انقضاء'], 'domainsTable');
	  domainsTable=tableEnhancer(domainsTable);
	}
	Container.appendChild(domainsTable);
	//return domainsTable;
  },
  renderHostPayments: function(Container) {
	Container=$(Container).update("");
	if(user.host_paymentHistory.size()==0) var hostsTable=Builder.node('div', {className:'no-record'}, 'هاستی موجود نمی باشد');
	else {
	  var hostsTable=tableDrawer(user.host_paymentHistory, ['id', 'user_id', 'period', 'type', 'name', 'payment_code', 'payment_time', 'unit_price', 'ftp_user', 'ftp_pass', 'redirect_to', 'status', 'expire_date'], ['id', 'شناسه کاربری', 'دوره', 'نوع', 'نام', 'کد پرداخت', 'زمان پرداخت', 'قیمت واحد', 'ftp user', 'ftp pass', 'ارجاع', 'وضعیت', 'انقضاء'], 'hostsTable');
	  hostsTable=tableEnhancer(hostsTable);
	}
	Container.appendChild(hostsTable);
	//return hostsTable;
  },
  renderResellerPayments: function(Container) {
	Container=$(Container).update("");
	if(user.reseller_paymentHistory.size()==0) var resellersTable=Builder.node('div', {className:'no-record'}, 'خدمات نمايندگي اي موجود نمی باشد');
	else {
	  var resellersTable=tableDrawer(user.reseller_paymentHistory, ['id', 'user_id', 'period', 'type', 'name', 'payment_code', 'payment_time', 'unit_price', 'resell_user', 'resell_pass', 'ip', 'port', 'status', 'expire_date'], ['id', 'شناسه کاربری', 'دوره', 'نوع', 'نام', 'کد پرداخت', 'زمان پرداخت', 'قیمت واحد', 'شناسه نماينده', 'رمز نماينده', 'آدرس آي-پي', 'درگاه', 'وضعیت', 'انقضاء'], 'resellersTable');
	  resellersTable=tableEnhancer(resellersTable);
	}
	Container.appendChild(resellersTable);
	//return resellersTable;
  },
  renderDbmsPayments: function(Container) {
	Container=$(Container).update("");
	if(user.dbms_paymentHistory.size()==0) var dbmsesTable=Builder.node('div', {className:'no-record'}, 'سرويس پايگاه داده اي موجود نمی باشد');
	else {
	  var dbmsesTable=tableDrawer(user.dbms_paymentHistory, ['id', 'user_id', 'period', 'type', 'name', 'payment_code', 'payment_time', 'unit_price', 'dbms_user', 'dbms_pass', 'ip', 'port', 'status', 'expire_date'], ['id', 'شناسه کاربری', 'دوره', 'نوع', 'نام', 'کد پرداخت', 'زمان پرداخت', 'قیمت واحد', 'نام كاربري پايگاه داده', 'كلمه عبور پايگاه داده', 'آدرس آي-پي', 'درگاه', 'وضعیت', 'انقضاء'], 'dbmsesTable');
	  dbmsesTable=tableEnhancer(dbmsesTable);
	}
	Container.appendChild(dbmsesTable);
	//return dbmsesTable;
  },
  renderPlatPayments: function(Container) {
	Container=$(Container).update("");
	if(user.server_paymentHistory.size()==0) var platsTable=Builder.node('div', {className:'no-record'}, 'سرور اختصاصی اي موجود نمی باشد');
	else {
	  var platsTable=tableDrawer(user.server_paymentHistory, ['id', 'user_id', 'period', 'type', 'name', 'payment_code', 'payment_time', 'unit_price', 'server_user', 'server_pass', 'ip', 'port', 'status', 'expire_date'], ['id', 'شناسه کاربری', 'دوره', 'نوع', 'نام', 'کد پرداخت', 'زمان پرداخت', 'قیمت واحد', 'شناسه کاربر سرور', 'رمز سرور', 'آدرس آي-پي', 'درگاه', 'وضعیت', 'انقضاء'], 'platsTable');
	  platsTable=tableEnhancer(platsTable);
	}
	Container.appendChild(platsTable);
	//return platsTable;
  },
  renderSSLPayments: function(Container) {
	Container=$(Container).update("");
	if(user.ssl_paymentHistory.size()==0) var sslsTable=Builder.node('div', {className:'no-record'}, 'لایه امنیتی اي موجود نمی باشد');
	else {
	  var sslsTable=tableDrawer(user.ssl_paymentHistory, ['id', 'user_id', 'period', 'type', 'name', 'payment_code', 'payment_time', 'unit_price', 'cn', 'site', 'ip', 'port', 'status', 'expire_date'], ['id', 'شناسه کاربری', 'دوره', 'نوع', 'نام', 'کد پرداخت', 'زمان پرداخت', 'قیمت واحد', 'نام رایج', 'سایت[های] هدف', 'آدرس آي-پي', 'درگاه', 'وضعیت', 'انقضاء'], 'sslsTable');
	  sslsTable=tableEnhancer(sslsTable);
	}
	Container.appendChild(sslsTable);
	//return sslsTable;
  },
  rendertTansferOut: function(Container) {
	Container=$(Container).update("");
	if(user.transferOut.size()==0) var transOutTable=Builder.node('div', {className:'no-record'}, 'شيء اي براي انتقال (فروش) وجود ندارد');
	else {
	  var transOutTable=tableDrawer(user.transferOut, ['id', 'type', 'name', 'pure_price', 'profit', 'buyer', 'from_date', 'to_date'],  ['id', 'نوع شيء', 'نام شيء', 'قیمت تمام شده', 'سود', 'ليست خريداران', 'از تاريخ', 'تا تاريخ'],'transOutTable');
	  transOutTable=tableEnhancer(transOutTable);
	}
	Container.appendChild(transOutTable);
	//return transOutTable;
  },
  rendertTansferIn: function(Container) {
	Container=$(Container).update("");
	if(user.transferIn.size()==0) var transInTable=Builder.node('div', {className:'no-record'}, 'شيء اي براي انتقال (خريد) وجود ندارد');
	else {
	  var transInTable=tableDrawer(user.transferIn, ['id', 'user_id', 'type', 'name', 'pseudo_price', 'from_date', 'to_date'],  ['id', 'فروشنده', 'نوع شيء', 'نام شيء', 'قیمت فروش', 'از تاريخ', 'تا تاريخ'],'transInTable');
	  transInTable=tableEnhancer(transInTable);
	}
	Container.appendChild(transInTable);
	//return transInTable;
  }
}

function profiler(tabularData, headings, headings_context, id) {
  var table,tbody,thead,tfoot,th,tr,td;
  var editables=[2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19];
  //var editableContents=[tabularData[2], tabularData[4], tabularData[5], tabularData[7]];
  table=Builder.node('table', {/*id:id,*/className:'mytablekit',cellpadding:'2',cellspacing:'0',border:'0',align:'center'});
  if(table.firstChild) Element.remove(table.firstChild); //for removing tbody
  //table header
  thead=Builder.node('thead');
    tr=Builder.node('tr');
	for(var i=0; i<editables.length; i++) {
	  th=Builder.node('th', {id:headings[editables[i]]}, headings_context[editables[i]]); //column header cell with id equal to database field name.
	  tr.appendChild(th);
	}
	thead.appendChild(tr);
  table.appendChild(thead);
  //table footer
  tfoot=Builder.node('tfoot');
    tr=Builder.node('tr');
	for(var i=0; i<editables.length; i++) {
	  td=Builder.node('td', headings_context[editables[i]]);
	  tr.appendChild(td);
	}
	tfoot.appendChild(tr);
  table.appendChild(tfoot);
  //table body
  tbody=Builder.node('tbody');
    tr=Builder.node('tr', {id:tabularData[0]}); //tr with id equal to database record id.
    for(var i=0; i<editables.length; i++) {
	  td=Builder.node('td', tabularData[editables[i]]);
	  tr.appendChild(td);
	}
	tbody.appendChild(tr);

  table.appendChild(tbody);
  return table;
}

var myDiscnt;
var discntId;

function discntPanel(e) {
var tempDiv=Builder.node('div', {id:'discntPanel'});
var tempSelect=Builder.node('select', {id:'tldChanger', onchange:'tldChange(this.value)'});
for (var tld in myDiscnt) {
  tempSelect.appendChild(Builder.node('option', {value:tld}, tld));
}
tempSelect.selectedIndex=0; //initial state of tempSelect.
tempDiv.appendChild(tempSelect);
tempDiv.appendChild(Builder.node('br'));

for (var tld in myDiscnt) {
var tempTable=Builder.node('table', {id:'discntPanel_'+tld, style:'display:none', cellspacing:0, cellpadding:0}); //in IE this line creates <table> and <tbody> DOM Elements but in Firefox only <table> tag.
var tempTableBody= (tempTable.firstChild) ? tempTable.firstChild : Builder.node('tbody'); //this is a solution between deferences of IE and Firefox

var tempTableHead= Builder.node('thead');
var headRow=Builder.node('tr', {}, [Builder.node('th', {className:'noedit'}, 'دوره'), Builder.node('th', {className:'noedit'}, 'درصد')]);
  tempTableHead.appendChild(headRow);
  tempTable.appendChild(tempTableHead);
  
  var periodInput=Builder.node('input', {id:'periodInput_'+tld, value:5, className:'miniInput noedit'});
  var discountInput=document.createElement('input');
  discountInput.setAttribute('id', 'discountInput_'+tld);
  discountInput.setAttribute('myAttr', tld);
  discountInput.setAttribute('value', 1);
  discountInput.className='miniInput noedit';
  discountInput.onkeydown=function(e) {
	if (!CatchEnter(e, '')) { // If Enter key is pressed
	  myHandler(this.getAttribute('myAttr'));
	}
  }
  //Builder.node('input', {id:'discountInput_'+tld, onkeydown:'myHandler(\''+tld+'\')', value:5, class:'miniInput'});
  var newRow=Builder.node('tr', {}, [Builder.node('td', {}, [periodInput]), Builder.node('td', {}, [discountInput])]);
  tempTableBody.appendChild(newRow);
  
  for (var period in myDiscnt[tld]) {  
      var discount=myDiscnt[tld][period];
      //alert("myDiscnt["+tld+"]["+period+"]="+discount);
	  var miniInput=Builder.node('input', {id:'', onchange:'miniHandler(\''+tld+'\', '+period+', this.value)', value:discount, className:'miniInput noedit'});
	  //miniInput.onchange=miniHandler(tld, period);
	  var periodRow=Builder.node('tr', {}, [Builder.node('td', {}, period), Builder.node('td', {}, [miniInput])]);
	  tempTableBody.appendChild(periodRow);
  }
tempTable.appendChild(tempTableBody);
tempDiv.appendChild(tempTable);
};

tempDiv.appendChild(Builder.node('br'));
var okInput=Builder.node('button', {onclick:"discntUpdater("+discntId+",JSONString(myDiscnt)); $('calBarDatePickerContainer').style.display='none'"}, "Ok");
var cancelInput=Builder.node('button', {onclick:"$('calBarDatePickerContainer').style.display='none'"}, "Can");
tempDiv.appendChild(okInput);
tempDiv.appendChild(cancelInput);

$('DPanel').update('');
//if ($('DPanel').firstChild) alert('yes'); else alert('no');
$('DPanel').appendChild(tempDiv);
if (e!==null) {
  e = (e) ? e : window.event;
  $('calBarDatePickerContainer').style.display="inline"; $('calBarDatePickerContainer').style.top=e.clientY+"px"; $('calBarDatePickerContainer').style.left=e.clientX+"px";
}
tldChange(tempSelect.options[tempSelect.selectedIndex].value); //initial loading of discntPanel.
}

function tldChange(tldValue) {
for (var tld in myDiscnt) {
  $('discntPanel_'+tld).style.display='none';
}
$('discntPanel_'+tldValue).style.display='inline';
$('tldChanger').value=tldValue;
}

function discntUpdater(id, discntStr) {
	var Prmts='&id='+id+'&field=discount&value='+discntStr;
	new Ajax.Request('login.php?action=edit_profile', {
      method: 'get',
      onLoading: function(transport) {
    	Element.show('indicator');
      }, 
      onComplete: function(transport) {
    	Element.hide('indicator')
      },
      onSuccess: function(transport) {
		$('discountRow_'+id).setAttribute('value', transport.responseText);
      },
      parameters: Prmts
    });
}

function myHandler(tld) {
  myDiscnt[tld][$('periodInput_'+tld).value]=parseFloat($('discountInput_'+tld).value);
  //alert("myDiscnt["+tld+"]["+$('periodInput_'+tld).value+"]="+$('discountInput_'+tld).value);
  discntPanel(null);
  tldChange(tld);
}

function miniHandler(tld, period, discount) {
  if (discount=='') delete myDiscnt[tld][period];
  else myDiscnt[tld][period]=parseFloat(discount);
  //alert("myDiscnt["+tld+"]["+period+"]="+discount);
  discntPanel(null);
  tldChange(tld);
}

function JSONString(JsonOBJ) { //Please note the comments.
  var JSONStr='{';
  for (var i in eval('('+myPattern+')')) {
    JSONStr += '"' + i + '":{';
	for (var j in JsonOBJ[i]) {
	  JSONStr += '"' + j + '":' + JsonOBJ[i][j];
	  JSONStr+=','; //'}, '
	}
	JSONStr=(JSONStr.substr(JSONStr.length-1)==',') ? JSONStr.substr(0, JSONStr.length-1) : JSONStr; //JSONStr.length-2
	JSONStr+='},';
  }
  JSONStr=(JSONStr.substr(JSONStr.length-1)==',') ? JSONStr.substr(0, JSONStr.length-1) : JSONStr;
  JSONStr+='}';
  
  //if(JSONStr=='{}') JSONStr=myPattern;
  return JSONStr;
}

function tableDrawer(tabularData, headings, headings_context, id) { //tabularData is 2DimentionalArray
  var table,tbody,thead,tfoot,th,tr,td,cell_className;
  var span,discnt_Btn;
  table=Builder.node('table', {/*id:id,width:'431px',height:'250px',*/className:'mytablekit',cellpadding:'2',cellspacing:'0',border:'0',align:'center'}); //width & height are not required.
  if(table.firstChild) Element.remove(table.firstChild); //for removing tbody
  //table header
  thead=Builder.node('thead');
    tr=Builder.node('tr');
	for(var i=1; i<headings.length; i++) {
	  if (presidium.include(user.type)&&headings[i]=='status') cell_className='';
	  else if (user.type=='admin'&&headings[i]=='type'&&Global.usingTable=='user') cell_className='';
	  else if ((user.type=='admin'||user.type=='host-planer')&&(headings[i]=='type'||headings[i]=='unit_price')&&Global.usingTable=='host_payments') cell_className=''; //host upgrade.
	  else if ((user.type=='admin'||user.type=='reseller-supervisor')&&(headings[i]=='type'||headings[i]=='unit_price')&&Global.usingTable=='reseller_payments') cell_className=''; //reseller upgrade.
	  else if ((user.type=='admin'||user.type=='dbms-superintendent')&&(headings[i]=='type'||headings[i]=='unit_price')&&Global.usingTable=='dbms_payments') cell_className=''; //dbms upgrade.
	  else if ((user.type=='admin'||user.type=='plat-proctor')&&(headings[i]=='type'||headings[i]=='unit_price')&&Global.usingTable=='server_payments') cell_className=''; //server upgrade.
	  else if ((user.type=='admin'||user.type=='ssl-provisioner')&&(headings[i]=='type'||headings[i]=='unit_price')&&Global.usingTable=='ssl_payments') cell_className=''; //ssl upgrade.
	  else if ((user.type=='admin'||user.type=='domain-registerar')&&(headings[i]=='payment_time')&&Global.usingTable=='domain_payments') cell_className='';
	  else if(headings[i]=='ns1'||headings[i]=='ns2') cell_className='';//||headings[i]=='password'||headings[i]=='name'||headings[i]=='family'||headings[i]=='email'
	  else if(headings[i]=='redirect_to') cell_className='';
	  else if(headings[i]=='ip'||headings[i]=='port') cell_className='';
	  else cell_className='noedit';
	  //if(headings[i]=='discount') ...
	  if(headings[i]=='charge_time'||headings[i]=='payment_time'||headings[i]=='membership_time') cell_className+=' sortfirstdesc';
	  th=Builder.node('th', {className:cell_className, id:headings[i]}, headings_context[i]); //column header cell with id equal to database field name.
	  tr.appendChild(th);
	}
	  if(!['logsTable', 'chargesTable', 'transOutTable', 'transInTable', 'manageTable'].include(id)) {
	  th=Builder.node('th', {className:'noedit'}, 'تمديد');
	  tr.appendChild(th);
	  th=Builder.node('th', {className:'noedit'}, 'ارتقاء');
	  tr.appendChild(th);
	  }else if(id=='transOutTable'||id=='transInTable') {
	  th=Builder.node('th', {className:'noedit'}, 'انتقال');
	  tr.appendChild(th);
	  th=Builder.node('th', {className:'noedit'}, 'حذف');
	  tr.appendChild(th);
	  }else if(id=='manageTable') {
	  th=Builder.node('th', {className:'noedit'}, 'حذف');
	  tr.appendChild(th);
	  }
	thead.appendChild(tr);
  table.appendChild(thead);
  //table footer
  tfoot=Builder.node('tfoot');
    tr=Builder.node('tr');
	for(var i=1; i<headings.length; i++) {
	  td=Builder.node('td', headings_context[i]);
	  tr.appendChild(td);
	}
	  if(!['logsTable', 'chargesTable', 'manageTable'].include(id)) {
	  td=Builder.node('td', '');
	  tr.appendChild(td);
	  td=Builder.node('td', '');
	  tr.appendChild(td);
	  }else if(id=='manageTable') {
	  td=Builder.node('td', '');
	  tr.appendChild(td);
	  }
	tfoot.appendChild(tr);
  table.appendChild(tfoot);
  //table body
  tbody=Builder.node('tbody');
    //Search Row
    if (presidium.include(user.type)) {
	tr=Builder.node('tr');
	for(var i=1; i<headings.length; i++) {
	  var searchInput=Builder.node('input', {name:headings[i], className:'miniInput noedit', onChange:'customReports[\''+headings[i]+'\']=this.value'}, '');
	  td=Builder.node('td', {className:'noedit'}, [searchInput]);
	  tr.appendChild(td);
	}
	  //var searchBtn=Builder.node('input', {type:'button', className:'noedit', value:'»', onClick:'customReport()'}, '');
	  var searchBtn=Builder.node('img', {title:'جستجو', src:'images/search.gif'/*, width:'14px', height:'14px', className:'noedit'*/, onClick:'customReport()'});
	  td=Builder.node('td', {className:'noedit'}, [searchBtn]);
	  tr.appendChild(td);
	tbody.appendChild(tr);
	}
  for(var i=0; i<tabularData.length; i++) {
	tr=Builder.node('tr', {id:tabularData[i][0]}); //tr with id equal to database record id.
	tr.onmouseover=function() {
	  if(!['url(images/row-select.gif)', 'url("images/row-select.gif")'].include(this.style.backgroundImage)) this.style.backgroundImage='url(images/row-hover.gif)'; //FF 3.6 fix
	}
	tr.onmouseout=function() {
	  if(!['url(images/row-select.gif)', 'url("images/row-select.gif")'].include(this.style.backgroundImage)) this.style.backgroundImage='none';
	}
	tr.ondblclick=function() {
	  this.style.backgroundImage=['', 'none', 'url(images/row-hover.gif)', 'url("images/row-hover.gif")'].include(this.style.backgroundImage)? 'url(images/row-select.gif)': 'none';
	};
	if(!presidium.include(user.type)) //notify expiration
	tr.style.color=notifyExpiration(tabularData[i][tabularData[i].length-1]); //only for Host/Domain Payments Panels tabularData[i][tabularData[i].length-1] has responsible meanning of expire_date.in Account Charges Panel it has no meanning.
	
	for(var j=1; j<tabularData[i].length; j++) {
	  if(tabularData[i][tabularData[i].length-2]=='accepted') cell_className='noedit';
	  else cell_className='';
	  if(headings[j]=='user_id') {
	    viewUser=Domain.imgBox('images/user.gif', '16px', '16px', '', '');
		viewUser.setAttribute('userId', tabularData[i][j]);
		viewUser.onclick=function() {
	      Global.reverse_action='edit_profile';
		  Global.title='مدیریت کاربران';
		  Global.usingTable='user';
		  runSQLResult.postFunction=function() {manageEntity($("about_us_cen"), Global.title, Global.reverse_action)};
	      runSQL('SELECT * FROM `user` WHERE id='+this.getAttribute('userId'), '', '');
	    }
		viewUser.onmouseover=function() {
		  if(!this.getAttribute('title')) { //this.getAttribute('title')==null || this.getAttribute('title')=='' in respect to FF and IE
		  var imgEleman=this;
		  new Ajax.Request('login.php', {
		    method: 'get',
		    onSuccess: function(transport) {
		      var Response=eval('('+transport.responseText+')');
		  	  imgEleman.setAttribute('title', Response.msg);
		    },
		    parameters: 'action=getUserInfo&id='+this.getAttribute('userId'),
		    asynchronous: true //or false
		  });
		  }
		}
		td=Builder.node('td', {className:cell_className}, [viewUser]);
	  }else if(headings[j]=='discount') { //if field is discount
		discntSpan=Builder.node('span', {className:'discntSpan'});
		discntSpan.appendChild(Builder.node('div'));
		discnt_Btn=Domain.imgBox('images/no-fire.gif', '13px', '16px', '', '');
		discnt_Btn.setAttribute('value',tabularData[i][j]);
		discnt_Btn.setAttribute('id', 'discountRow_'+tabularData[i][0]);
		discnt_Btn.setAttribute('myAttr', tabularData[i][0]);
		discnt_Btn.onmouseover=function() {
		  this.src='images/fire.gif';
		}
		discnt_Btn.onmouseout=function() {
		  this.src='images/no-fire.gif';
		}
		discnt_Btn.onclick=function(e) {
		  myDiscnt=eval('('+this.getAttribute('value')+')');
		  discntId=this.getAttribute('myAttr');
		  discntPanel(e);
		}
		td=Builder.node('td', {className:cell_className}, [discntSpan, discnt_Btn]);
	  }else if((headings[j]=='workaddress'||headings[j]=='homeaddress')&&tabularData[i][j].length>30)
	    td=Builder.node('td', {className:cell_className, title: tabularData[i][j]}, tabularData[i][j].toString().substr(0, 30)+'...');
	  else if(headings[j]=='redirect_to'&&tabularData[i][3]!='fwd') {
	    cell_className='noedit';
		td=Builder.node('td', {className:cell_className}, tabularData[i][j]);
	  }else if(headings[j]=='profit') {
		profitInput=Builder.node('input', {name:'profit', className:'miniInput', value:tabularData[i][j]/*0*/, onblur:'this.value=parseInt(this.value);'}, '');
		profitInput.onmouseover=function() {
		  if($(profitInput).title=='')
		  new Ajax.Request('login.php?action=get-trans-tax', {
          onSuccess: function(transport) { $A(document.getElementsByName('profit')).each(function(node) {node.title=transport.responseText;}) }, 
		  asynchronous: false
          });
		}
		td=Builder.node('td', {className:'noedit'}, [profitInput]);
	  }else if(headings[j]=='buyer') {
		buyerInput=Builder.node('input', {name:'buyerInput', value:tabularData[i][j]/*'* '*/, onblur:''}, '');
		var autoList=Builder.node('div', {className:'autoCompleteMenu'});
		new Ajax.Autocompleter(buyerInput, autoList, 'login.php', 
		  {method:'get', paramName:'', frequency:1.4, tokens:['+','-', ' '], minChars:3, parameters:'action=userSugg', indicator:'indicator'}
		);
		td=Builder.node('td', {className:'noedit'}, [buyerInput, autoList]);
	  }else
	    td=Builder.node('td', {className:cell_className}, tabularData[i][j]);
	  tr.appendChild(td);
	}
	  //if(user.type!='admin'&&user.type!='sales-man'&&user.type!='domain-registerar'&&user.type!='host-planer') {
	  if(!['logsTable', 'chargesTable', 'transOutTable', 'transInTable', 'manageTable'].include(id)) {
	  td=Builder.node('td', revivableLink(tabularData[i][tabularData[i].length-1], [tabularData[i][3], tabularData[i][4], tabularData[i][10]])); //only for fwd, tabularData[i][10] has responsible meanning.
	  tr.appendChild(td);
	  td=Builder.node('td', upgradeBox(tabularData[i][tabularData[i].length-1], tabularData[i][3], tabularData[i][2], tabularData[i][7], tabularData[i][0])); //expire_date, type, period, unit_price, id
	  tr.appendChild(td);
	  }else if(id=='transOutTable'||id=='transInTable') {
	  td=Builder.node('td', transBtn(tabularData[i][0], id, tabularData[i][4])); //transfer-id, trans-type, pseudo_price->only for transIn have proper meaning
	  tr.appendChild(td);
	    delTrans=Builder.node('img', {src:'images/exist.gif', title:'حذف'}, '');
	    delTrans.onclick=function() {
		  if(confirm('Confirm Delete?')) generalUpdater(this.parentNode, 'login.php?action=delTrans', '&id='+this.parentNode.parentNode.id+'&transType='+id);
	    }
	  td=Builder.node('td', [delTrans]);
	  tr.appendChild(td);
	  //}
	  }else if(id=='manageTable') {
	  td=Builder.node('td');
	    deleteUser=Domain.imgBox('images/exist.gif', '16px', '16px', '', '');
		deleteUser.setAttribute('userId', tabularData[i][0]);
		deleteUser.setAttribute('title', 'حذف');
		deleteUser.onclick=function() {
	      if(confirm('Confirm Delete?')) deleteSQL('DELETE FROM `'+Global.usingTable+'` WHERE id='+this.getAttribute('userId'), this);
	    }
	  td.appendChild(deleteUser);
	  tr.appendChild(td);
	  }
	tbody.appendChild(tr);
  }
  table.appendChild(tbody);
  return table;
}

function notifyExpiration(expire_date) {
  var cTimeParts=user.currentTime.split('/');
  var eDateParts=expire_date.split('/');
  var cTime=new Date(cTimeParts[2], cTimeParts[1]-1, cTimeParts[0]); //current time
  var eDate=new Date(eDateParts[2], eDateParts[1]-1, eDateParts[0]); //expire date
  if(eDateParts[1]-1==0) var nDate=new Date(eDateParts[2]-1, 11, eDateParts[0]); //notify date that is expire date-1 month
  else var nDate=new Date(eDateParts[2], eDateParts[1]-2, eDateParts[0]);
  
  if(eDate<cTime) return 'gray';
  else if(nDate<=cTime) return 'red';
  else return 'black';
}

function revivableLink(expire_date, inputArray) {
  var cTimeParts=user.currentTime.split('/');
  var cTime=new Date(cTimeParts[2], cTimeParts[1]-1, cTimeParts[0]); //current time
  var eDateParts=expire_date.split('/'), eDate;
  
  //irnic reserve-renew extra-charge handler. [sixty-days]
  eDate=new Date(eDateParts[2], eDateParts[1]-1, eDateParts[0]);
  var irnicy=['ir', 'ایران', 'ايران'].any(function(item) { return inputArray[0].indexOf(item)!=-1; });
  if(irnicy && eDate<cTime && eDate.setDate(eDate.getDate()+60)>=cTime)
	return [Builder.node('a', {href:'ks://irnic-renew-reserved-domain?tld='+inputArray[0]+'&item='+inputArray[1], target:'_blank'}, 'تمدید')];
  
  //other cases. [twenty-days]
  eDate=new Date(eDateParts[2], eDateParts[1]-1, eDateParts[0]); //do copy, not ref to-it.
  if(eDate.setDate(eDate.getDate()+20)>=cTime) {
    //var onclickHandle='ourServices($("about_us_cen"), "Domain Services");';
	if(availableDomains.include(inputArray[0])) {
	  inputArray[1]=inputArray[1];
	}else if(inputArray[0]!='fwd') {
	  inputArray[1]=inputArray[1];
	}else {
	  inputArray[1]=inputArray[1]+'->'+inputArray[2];
	}
	//onclickHandle+='cartUpdater('+inputArray[0]+', '+inputArray[1]+', 1);';
	//var onclickHandle='alert("hello")';
	myLink=document.createElement('a');
	myLink.setAttribute('href', '#');
	myLink.onclick=function() {
	  alert('تمدید به سبد خرید اضافه شد');
	  //ourServices($("about_us_cen"), "Domain Services");
	  cartUpdater(inputArray[0], inputArray[1], 1);
	  return false;
	}
	myLink.appendChild(document.createTextNode('تمدید'));
	return [myLink];
	//return [Builder.node('a', {href:'#', onclick:'alert()'}, 'تمدید')];
  }
}

function upgradeBox(expire_date, type, period, unit_price, id) {
  var cTimeParts=user.currentTime.split('/');
  var eDateParts=expire_date.split('/');
  var cTime=new Date(cTimeParts[2], cTimeParts[1]-1, cTimeParts[0]); //current time
  var eDate=new Date(eDateParts[2], eDateParts[1]-1, eDateParts[0]); //expire date
  
  if(eDate>=cTime) {
    var SelectionBox=Builder.node('select', {id:'', style:'width: 60px;'}, [Builder.node('option', {}, 'گزينه ها')]);
	var flag=false;
	var myArray=new Array(winHosting, linHosting, winReseller, linReseller, DbmsSrvs, ServerSrvs, SSLSrvs);
	for(var i=0; i<myArray.length; i++) {
	  if(myArray[i].include(type)) {
	  flag=true;
	  for(var j=0; j<myArray[i].length; j++) {
	  var Bate=(user.discount[myArray[i][j]][period])?user.discount[myArray[i][j]][period]:0;
	  //var Bate=typeof user.discount[myArray[i][j]][period]=='undefined' ? 0 : user.discount[myArray[i][j]][period];
	  var basePrice=user.priceList[myArray[i][j]]*(1-Bate); //قيمت پايه سرويس باتوجه به دوره براي كاربر
	  if(unit_price<basePrice)
	    SelectionBox.appendChild(Builder.node('option', {value:myArray[i][j]}, myArray[i][j]));
	  }
	  }
    }
	SelectionBox.selectedIndex=0;
    SelectionBox.onfocus=function() {
	  var constraint=(user.type=='agency')?2:1;
	  for(var i=1; i<this.options.length; i++) {
	    var Bate=(user.discount[this.options[i].value][period])?user.discount[this.options[i].value][period]:0;
		var basePrice=user.priceList[this.options[i].value]*(1-Bate);
		if(user.currentCharge<period*(constraint*basePrice-unit_price)) {
		  this.options[i].disabled=true;
		  this.options[i].style.color='gray';
		}else {
		  this.options[i].disabled=false;
		  this.options[i].style.color='black';
		}
	  }
	}
	SelectionBox.onchange=function() { //IE bug in rendering disabled options of select element.
	  if(this.options[this.selectedIndex].disabled) this.selectedIndex=0;
	}
	var upgradeBtn=Builder.node('img', {src:'images/upgrade.gif', title:'ارتقاء', style:'vertical-align: bottom;'}, '');
	upgradeBtn.onclick=function() {
	  var SBox=this.previousSibling;
	  if(SBox.selectedIndex==0) return false;
	  //var SBoxValue=SBox.options[SBox.selectedIndex].text;
	  var row=this.parentNode.parentNode.parentNode;
	  //activeObject: شيء قابل ارتقاء
	  var Prmts='action=upgrade&action-table='+activeObject+'&rowId='+row.id+'&upgrade_type='+SBox.value+'';

	  //var basePrice=user.priceList[SBox.value]*(1-(user.discount[SBox.value]&&user.discount[SBox.value][period])?user.discount[SBox.value][period]:0);
	  new Ajax.Request('login.php', {
        method: 'get',
        onLoading: function(transport) {
    	  Element.show('indicator');
        }, 
        onComplete: function(transport) {
    	  Element.hide('indicator')
        },
        onSuccess: function(transport) {
          var Response=eval('('+transport.responseText+')');
		  if(Response.status) {
		    //user.currentCharge=user.currentCharge-period*(basePrice-unit_price);
			//Data Structure Refresh
			user.currentCharge=Response.currentCharge;
			for(var i in user[activeObject]) 
			  if(user[activeObject][i][0]==id/*&&user[activeObject][i][3]==type*/) {
			    user[activeObject][i][3]=Response.upgrade_type;
				user[activeObject][i][7]=Response.unit_price;
			  }
			//User Interface Refresh
			row.childNodes[2].firstChild.data=Response.upgrade_type;
			row.childNodes[6].firstChild.data=Response.unit_price;
			upgradeBtn.src='images/upgrade-succ.gif';
			$('balance').title=$('balance').title.slice(0, $('balance').title.lastIndexOf(':')+2)+user.currentCharge;
		  }else {
		    upgradeBtn.src='images/upgrade-fail.gif';
		  }
        },
        parameters: Prmts
      });
	}
	
	var upgradeBox=Builder.node('div', {style:'width: 76px;'}, '');
	upgradeBox.appendChild(SelectionBox);
	upgradeBox.appendChild(upgradeBtn);
	if(flag) return [upgradeBox];
  }
}

function transBtn(t_id, t_type, pseudo_price) { //transfer-id, trans-type, pseudo_price->only for transIn have proper meaning
  var transBtn=Builder.node('img', {style:'vertical-align: bottom;'}, '');
  if(t_type=='transOutTable') {
    transBtn.src=(t_id=='null')?'images/transout-fake.gif':'images/transfer-out.gif';
	transBtn.title='فروش';
    transBtn.onclick=function() {
	  var row=this.parentNode.parentNode;
	  var t_id=row.id, type=row.childNodes[0].firstChild.nodeValue, name=row.childNodes[1].firstChild.nodeValue, profit=row.childNodes[3].firstChild.value, buyer=row.childNodes[4].firstChild.value;
	  var Prmts='action=transOut&id='+t_id+'&type='+type+'&name='+name+'&profit='+profit+'&buyer='+encodeURIComponent(buyer); //if object-chain is new for sale[does'nt pre-exist in transfer table], t_id will be empty-string[null]
	  new Ajax.Request('login.php', {
        method: 'get',
        onLoading: function(transport) {
    	  Element.show('indicator');
        }, 
        onComplete: function(transport) {
    	  Element.hide('indicator')
        },
        onSuccess: function(transport) {
		  var Response=eval('('+transport.responseText+')');
		  if(Response.status) {
			//User Interface Refresh
			transBtn.src='images/transout-succ.gif';
			row.id=Response.t_id;
		  }else {
		    transBtn.src='images/transout-fail.gif';
			transBtn.title=Response.msg;
		  }
        },
        parameters: Prmts
      });
	}
  }else { //transInTable
    transBtn.src='images/transfer-in.gif';
	transBtn.title='خريد';
    transBtn.onclick=function() {
	  if(user.currentCharge<pseudo_price) return false;
	  var row=this.parentNode.parentNode;
	  var type=row.childNodes[1].firstChild.data;
	  var Prmts='action=transIn&id='+t_id+'&type='+type; //only transfer-id is needed to be sent to server
	  new Ajax.Request('login.php', {
        method: 'get',
        onLoading: function(transport) {
    	  Element.show('indicator');
        }, 
        onComplete: function(transport) {
    	  Element.hide('indicator')
        },
        onSuccess: function(transport) {
		  var Response=eval('('+transport.responseText+')');
		  if(Response.status) {
			//Data Structure Refresh
			user.currentCharge=Response.currentCharge;
			//...
			//User Interface Refresh
			transBtn.src='images/transin-succ.gif';
			$('balance').title=$('balance').title.slice(0, $('balance').title.lastIndexOf(':')+2)+user.currentCharge;
		  }else {
		    transBtn.src='images/transin-fail.gif';
			transBtn.title=Response.msg;
		  }
        },
        parameters: Prmts
      });
	}
  }
  return [transBtn];
}

function tableEnhancer(ordinaryTable/*, sortColumn, order, editColumn*/) {
  //var enhancedTable=new TableKit(ordinaryTable, {/*editAjaxURI:'/', editAjaxOptions:{method:'get', parameters:'action=edit&a=b'}*/});
  //enhancedTable.sort(sortColumn, order);
  //return enhancedTable;
  return ordinaryTable;
}

function runSQL(SQLStmt, pageNum, totalRows) {
	var Prmts='action=runSQL&SQLStmt='+SQLStmt+'&pageNum='+pageNum+'&totalRows='+totalRows;//alert(Prmts);
	new Ajax.Request('login.php', {
      method: 'get',
      onLoading: function(transport) {
    	Element.show('indicator');
      }, 
      onComplete: function(transport) {
    	Element.hide('indicator')
      },
      onSuccess: function(transport) {
        var Response=eval('('+transport.responseText+')');
		if(Response.status) {
		  runSQLResult.totalRows=Response.totalRows;
		  runSQLResult.totalPages=Response.totalPages;
		  runSQLResult.pageNum=Response.pageNum;
		  runSQLResult.fieldNames=Response.fieldNames;
		  runSQLResult.runSQL=Response.runSQL;
		  runSQLResult.SQLStmt=SQLStmt;

		  runSQLResult.postFunction();
		  //manageUsers($("about_us_cen"));
		  
		  //$(cntId).update('ود بروید');
		}else {
		  //$(cntId).update(Response.msg);
		}
      },
      parameters: Prmts
    });
}

function customReport() {
  var SQLStmt='SELECT * FROM `'+Global.usingTable+'` WHERE 1=1';
  for(var i in customReports) {
	//SQLStmt+=' AND '+i+'=\''+customReports[i]+'\'';
	SQLStmt+=' AND '+i+' '+customReports[i];
  }
  runSQL(SQLStmt, '', '');
  customReports={};
}

function deleteSQL(SQLStmt, element) {
	var Prmts='action=deleteSQL&SQLStmt='+SQLStmt;
	new Ajax.Request('login.php', {
      method: 'get',
      onLoading: function(transport) {
    	Element.show('indicator');
      }, 
      onComplete: function(transport) {
    	Element.hide('indicator')
      },
      onSuccess: function(transport) {
        var Response=eval('('+transport.responseText+')');
		if(Response.status) {
		  element.src='images/deleted.gif';
		}else {
		  alert(Response.msg);
		}
      },
      parameters: Prmts
    });
}

function admintableDrawer(tabularData, headings, id) { //tabularData is 2DimentionalArray
  var table,tbody,thead,tfoot,th,tr,td,cell_className;
  table=Builder.node('table', {className:'mytablekit',cellpadding:'2',cellspacing:'0',border:'0',align:'center'});
  if(table.firstChild) Element.remove(table.firstChild);
  //table body
  tbody=Builder.node('tbody');
  for(var i=0; i<tabularData.length; i++) {
	tr=Builder.node('tr'); //tr with id equal to database record id.
	for(var j=1; j<tabularData[i].length; j++) {
	  td=Builder.node('td', tabularData[i][j]);
	  tr.appendChild(td);
	}
	  td=Builder.node('td', revivableLink(tabularData[i][tabularData[i].length-1], [tabularData[i][3], tabularData[i][4], tabularData[i][10]])); //only for fwd, tabularData[i][10] has responsible meanning.
	  tr.appendChild(td);
	tbody.appendChild(tr);
  }
  table.appendChild(tbody);
  return table;
}

function DBPanel() {
  var DBCPanel = Builder.node('div', {id:'calBarDatePickerContainer', style:'position: absolute; visibility: visible; display: none; z-index: 2020;'}, [
    Builder.node('div', {id:'calBarDatePickerFrameHead'}, [
	  Builder.node('div', {className:'nw'}), 
	  Builder.node('div', {className:'n'}), 
	  Builder.node('div', {className:'ne'}) 
	]), 
	Builder.node('div', {id:'yuiCalendarContainer'}, [
	  Builder.node('div', {id:'DPanel'}) 
	]), 
	Builder.node('div', {id:'calBarDatePickerFrameFoot'}, [
	  Builder.node('div', {className:'sw'}), 
	  Builder.node('div', {className:'s'}), 
	  Builder.node('div', {className:'se'}) 
	])
  ]);
  return DBCPanel;
}

function manageEntity(Container, title, action) {
  if (Container.firstChild) Element.remove(Container.firstChild);
  var ourSrvs=Domain.divBox('ourServices');
  //manageArea
  ourSrvs.appendChild(Domain.divBox('', 'title', title));
  var manageArea=Domain.divBox('manageArea', '', '');
  var manageTable=tableDrawer(runSQLResult.runSQL, runSQLResult.fieldNames, runSQLResult.fieldNames, 'manageTable');
  manageArea.appendChild(manageTable);

  ourSrvs.appendChild(manageArea);
  if (runSQLResult.fieldNames.include('discount')) {var cv=DBPanel(); ourSrvs.appendChild(cv); }
  Controllers.PagingResults(ourSrvs);
  //controllers area
  var controllers=Domain.divBox('controllers', 'title', '');
  controllers.style.height='14px'; controllers.style.cssFloat='left';
  Renderer.renderAdminControllers(controllers);
  ourSrvs.appendChild(controllers);
  
  Container.update('');
  Container.appendChild(ourSrvs);
  
  if(Global.usingTable=='user') {
  TableKit.Editable.selectInput('status', {}, [
	['active','active'],
	['passive','passive']
  ]);
  TableKit.Editable.selectInput('type', {}, [
	['admin','admin'],
	['sales-man','sales-man'],
	['domain-registerar','domain-registerar'],
	['host-planer','host-planer'],
	['reseller-supervisor','reseller-supervisor'],
	['dbms-superintendent','dbms-superintendent'],
	['plat-proctor','plat-proctor'],
	['ssl-provisioner','ssl-provisioner'],
	['agency-req','agency-req'],
	['agency','agency'],
	['regular','regular']
  ]);
  }else {
  TableKit.Editable.selectInput('status', {}, [
	['in progress','in progress'],
	['accepted','accepted']
  ]);
  TableKit.Editable.textInput('type', {});
  }
  new TableKit(document.getElementsByTagName("table")[0], {editAjaxURI:'login.php?action='+action});
}

function controlPanel(Container) {
  if (Container.firstChild) Element.remove(Container.firstChild);
  var ourSrvs=Domain.divBox('ourServices');
  //Profile
  ourSrvs.appendChild(Domain.divBox('', 'title', 'پروفایل'));
  var profile=Domain.divBox('manageArea', '', 'profile area');
  Renderer.renderProfile(profile);
  ourSrvs.appendChild(profile);
  
  //controllers area
  var controllers=Domain.divBox('controllers', 'title', '');
  controllers.style.height='14px'; controllers.style.cssFloat='left';
  Renderer.renderAdminControllers(controllers);
  ourSrvs.appendChild(controllers);
  
  Container.update('');
  Container.appendChild(ourSrvs);
  new TableKit(document.getElementsByTagName("table")[0], {editAjaxURI:'login.php?action=edit_profile'});
}

function ourServices(Container, myService) {
  if (Container.firstChild) Element.remove(Container.firstChild);
  var ourSrvs=Domain.divBox('ourServices');
  //titleBox
  ourSrvs.appendChild(Domain.divBox('', 'title', myService));
  //shelfBox
  ourSrvs.appendChild(Renderer.renderShelf(myService));
  //horizon seperator
  ourSrvs.appendChild(Domain.divBox('', '', '&nbsp;'));
  //shopBox
  var myShopBox=shopBox();
  ourSrvs.appendChild(myShopBox);
  Droppables.add(myShopBox.firstChild, {accept:'stuff', onDrop:function(element){Renderer.renderInteraction(myService, element);}, hoverclass:'aim-active'});
  //roundedBox
  var rndBox=Domain.divBox('roundedBox', 'controlBox');
    var interaction=Domain.divBox('interaction');
	rndBox.appendChild(interaction);
	//Renderer.renderInteraction(myService, null);
	var controllers=Domain.divBox('controllers', '', 'controllers area');
	rndBox.appendChild(controllers);
    rndBox.appendChild(Builder.node('div', {id:'comments', style:'border: 1px dashed gray; margin-top: 3px; padding: 2px 0px; font-size: 9px;'}, 'توضيحات'));
	if (presidium.include(user.type)) Renderer.renderAdminControllers(controllers); else Renderer.renderControllers(controllers);
  ourSrvs.appendChild(rndBox);

  Container.appendChild(ourSrvs);
  //roundedCorners
  Nifty("#roundedBox");
}

function myProfile(Container) {
  if (Container.firstChild) Element.remove(Container.firstChild);
  var ourSrvs=Domain.divBox('ourServices');
  //Profile
  ourSrvs.appendChild(Builder.node('div', {className:'title', onClick:'toggleDisplay(\'profile\')'}, 'پروفایل'));
  var profile=Domain.divBox('profile', '', 'profile area');
  Renderer.renderProfile(profile);
  ourSrvs.appendChild(profile);
  //Logs
  ourSrvs.appendChild(Builder.node('div', {className:'title', onClick:'toggleDisplay(\'logs\')'}, 'گزارش وقایع'));
  var logs=Domain.divBox('logs');
  Renderer.renderLogs(logs);
  ourSrvs.appendChild(logs);
  //Account Charges
  ourSrvs.appendChild(Builder.node('div', {className:'title', onClick:'toggleDisplay(\'charges\')'}, 'مبالغ واریز شده'));
  var charges=Domain.divBox('charges', '', 'account charges area');
  Renderer.renderCharges(charges);
  ourSrvs.appendChild(charges);
  //Domain Payments
  ourSrvs.appendChild(Builder.node('div', {className:'title', onClick:'toggleDisplay(\'domainPayments\')'}, 'لیست دامین ها'));
  var domainPayments=Domain.divBox('domainPayments', '', 'purchased domains area');
  Renderer.renderDomainPayments(domainPayments);
  ourSrvs.appendChild(domainPayments);
  //Host Payments
  ourSrvs.appendChild(Builder.node('div', {className:'title', onClick:'toggleDisplay(\'hostPayments\')'}, 'لیست هاستینگ ها'));
  var hostPayments=Domain.divBox('hostPayments', '', 'purchased hosts area');
  Renderer.renderHostPayments(hostPayments);
  ourSrvs.appendChild(hostPayments);
  //Reseller Payments
  ourSrvs.appendChild(Builder.node('div', {className:'title', onClick:'toggleDisplay(\'resellerPayments\')'}, 'لیست سرويس هاي نمايندگي'));
  var resellerPayments=Domain.divBox('resellerPayments', '', 'purchased resellers area');
  Renderer.renderResellerPayments(resellerPayments);
  ourSrvs.appendChild(resellerPayments);
  //Dbms Payments
  ourSrvs.appendChild(Builder.node('div', {className:'title', onClick:'toggleDisplay(\'dbmsPayments\')'}, 'لیست سرويس هاي پايگاه داده'));
  var dbmsPayments=Domain.divBox('dbmsPayments', '', 'purchased dbmses area');
  Renderer.renderDbmsPayments(dbmsPayments);
  ourSrvs.appendChild(dbmsPayments);
  //Server Payments
  ourSrvs.appendChild(Builder.node('div', {className:'title', onClick:'toggleDisplay(\'platPayments\')'}, 'لیست سرورهای اختصاصی'));
  var platPayments=Domain.divBox('platPayments', '', 'purchased plats area');
  Renderer.renderPlatPayments(platPayments);
  ourSrvs.appendChild(platPayments);
  //SSL Payments
  ourSrvs.appendChild(Builder.node('div', {className:'title', onClick:'toggleDisplay(\'sslPayments\')'}, 'لیست لایه های امن'));
  var sslPayments=Domain.divBox('sslPayments', '', 'purchased ssls area');
  Renderer.renderSSLPayments(sslPayments);
  ourSrvs.appendChild(sslPayments);
  //Transfer Out
  ourSrvs.appendChild(Builder.node('div', {className:'title', onClick:'toggleDisplay(\'transferOut\')'}, 'اشياء خروجي'));
  var transferOut=Domain.divBox('transferOut');
  Renderer.rendertTansferOut(transferOut);
  ourSrvs.appendChild(transferOut);
  //Transfer In
  ourSrvs.appendChild(Builder.node('div', {className:'title', onClick:'toggleDisplay(\'transferIn\')'}, 'اشياء ورودي'));
  var transferIn=Domain.divBox('transferIn');
  Renderer.rendertTansferIn(transferIn);
  ourSrvs.appendChild(transferIn);
  //controllers area
  var controllers=Domain.divBox('controllers', 'title', ''); controllers.style.height='14px';
  Renderer.renderControllers(controllers);
  ourSrvs.appendChild(controllers);

  Container.update('');
  Container.appendChild(ourSrvs);

  if(!activePanel) activePanel='profile';
  toggleDisplay(activePanel);
  new TableKit($('profile').firstChild, {editAjaxURI:'login.php?action=edit_profile'});
  if (user.logsHistory.length) new TableKit($('logs').firstChild);
  if (user.chargeHistory.length) new TableKit($('charges').firstChild);
  if (user.domain_paymentHistory.length) new TableKit($('domainPayments').firstChild, {editAjaxURI:'login.php?action=edit_ns'/*, editAjaxOptions:{evalScripts:true}*/});
  if (user.host_paymentHistory.length) new TableKit($('hostPayments').firstChild, {editAjaxURI:'login.php?action=edit_hostpays&level=users'});
  if (user.reseller_paymentHistory.length) new TableKit($('resellerPayments').firstChild, {editAjaxURI:'login.php?action=edit_resellerpays&level=users'});
  if (user.dbms_paymentHistory.length) new TableKit($('dbmsPayments').firstChild, {editAjaxURI:'login.php?action=edit_dbmspays&level=users'});
  if (user.server_paymentHistory.length) new TableKit($('platPayments').firstChild, {editAjaxURI:'login.php?action=edit_serverpays&level=users'});
  if (user.ssl_paymentHistory.length) new TableKit($('sslPayments').firstChild, {editAjaxURI:'login.php?action=edit_sslpays&level=users'});
  if (user.transferOut.length) new TableKit($('transferOut').firstChild);
  if (user.transferIn.length) new TableKit($('transferIn').firstChild);
}

function toggleDisplay(view_port) {
  var $panels=$('profile', 'logs', 'charges', 'domainPayments', 'hostPayments', 'resellerPayments', 'dbmsPayments', 'platPayments', 'sslPayments');
  $panels.push($('transferOut'), $('transferIn'));
  $panels.each(function(element) {element.style.display='none'; element.previousSibling.style.display='none';});
  $(view_port).style.display='block'; $(view_port).previousSibling.style.display='block';
  activePanel=view_port;

  var $DataStruct=new Array('profile', 'logsHistory', 'chargeHistory', 'domain_paymentHistory', 'host_paymentHistory', 'reseller_paymentHistory', 'dbms_paymentHistory', 'server_paymentHistory', 'ssl_paymentHistory');
  $panels.each(function(value, index) {if($(view_port)==value) activeObject=$DataStruct[index];});
}

function Li_Load(item) {
  $('libox-StyleSheet').href='libox/libox.css'; //browser itself is enough wise to cache it.

  var src, title;
  new Ajax.Request('quick-help.php?item='+item, {
    method: 'get',
    onSuccess: function(transport) {
	  var rspText='('+transport.responseText+')';
	  rspText=eval(rspText);
	  src=rspText.src;
	  title=rspText.title;
    },
    asynchronous: false
  });

  if(typeof mylibox=='object') { new libox(); } //libox.js will loads only once.
  else {
    var Resp;
    new Ajax.Request('js/li.js', {
      method: 'get',
      onSuccess: function(transport) {
        Resp=transport.responseText;
      },
      asynchronous: false
    });
    eval(Resp);
    initlibox();
  }
  var mySlideShow=Builder.node('a', {href:'libox/gui.gif', rel:'libox', title:title, id:'mySlideShow'}, '');
  mylibox.start($(mySlideShow));

  objectNode=Builder.node('div', {id:'liboxImage'}, '');
  $(objectNode).innerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="768" height="577"><param name="movie" value="libox/'+src+'.swf" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><embed src="libox/'+src+'.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" width="768" height="577"></embed></object>';

  setTimeout("Element.remove($('imageContainer').firstChild);$('imageContainer').insertBefore($(objectNode), $('imageContainer').firstChild);", 2000);
}

//Mouse Select Prevention Code For Regular Users.
document.onselectstart=function() { if (!['INPUT', 'BUTTON', 'SELECT', 'TEXTAREA'].include(window.event.srcElement.tagName) && !presidium.include(user.type)) return false }; //if the browser is IE4+
if (window.sidebar){ //if the browser is NS6
document.onmousedown=function(e) { if (!['INPUT', 'BUTTON', 'SELECT', 'TEXTAREA'].include(e.target.tagName) && !presidium.include(user.type)) return false };
document.onclick=function() { return true };
}

//R-Click Prevention/Menu Code.
var RCItem;
Event.observe(
document,
'contextmenu',
function(event){
Event.stop(event);
Element.show('r-menu');
var elDim = $('r-menu').getDimensions();
var vpDimHeight = (window.innerHeight) ? window.innerHeight : document.documentElement.offsetHeight-5;
$('r-menu').style.left=(event.clientX + elDim.width > document.body.clientWidth) ? (document.body.clientWidth-elDim.width)+"px" : event.clientX+"px";
$('r-menu').style.top=((event.clientY + elDim.height) > vpDimHeight ? (vpDimHeight - elDim.height) : event.clientY) + 'px';
RCItem=(event.target)?event.target:event.srcElement;
return false;
}
);

Event.observe(
document,
'click',
function(event){ Element.hide('r-menu'); }
);

function R_Menu () {
Event.observe($('r-menu'), 
'click', 
function(event){
Event.stop(event);
Element.hide('r-menu');
var MenuItem=(event.target)?event.target:event.srcElement;
switch(MenuItem.title){
case 'About Us':
replaceContent('mb_1');generalUpdater('about_us_cen', 'mb_1.htm');
break;
case 'Services':
replaceContent('mb_2');generalUpdater('about_us_cen', 'mb_2.htm');
break;
case 'Solutions':
replaceContent('mb_3');generalUpdater('about_us_cen', 'mb_3.htm');
break;
case 'Contacts':
replaceContent('mb_4');generalUpdater('about_us_cen', 'mb_4.htm');
break;
case 'Help on this item':
if (RCItem.id) Li_Load(RCItem.id);
break;
case 'Live Help':
window.open('http://azaranweb.org/bench/support/initiate.php?dep=', '_blank');
break;
};
}
);
}

//Page Load Waiting.
window.onload=function() {
  $('loadWaiting').style.display='none';
  R_Menu();
};

