var ADD_TEST_INTERVAL=10000;
var AUSTRALIA_ID=14; 
var INPUT_WIDTH = (Browser.isIE) ? "159px" : "164px";
var seoPositionTree = new Framework.Modules.SEOPositionTree();
var seoBacklinksTree = new Framework.Modules.SEOBacklinksTree();
var seoIndexedPagesTree = new Framework.Modules.SEOIndexedPagesTree();
var seoPageRankTree = new Framework.Modules.SEOPageRankTree();
var seoRankingTree = new Framework.Modules.SEORankingTree();
var seoSocialBookmarksTree = new Framework.Modules.SEOSocialBookmarksTree();
var seoMyBuzzTree = new Framework.Modules.SEOMyBuzzTree();

var testProtocols=[{"protocol":"http", "name":"http"},
				   {"protocol":"https", "name":"https"},
				   {"protocol":"pop3","name":"pop"},
				   {"protocol":"imap","name":"imap"},
				   {"protocol":"sip","name":"sip"},
				   {"protocol":"ping","name":"ping"},
				   {"protocol":"sip","name":"sip"},
				   {"protocol":"tcp","name":"tcp"},
				   {"protocol":"udp", "name":"udp"},
				   {"protocol":"ftp","name":"ftp"},
				   {"protocol":"dns","name":"dns"}];

function generateDialogContent(modName, initParams) {

	var mainDiv = document.createElement("DIV");
	var form = document.createElement("FORM");
	form.className = "dialog_form";
	form.setAttribute("method", "get");
	form.setAttribute("id", modName + "_FORM");
	var div = document.createElement("DIV");
	form.appendChild( div );
	mainDiv.appendChild( form );


	if (modName == "TellFriend") {
		var config = {};
		config["elm_moduleContent"] = div;
		var obj = new Framework.Modules.TellFriend( config );
		return mainDiv;
	}
     if (modName == "Contact") {
     	 	
      var  divInnerHTML = "<table width='100%' class='text' cellspacing=4><tbody>"+
						"<tr>"+
							"<td nowrap class='formLabel'>" + Framework.Lang.Type + ":</td>"+
							"<td >" +
								"<select onchange='accountsType()' name='addContactAccountType' id='addContactAccountType'>" +
									"<option value='Email'>Email" +
									"<option value='SMS'>SMS" +
									"<option value='IM'>IM" +
								"</select></td>"+
							"<td>&nbsp;</td>"+
						"</tr>"+
						"<tr >"+
							"<td class='formLabel'>" + Framework.Lang.AddContact_firstName  + ":</td>"+
							"<td><input style='width:"+INPUT_WIDTH+"' allowBlank='false' name='addContactFName'/>*</td>"+
						"</tr>"+
						"<tr >"+
							"<td class='formLabel'>" + Framework.Lang.AddContact_lastName  + ":</td>"+
							"<td><input style='width:"+INPUT_WIDTH+"' allowBlank='false' name='addContactLName'/>*</td>"+
						"</tr>"+
										
						"<tr name='Email' >"+
							"<td class='formLabel'>" + Framework.Lang.AddContact_account  + ":</td>"+
							"<td><input style='width:"+INPUT_WIDTH+"' allowBlank='false' vtype='email' name='addContactEmail'/>*</td>"+
						"</tr>"+
						"<tr name='IM' style='display:none;'>"+
							"<td class='formLabel'>" + Framework.Lang.AddContact_IMType + ":</td>"+
							"<td><select name='addContactIMType'>" +
							"<option value='3'>ICQ" +
							"<option value='4'>Yahoo" +
							"<option value='7'>Google" +
							"</select></td><td>&nbsp;</td>"+
						"</tr>"+
						"<tr name='IM' style='display:none;'>"+
							"<td class='formLabel'>" + Framework.Lang.AddContact_IM + ":</td>"+
							"<td><input style='width:"+INPUT_WIDTH+"' allowBlank='false' name='addContactIM'/>*</td>"+
						"</tr>"+
						"<tr name='SMS' style='display:none;'>"+
							"<td class='formLabel'>" + Framework.Lang.countryCode + ":</td>"+
							"<td></td>"+
						"</tr>"+
						"<tr name='SMS' style='display:none;'>"+
							"<td class='formLabel' valign=top style='padding-top:2px'>" + Framework.Lang.AddContact_mobilePhone + ":&nbsp;&nbsp;&nbsp;</td>"+
							"<td nowrap><input style='width:"+INPUT_WIDTH+"' allowBlank='false' name='addContactMobile'/>*<div class='chars'>"+Framework.Lang.mobileHelp+"</div></td>"+
						"</tr>"+
						"<tr name='SMS_p' style='display:none;'>"+
							"<td class='formLabel'>" + Framework.Lang.AddContact_portable + ":</td>"+
							"<td><input name='addContactPorted' type='checkbox'/></td>"+
						"</tr>"+
					"</tbody></table>"+
					"<div style='height:25px;'></div>";

		
		div.innerHTML = divInnerHTML;
		var countryTD = div.getElementsByTagName("tr")[6].childNodes[1];
		var mobileInput = div.getElementsByTagName("tr")[7].childNodes[1].firstChild;
		var portableTR = div.getElementsByTagName("tr")[8];
		
		accountsType = function(){
		 		var tab = div.getElementsByTagName("tbody")[0];
		 		var typeSelect = $("addContactAccountType",true);
		  	  	var childs = tab.getElementsByTagName("tr");
		  	 	for(var i=0;i<childs.length; ++i){
					if(childs[i].getAttribute("name") == typeSelect.value 
						|| childs[i].getAttribute("name")==undefined)
					childs[i].style.display="";
					else
					childs[i].style.display="none";
				} 
		  }
		  
		addContactResponse=function(response)
		  {
		  		var addParams=eval("("+response.responseText+")");
				var params={};
				if(addParams.contactId != undefined && addParams.contactId != -1){
					ruleBasedNotifications = null;
					var isOpen = false;
					var portletId;
					for(var i= 0; i< PORTLETS.length;i++){
						if(PORTLETS[i].moduleName == "Notification"){
							isOpen = true;portletId = PORTLETS[i].id;
							break;
						}
					}
					
					if(isOpen){
						var portlet = PortletLoader.getPortlet(portletId);
						try{
						portlet.object['refresh']();
						}catch(ex){}
						
					}else{
						params.moduleName="Notification";
						PortletLoader.addPortletFromTree(params);
					}
					DialogWindow.hide();
			 	}
			 	else{
			 		var error = (addParams.status) ? addParams.status : Framework.Lang.AddContact_error;
			 		DialogWindow.error([error]);
			 	}
	      }
    var fillCountryCodes = function(){
	    var editSelectCountry = document.createElement("select");
		editSelectCountry.id = "selectCountry"; 
		editSelectCountry.name = "addContactCountry";
		editSelectCountry.onchange = function(){
			var id = $("selectCountry", true).getValue();
			if (id == AUSTRALIA_ID) {
				portableTR.style.display = "";
			}else{
				portableTR.style.display = "none";
			}
		}
    	for (var i=0;i<COUNTRY_CODES.length;i++){
			txt=document.createTextNode(COUNTRY_CODES[i].name+"("+COUNTRY_CODES[i].code+")");
	        var option=document.createElement("option");
    	    option.value=COUNTRY_CODES[i].id;
	        option.appendChild(txt);
    	    editSelectCountry.appendChild(option);
		}
		countryTD.appendChild(editSelectCountry);

	}
	
	var process_getCountryCodes = function(response){
		COUNTRY_CODES = eval("("+response.responseText+")");
		Utils.sort(COUNTRY_CODES, "name", SORT_TYPE_DESC);
		fillCountryCodes();
		changeFormStyle(div, true, true, false, true, true);
	}
	 
	var request_getCountryCodes = function(){
		RequestDispatcher.sendGET(Framework.contactURL+User.userId+"/countrycode", process_getCountryCodes);
	}
	
    if (COUNTRY_CODES){
      fillCountryCodes();
      changeFormStyle(div, true, true, false, true, true);
    } else request_getCountryCodes();
          
    return mainDiv;
   }

	if(modName == "Feedback") {
		var config = {};
		config["elm_moduleContent"] = div;
		var obj = new Framework.Modules.Feedback( config );
		return mainDiv;
	}

	if (modName == "Options") {
		div.innerHTML =
			"<table id='tabOptionsTABLE' width=100% height=300px cellspacing=0 cellpadding=0 ><tr>"+
				"<td class=options_td style='width:28%; height:300px;'>"+
					"<ol>"+
						"<li id=general class=selected onclick='showGeneralOptions()'>"+Framework.Lang.options.genSettings+"</li>"+
						"<li id=skins onclick='showSkins()'>"+Framework.Lang.options.skins+"</li>"+
					"</ol>"+
				"</td>"+
				"<td class=options_td style='width:72%; height:300px;padding: 0px 5px 0px 5px'  id=settings_content style='padding:4px;'>"+getOptionsContent()+"</td>"+
			"</tr></table>";

		changeFormStyle(div, true, false, true, true, false);
		return mainDiv;
	}

	else if(modName == 'Note') {
		function addNotesResponse(response) {
			var respObj = eval("(" + response.responseText + ")");
			if(respObj.status==STATUS_OK){
				var params = {};
				params.moduleName="Note";
				params.dataId=respObj.data;
				PortletLoader.addPortletFromTree(params);
			} else {}
		}

		var data = Framework.Modules.NoteWidget.defaultObj.data;
		RequestDispatcher.sendPOST(Framework.notesURL + User.userId+"/note/" + data.title + "/" + data.text + "/" + data.color,"",addNotesResponse);
	} else if (modName == "AddPage") {
		div.innerHTML = '<div id="PageAddingNot" style="color:#900;margin:5px 0 5px 0;font-size:11px;"></div>' + '<table cellpadding="0" cellspacing="0" class="text"><tr>' + '<td class="formLabelUp">' + Framework.Lang.Name + ' :&nbsp;&nbsp; </td>' + '<td><input id="tabName" type="text" value="" maxLength=25 /></td>' + '</tr>' + '<tr>' + '<td/><td align="center"><input type="button" style="visibility:hidden" value="' + Framework.Lang.Add + '" class="buttonClean"/></td>' + '</tr>' + '</table>';
		div.firstChild.onclick = function() {
			Framework.Nav.removeModuleBox();
		}
		div.childNodes[2].rows[1].cells[1].firstChild.onclick = function() {
			DialogCaller.SaveAddPage();
		}
		changeFormStyle(div, true, true, true, true);
		return mainDiv;
	} else if(modName == "SEO"){		
		return seoPositionTree.getAddForm(div, mainDiv, initParams);
	} else if(modName == "SEOBacklinks"){
		return seoBacklinksTree.getAddForm(div, mainDiv);
	} else if(modName == "SEOIndexedPages"){
		return seoIndexedPagesTree.getAddForm(div, mainDiv);
	} else if(modName == "SEOPageRank"){
		return seoPageRankTree.getAddForm(div, mainDiv);
	} else if(modName == "SEORanking"){
		return seoRankingTree.getAddForm(div, mainDiv);
	} else if(modName == "SEOSocialBookmarks"){
		return seoSocialBookmarksTree.getAddForm(div, mainDiv);
	} else if(modName == "SEOMyBuzz"){
		return seoMyBuzzTree.getAddForm(div, mainDiv);
	}
	

 }




var DialogCaller = {
	SaveOptions : function() {
		return true;
	},
	SaveContact:function(){
		  var postData="";
		  var formData=DialogWindow.getFormData();
		  var validate="success";
		  var country = 245;
		  
		  var first=formData["addContactFName"].trim();
	      var second=formData["addContactLName"].trim();
     	  var email=formData["addContactEmail"].trim();
     	  var imtype =formData["addContactIMType"];
     	  var im = formData["addContactIM"].trim();
     	  var mobile = formData["addContactMobile"].trim();
		  var portable = formData["addContactPorted"];
		  if(portable === undefined)
		  	portable = false;
		  else
		  	portable = true;		
	     
	      	var status=1;
			var account = email;
			var accountType = 1;
			if(formData["addContactAccountType"] == 'SMS'){
				account = mobile;
				accountType = 2;
				country = formData["addContactCountry"].trim();
				validate=validateSMS(first, second, account);
			}
			else if(formData["addContactAccountType"] == 'IM'){
				account = im;
				accountType = imtype;
				validate=validateIM(first, second, account);
			}
			else{
				validate=validateMail(first, second, account);
			}
       		postData +="/"+encode(first)+"/"+encode(second)+"/"+encode(account)+"/"+status+"/" + accountType+"/"+portable+"/"+country;
		  	  
		  if (validate == "success"){
	         DialogWindow.error( [Framework.Lang.checking + "..."] );
	 		 var url = Framework.contactURL+User.userId;
			 RequestDispatcher.connectPOST( url+ postData ,null, addContactResponse , null );
	      }
		  else{
		  	 DialogWindow.error( [validate] );
		  	 DialogWindow.enableButton();
		  }
	      return false;
		  
		  
	},

	SaveAddPage : function() {
		var tabName = div.childNodes[2].rows[0].cells[1].firstChild.value;
		if(tabName.trim() == "" || tabName.indexOf("/") != - 1 ) {
			document.getElementById("PageAddingNot").innerHTML = Framework.Lang.invalidPageName;
		} else if(Framework.tabs.getTabIndex(tabName) != - 1) {
			document.getElementById("PageAddingNot").innerHTML = Framework.Lang.Page_already;
		} else if(!Framework.tabs.haveEnoughSpase(tabName)) {
			document.getElementById("PageAddingNot").innerHTML = Framework.Lang.PageNotEnoughSpace;
		} else Framework.saveUserData("addPage", tabName);
	},

	SaveTellFriend : function() {
		var formData = DialogWindow.getFormData();
		var validate = "success";
		var image = $("captchaimage");
		var signupEmail = formData["email"];
		var signupKey = formData["key"];
		var subject = formData["subject"];
		var from = formData["from"];
		var tf_content = formData["text"];

		if(!isEmailValid( signupEmail) ) {
			validate = Framework.Lang.Contact_notValidEmail;
		} 
		else if(subject.trim() == '' || from.trim() == '') validate = Framework.Lang.Contact_RequiredFields;
		else if(signupKey != undefined && signupKey.trim() == '') {
			validate = Framework.Lang.Contact_imageTextRequired;
		}
		else if(tf_content.trim() == ''){
			validate = Framework.Lang.TellFriend_emptyContent;
		}
		if (validate == "success") {
			var data = DialogWindow.getFormData( true , true );
			DialogWindow.info( [Framework.Lang.checking + "..."], false );
			var url = Framework.tellfriendURL + User.userId;
			RequestDispatcher.sendPOST( url+ "/" + data ,null, inviteFriendResponse , null );
		} else if(validate != "success") {
			signupKey.value = "";
			image.src = "ImageCaptchaServlet?t=" + (new Date()).getTime();
			DialogWindow.error( [validate] );
		}
		return false;
	},



	SaveFeedback : function() {
		var formData = DialogWindow.getFormData();
		var slashCount = formData['text'].split("/").length;
		RequestDispatcher.sendPOST(Framework.feedbackURL + User.userId + "/" + slashCount + "/" + encode($("feedbacktext").value), "", loadFeedback);
		return false;
	},
	SaveSEO : function() {	
		seoPositionTree.save(DialogWindow);			
	},
	
	SaveSEOBacklinks : function() {			
		seoBacklinksTree.save(DialogWindow);
	},
	
	SaveSEOIndexedPages : function() {			
		seoIndexedPagesTree.save(DialogWindow);
	},	  

	SaveSEOPageRank : function() {			
		seoPageRankTree.save(DialogWindow);
	},
		 
	SaveSEORanking : function() {			
		seoRankingTree.save(DialogWindow);
	},
	
	SaveSEOSocialBookmarks : function() {			
		seoSocialBookmarksTree.save(DialogWindow);
	},
		
	SaveSEOMyBuzz : function() {			
		seoMyBuzzTree.save(DialogWindow);
	}	 
	  
}


Framework.Modules.TellFriend = function(obj) {
   var localData = new Object();
   var el = obj.elm_moduleContent;
   var title = "";
   var req;
   var timer;
   var count = 0;
   var isLiving = true;
   var self = this;
   el.innerHTML = "";
   var inviteDiv = document.createElement("div");
   var infoDiv = document.createElement("div");
   el.appendChild(inviteDiv);
   var divNode = document.createElement("div");
   divNode.innerHTML =
			'<table style="text-align:left;" class="text">' +
			'<tr><td class="formLabel" nowrap>'+Framework.Lang.TellFriend_email+':</td><td><input type="text" size=28 name="email" id="signupEmail" vtype="email" allowBlank=false style="width:190px"/></td><td>*</td></tr>'+
			'<tr><td class="formLabel" nowrap>'+Framework.Lang.TellFriend_subject+':</td><td><input type="text" size=28 name="subject" id="captchaimagetext1"  allowBlank=false value="'+ Framework.Lang.defaultTellFriendSubject +'" style="width:190px"/></td><td>*</td></tr>'+
			'<tr><td class="formLabel" nowrap>'+Framework.Lang.TellFriend_from+':</td><td><input type="text" name="from" size=28 id="tellfriendfrom"  allowBlank=false value="'+User.username+'"  style="width:190px"/></td><td>*</td></tr>'+
			'<tr><td class="formLabel" nowrap>'+Framework.Lang.TellFriend_validImage+':</td><td><img alt="" id="captchaimage" ></td></tr>'+
			'<tr><td class="formLabel nowrap">'+Framework.Lang.TellFriend_codeInImage+':</td><td><input type="text" size=28 name="key" id="captchaimagetext2"  allowBlank=false	style="width:190px"/></td><td>*</td></tr></table>';
   inviteDiv.appendChild(divNode);
   var signupForm = divNode.firstChild;
   var signupInputs = signupForm.getElementsByTagName("input");
   var image = signupForm.rows[3].cells[1].firstChild;
   var signupEmail = signupInputs[0];
   var subject = signupInputs[1];
   var from = signupInputs[2];
   var signupKey = signupInputs[3];
   image.src = "ImageCaptchaServlet?t=" + (new Date()).getTime();
   divNode = document.createElement("div");
   divNode.setAttribute("style", "width: 100%; margin-top:5px;");
   var textAreaNode = document.createElement("textarea");
   textAreaNode.name = "text";
   textAreaNode.rows = 5;
   textAreaNode.id = "sendInvitationTEXTAREA";
   textAreaNode.allowBlank = false;
   textAreaNode.style.width = "95%";
   divNode.appendChild(textAreaNode);
   textAreaNode.value = Framework.Lang.defaultTellFriend_MAIL;
   inviteDiv.appendChild(divNode);
   changeFormStyle(inviteDiv, true, false, false, false, true);
   var http_request = false;
   }
function inviteFriendResponse(response) {
   var errorMessage = "";
   var signupKey = $("captchaimagetext2");
   var signupEmail = $("signupEmail");
   var image = $("captchaimage");
   var text = $("sendInvitationTEXTAREA");

   var error = response.responseXML.documentElement.firstChild.nodeValue;
   switch(error) {
      case "success" : DialogWindow.removeErrorPart(true);
      var message = Framework.Lang.TellFriend_invitationMessage + signupEmail.value;
	  	 $("TellFriend_FORM").reset();
     	 DialogWindow.info( [message], false );
		 var date = new Date();
		 image.src = "ImageCaptchaServlet?t=" + date.getTime();
		 text.value = Framework.Lang.defaultTellFriend_MAIL;
		 DialogWindow.enableButton();
      return;
      case "error" : errorMessage = Framework.Lang.error;
      var date = new Date();
      signupKey.value = "";
      image.src = "ImageCaptchaServlet?t=" + date.getTime();
      break;
      case "inuse" : case "user exists" : errorMessage = Framework.Lang.signupEmailInUse;
      var date = new Date();
      signupKey.value = "";
      image.src = "ImageCaptchaServlet?t=" + date.getTime();
      break;
      case "invalidkey" : errorMessage = Framework.Lang.invalid_image_code;
      var date = new Date();
      signupKey.value = "";
      image.src = "ImageCaptchaServlet?t=" + date.getTime();
      break;
      default : errorMessage = error;
      var date = new Date();
      signupKey.value = "";
      image.src = "ImageCaptchaServlet?t=" + date.getTime();
      break;
      }
	  DialogWindow.error( [errorMessage] );
   }
function addTestimonialResponse(response){
	var addParams=eval("("+response.responseText+")");
		if(addParams.status==STATUS_OK){
			DialogWindow.hide();
		 }
		 else{
		 	DialogWindow.error([addParams.status]);
		 }
}
Framework.Modules.Feedback = function(obj) {
   var localData = new Object();
   var el = obj.elm_moduleContent;
   var req;
   var timer;
   var count = 0;
   var isLiving = true;
   var self = this;
   el.innerHTML = "";
   var divNode = document.createElement("div");
   var text = '<span style="font-size:9pt"><font face="verdana">';
   text += "<span style='font-size:8.3px;color:#ffffff'>&nbsp&nbsp&nbsp</span>"+Framework.Lang.sendUsFeedback;
   divNode.innerHTML = text;
   el.appendChild(divNode);
   divNode = document.createElement("div");
   divNode.align = "center";
   divNode.setAttribute("style", "width: 100%; margin-top:5px;");
   divNode.innerHTML = "<textarea id='feedbacktext' style='width:95%;' rows=6 name='text'></textarea>";
   el.appendChild(divNode);
   changeFormStyle(el, false, false, false, false, true);
//   textAreaNode = divNode.firstChild.rows[1].cells[1].firstChild;
   var http_request = false;
   }
function loadFeedback(http_request) {
   var xmlDOM = http_request.responseXML;
   if( xmlDOM == null )return;
   var id = xmlDOM.documentElement.firstChild.nodeValue;
   var form = Form.getElements( $("Feedback_FORM") );
   form[0].value = "Your ticket number is: " + id;
   setTimeout( clearFeedArea, 1000 * 8);
   }
function clearFeedArea() {
   var form = DialogWindow.getForm();
   form[0].value = "";
   DialogWindow.enableButton();
   }
function getAddTitle( mode ) {
   switch( mode ) {
	  case "Agent" :
	  	return ((User.hasUserAgent)? Framework.Lang.DownloadAdagent:Framework.Lang.Add);
	  case "Options":
	  	return Framework.Lang.Done;
	  case "TellFriend":
	  case "Feedback":
	  case "SubmitTestimonial":
	  	return Framework.Lang.Submit;
      default : return Framework.Lang.Add;
      }
}

function showGeneralOptions(){

	$("general").className = "selected";
	$("skins").className = "";
	$("settings_content").innerHTML = getOptionsContent();
	changeFormStyle($("settings_content"), true, false, true, true, false);

}

function getOptionsContent(){
var buttonStr=createNiceButton(Framework.Lang.editApply,'left','Controller.updateMaxValue()');
				var ret= "<div id='generalOptions_div'>"+
					"<fieldset>"+
						"<legend>"+Framework.Lang.options.layout+"</legend>"+ generateLayoutConfig()+
					"</fieldset>"+
					"<fieldset>"+
						"<legend>"+Framework.Lang.options.modules+"</legend>"+
						"<table cellspacing='4' class='text'>"+
							"<tr>"+
								"<td><input name='permanent' id='displayIcons' onchange='PortletLoader.updatePermanent(this.checked)' type=checkbox "+((OPTIONS.showHeaderIcons)?"checked=true":"")+" />"+
							 		Framework.Lang.options.displayIcons+
								"</td>"+
							"</tr>"+
							"<tr>"+
								"<td >"+
									"<input onchange='testMaxChange()' checked='true' name='test_max' type='radio'/>"+
									"<span style='margin-right:6px'>"+Framework.Lang.dynamic+"</span><input onchange='testMaxChange()' id='staticRadio' name='test_max' type='radio'/>"+
									"<span style='margin-right:6px'>" + Framework.Lang.static_ + "</span> <td><input size='3' id='staticInput' vtype='num' maxValue=10000  disabled='true'></input>"+
								"</td>"+
								"<td>"+	buttonStr+ "</td>"+
								"<td id='scalingErrorTd' style='color:red;'></td>"+
							"</tr>"+
						"</table>"+
					"</fieldset>"+
					"<fieldset width=auto>"+
						"<legend>Performance</legend>"+
						"<table class='text'>"+
							"<tr>"+
								"<td><input type=checkbox name=onlycurtabload onchange='PortletLoader.loadOnStartUp(this.checked)'  "+
								( (OPTIONS.loadAllModules) ? "" : "checked=true" ) +
								"></input></td>"+
								"<td nowrap>"+Framework.Lang.options.loadModulesCurTab+"</td>"+
							"</tr>"+
						"</table>"+
					"</fieldset>"+
					"</div>";
					return ret;
}
function generateLanguagesConfig()
{

	var lang_abrv1, lang_abrv2;
	var inner = "";
	inner +="<table id='languages_config' class='text'><tr>";

	for( var i=0; i<GENERAL_SETTINGS.LANGUAGES.length; i++ )
	{
		lang_abrv1 = GENERAL_SETTINGS.LANGUAGES[i];
		inner +=  "<td><input type='radio' ";
		inner += ( CURRENT_LANGUAGE == lang_abrv1)?" checked ":"";
		inner += "value='"+ lang_abrv1 +"' id='language_"+lang_abrv1+"' onchange='Controller.changeLanguage_step1(\""+lang_abrv1+"\")' name='lang'/></td>";
		if (i != GENERAL_SETTINGS.LANGUAGES.length.length-1) style = "style='padding-right:1px;'";else style="";
		inner += "<td nowrap "+style+"> "+ Framework.Lang.languages[ lang_abrv1 ] +" </td>";
	}
	inner += "</tr></table>";

	return inner;

}
function testMaxChange(){

	if( $("staticRadio").checked )
		$("staticInput", true ).disable();
	else
		$("staticInput", true ).enable();
}

function generateLayoutConfig()
{
	var cur_tab_config = Controller.getTabConfig();
	var cur_layout_rows, cur_layout_cols;
	var isConfig = cur_tab_config && cur_tab_config.layout != null;

	if( isConfig )
	{
		cur_layout_rows = cur_tab_config.layout[0];
		cur_layout_cols = cur_tab_config.layout[1];
	}
	else
	{
		cur_layout_rows = GENERAL_SETTINGS.DEFAULT_AUTOLAYOUT[0];
		cur_layout_cols = GENERAL_SETTINGS.DEFAULT_AUTOLAYOUT[1];
	}

	var inner = "";
	inner +="<table nowrap id=autolayoutTable class='text'>";
	inner +="   <tr>";
	inner +="		<td rowspan=2 valign=top >"+ Framework.Lang.options.autoLayout +" </td>";
	var rowCount1, colCount1, rowCount2, colCount2, rowCount3, colCount3;

	for( var i = 0; i < GENERAL_SETTINGS.AUTO_LAYOUTS.length; i++ )
	{
		if (i == 3) inner += "<tr>";

		rowCount1 = GENERAL_SETTINGS.AUTO_LAYOUTS[i][0];
		colCount1 = GENERAL_SETTINGS.AUTO_LAYOUTS[i][1];
		var val = rowCount1 +"x"+ colCount1;

		var checked = ( layout = cur_layout_rows ==  rowCount1 && cur_layout_cols == colCount1 && isConfig) ? " checked=true ":"";
//		inner += "<td nowrap title="+val +"><input type=radio name=autolayout onchange='Controller.pre_changeTabLayout2("+colCount1+","+rowCount1+")' "+checked+" /></td>";
//		inner += "<td title="+val +"><img src=" + THEME_IMG_ROOT + "images/layout/" + val + ".gif  /></td>";
		inner += "<td title="+val +"><div class='layout_img clickable' id=layout_" + val + " onclick='Controller.pre_changeTabLayout2("+colCount1+","+rowCount1+")'/></td>";
		if (i == GENERAL_SETTINGS.AUTO_LAYOUTS.length-1) inner += "</tr>";
	}

	inner += "<tr><td style='padding-right:5px;'>" + Framework.Lang.Tabs.TabOptionsNumberOfColumns + "</td>";
    for( i = 1; i <= 4; i++){
		if (parseInt(Controller.numberOfColsForAllTabs) == i) checked = " checked=true ";else checked="";
//	 	inner += "<td title="+i+"><input type=radio name=columns onchange='Controller.pre_changeAllTabLayouts("+i+")' "+checked+" /></td>";
	 	inner += "<td nowrap title="+ i +">";
//		inner += "<img src=" + THEME_IMG_ROOT + "images/layout/" + i + ".gif />"
		inner += "<div class='layout_img clickable' id=layout_" + i + " onclick='Controller.pre_changeAllTabLayouts("+i+")'/>";
		inner += "</td>";
	}

	inner += "</tr></table>";

	return inner;
}

function getSkinsList(){
	var tdCount = 2; 
	var inner = "";
	inner += "<table width='98%' cellpadding='0' cellspacing='0'>";	
	var checked = "";
	for( var i=0; i<GENERAL_SETTINGS.SKINS.length; i++ ) {
		checked = "";
		if(OPTIONS.theme == GENERAL_SETTINGS.SKINS[i]){
			checked = "checked='checked'";
		}
		if(i % tdCount == 0){
			inner += "<tr>";
		}
		inner += 	"<td align='center' valign='middle' style='padding: 10px'>";
		inner += 		"<fieldset style='padding: 0px;padding-bottom:10px; margin: 0px'>";
		inner +=			"<legend class='addCheckLegend'>"+ GENERAL_SETTINGS.SKIN_NAMES[i] +"</legend>";
		inner +=			"<div style='float:left;padding:10px'><input type='radio' name='skin_radio' "+checked+" onclick='changeStyle(\""+GENERAL_SETTINGS.SKINS[i]+"\");'/></div>"	
		inner += 			"<div class='"+ GENERAL_SETTINGS.SKINS[i] +"_icon' id="+ GENERAL_SETTINGS.SKINS[i] +"_skin></div>";
		inner += 		"</fieldset>";
		inner += 	"</td>";
		if((i+1) % tdCount == 0){
			inner += "</tr>";
		}
	}
	if(GENERAL_SETTINGS.SKINS.length % tdCount !=0){
		var lengthToFill = tdCount - (locales.length % tdCount);
		for(var i=0; i<lengthToFill; i++){
			inner += "<td></td>";
		}
	}
	inner += "</table>";

	return inner;
}


function showUpgradeForm(planElement){
	var plan = planElement.getAttribute("plan");
	var str = "<form action=''><table  cellpadding='2' cellspacing='5' class='text'><tbody>"+
							"<tr><td colspan='3'><div id='upgradeerror' style='color:red'></div></td></tr>"+
							"<tr>" +
							"<td class='formLabel' nowrap>Plan :</td>" +
							"<td>" + plans[plan] +"</td>" +
							"<td></td>" +
						"</tr>"+
						"<tr>"+
							"<td class='formLabel'>Password :</td>"+
							"<td><input type='password' allowBlank=false id='pass' value='' style='width:96%' /></td>"+
							"<td id='passwordImg'>*</td>"+
						"</tr>"+
						"<tr>" +
							"<td class='formLabel' nowrap>Payment method :</td>" +
							"<td><img src='http://images.paypal.com/images/x-click-but20.gif' /></td>" +
							"<td></td>" +
						"</tr>" +
						"<tr>" +
							"<td class='formLabel' nowrap>Billing cycle :</td>" +
							"<td class='formLabel' nowrap>Monthly</td>" +
							"<td></td>" +
						"</tr>" +
						"<tr>" +
							"<td class='formLabel' nowrap>Total price :</td>" +
							"<td style='color:red' id='price'>" + prices[2*plan] + "</td>" +
							"<td></td>" +
						"</tr>" +
						"<tr>" +
							"<td></td>" +
							"<td colspan='2'><table><tr><td><input type='button' value='" + (User.old? "Signup" : (User.plan<plan || User.plan==FREEPLAN? "Upgrade" : "Downgrade")) + "' id='upgradeButton' onclick='javascript:upgradeButtonClicked("+plan+")'/></td><td><input type='button' value='Cancel' id='cancelButton' onclick='javascript:cancelButtonClicked()'/></td></tr></table></td>"+
						"</tr>"+
						"</tbody></table></form>";
						$("profileDiv").innerHTML = str;
						changeFormStyle($("profileDiv"), true, true,false,false,false,false,true);

}
function upgradeButtonClicked(accounttype){
	var cycle = 0;//for now only month $("cycle").value;
	var password = $("pass").value;
	$("pass").value = "";
	var data = "type=" + (User.plan == FREEPLAN ?"signup4paid" : "upgrade") + "&id=" + User.userId + "&password="+password+"&accounttype="+accounttype+"&cycle="+cycles[cycle];
					$('upgradeerror').innerHTML =  Framework.Lang.checking+"...";
					Request.sendPOST(Framework.userURL, data,upgradeResponse);
}
function cancelButtonClicked(){
	$("profileDiv").innerHTML =getProfileInner();
}
function upgradeResponse(response){
				var responseChildNodes = response.responseXML.documentElement.childNodes;
				var res = responseChildNodes[0].firstChild.nodeValue;
				switch(res) {
				case "success":
						if(responseChildNodes.length > 1){
						$("paypalsignupform").innerHTML = responseChildNodes[1].firstChild.nodeValue;
						$("paypalsignupform").firstChild.submit();
						}
					break;
					default: $('upgradeerror').innerHTML = res;
					}
				}
function getProfileInner(){
	//if(User.plan == 5) User.plan = 1;
	//if(User.plan == 6) User.plan = 2;
	var wd = (User.plan ==FREEPLAN ? 85 : 100);
	var inner = '<table border="0" style="color:black;font-size:11px;white-space:nowrap;" height="200px" width="470px" class="plantable" cellpadding="0" cellspacing="0">' +
	 '<tr>' +
    '<th style="color:white">*</th>'+
	(User.plan ==FREEPLAN ? '<th scope="col" style="color:#C0C0C0;text-align:center" width="95px"><div style="font-size:15px;font-weight:bold;">Free</div><div style="padding-bottom:23px"></div><img src="images/homePage/your_plan.png" class="signup" plan="3" /></th>' : '') + 
    '<th scope="col" style="color:#7dcc16;text-align:center" width="' + wd+ 'px"><div style="font-size:17px;font-weight:bold;">Personal</div><div style="padding-bottom:3px">$1.80/month</div>' +(User.old ? '<img src="images/homePage/signup.gif" class="signup" plan="0" onclick="javascript:showUpgradeForm(this);" />' : (User.cycle!='Y' || User.plan==0 ? '<img src="images/homePage/' + (User.plan==0 ? 'your_plan.png"' : (PlanUtils.comparePlans(User.plan,0) > 0? 'downgrade.png':'upgrade.png') + '" name="upgrade" onclick="javascript:showUpgradeForm(this);"')  + ' class="signup" plan="0" />' : '')) +'</th>'+
    '<th scope="col" style="color:#7dcc16;text-align:center" width="' + wd+ 'px"><div style="font-size:17px;font-weight:bold;">Personal+</div><div style="padding-bottom:3px">$4.50/month</div>' +(User.old ? '<img src="images/homePage/signup.gif" class="signup" plan="5" onclick="javascript:showUpgradeForm(this);" />' : (User.cycle!='Y' || User.plan==5 ? '<img src="images/homePage/' + (User.plan==5 ? 'your_plan.png"' : (PlanUtils.comparePlans(User.plan, 5) > 0? 'downgrade.png' : 'upgrade.png')  + '" name="upgrade" onclick="javascript:showUpgradeForm(this);"')  + ' class="signup" plan="5" />' : '')) +'</th>'+
	'<th scope="col" style="color:#faa708;text-align:center" width="' + wd+ 'px"><div style="font-size:19px;font-weight:bold;">Basic</div><div style="padding-bottom:3px">$8.28/month</div>' +(User.old ? '<img src="images/homePage/signup.gif" class="signup" plan="1" onclick="javascript:showUpgradeForm(this);" />' : (User.cycle!='Y' || User.plan==1 ? '<img src="images/homePage/' + (User.plan==1 ? 'your_plan.png"' : (PlanUtils.comparePlans(User.plan, 1) > 0? 'downgrade.png' : 'upgrade.png')  + '" name="upgrade" onclick="javascript:showUpgradeForm(this);"')  + ' class="signup" plan="1" />' : '')) +'</th>'+
	'<th scope="col" style="color:#faa708;text-align:center" width="' + wd+ 'px"><div style="font-size:19px;font-weight:bold;">Basic+</div><div style="padding-bottom:3px">$15.30/month</div>' +(User.old ? '<img src="images/homePage/signup.gif" class="signup" plan="6" onclick="javascript:showUpgradeForm(this);" />' : (User.cycle!='Y' || User.plan==6 ? '<img src="images/homePage/' + (User.plan==6 ? 'your_plan.png"' : (PlanUtils.comparePlans(User.plan, 6) > 0 ? 'downgrade.png' : 'upgrade.png')  + '" name="upgrade" onclick="javascript:showUpgradeForm(this);"')  + ' class="signup" plan="6" />' : '')) +'</th>'+
	'<th scope="col" style="color:#db5800;text-align:center" width="' + wd+ 'px"><div style="font-size:21px;font-weight:bold;">Plus</div><div style="padding-bottom:3px">$29.88/month</div>' +(User.old ? '<img src="images/homePage/signup.gif" class="signup" plan="2" onclick="javascript:showUpgradeForm(this);" />' : (User.cycle!='Y' || User.plan==2 ? '<img src="images/homePage/' + (User.plan==2 ? 'your_plan.png"' : (PlanUtils.comparePlans(User.plan, 2) > 0? 'downgrade.png' : 'upgrade.png')  + '" name="upgrade" onclick="javascript:showUpgradeForm(this);"')  + ' class="signup" plan="2" />' : '')) +'</th>'+
	'<th scope="col" style="color:#db5800;text-align:center" width="' + wd+ 'px"><div style="font-size:21px;font-weight:bold;">Plus+</div><div style="padding-bottom:3px">$57.60/month</div>' +(User.old ? '<img src="images/homePage/signup.gif" class="signup" plan="7" onclick="javascript:showUpgradeForm(this);" />' : (User.cycle!='Y' || User.plan==7 ? '<img src="images/homePage/' + (User.plan==7 ? 'your_plan.png"' : (PlanUtils.comparePlans(User.plan, 7) > 0? 'downgrade.png' : 'upgrade.png')  + '" name="upgrade" onclick="javascript:showUpgradeForm(this);"')  + ' class="signup" plan="7" />' : '')) +'</th>'+
	'<th scope="col" style="color:#8DCCEE;text-align:center" width="' + wd+ 'px"><div style="font-size:23px;font-weight:bold;">Pro</div><div style="padding-bottom:3px">$99.90/month</div>' +(User.old ? '<img src="images/homePage/signup.gif" class="signup" plan="8" onclick="javascript:showUpgradeForm(this);" />' : (User.cycle!='Y' || User.plan==8 ? '<img src="images/homePage/' + (User.plan==8 ? 'your_plan.png"' : (PlanUtils.comparePlans(User.plan, 8) > 0? 'downgrade.png' : 'upgrade.png')  + '" name="upgrade" onclick="javascript:showUpgradeForm(this);"')  + ' class="signup" plan="8" />' : '')) +'</th>'+    
  '</tr>'+
  '<tr>'+
    '<td class="permission">Number of SE Monitors *</td>'+
	(User.plan ==FREEPLAN ? '<td>5</td>' : '')+	    
	    '<td style="font-weight:bold">40</td>'+
	    '<td style="font-weight:bold">100</td>'+
	    '<td style="font-weight:bold">200</td>'+
	    '<td style="font-weight:bold">400</td>'+
	    '<td style="font-weight:bold">800</td>'+
	    '<td style="font-weight:bold">1600</td>'+
	    '<td style="font-weight:bold">3000</td>'+
  '</tr>'+
  '<tr>'+
    '<td class="permission">Number of Search Engines</td>'+
	(User.plan ==FREEPLAN ? '<td style="font-weight:bold">4</td>' : '')+	    
	    '<td style="font-weight:bold">4</td>'+
	    '<td style="font-weight:bold">4</td>'+
	    '<td style="font-weight:bold">33</td>'+
	    '<td style="font-weight:bold">33</td>'+
	    '<td style="font-weight:bold">33</td>'+
	    '<td style="font-weight:bold">33</td>'+
	    '<td style="font-weight:bold">33</td>'+
  '</tr>'+
	  '<tr>'+
	    '<td class="permission">Email, IM notifications</td>'+
	    (User.plan ==FREEPLAN ? '<td style="font-weight:bold">-</td>' : '')+
	    '<td><img src="images/homePage/check.png"/></td>'+
	    '<td><img src="images/homePage/check.png"/></td>'+
	    '<td><img src="images/homePage/check.png"/></td>'+
	    '<td><img src="images/homePage/check.png"/></td>'+
	    '<td><img src="images/homePage/check.png"/></td>'+
	    '<td><img src="images/homePage/check.png"/></td>'+
	    '<td><img src="images/homePage/check.png"/></td>'+
	  '</tr>'+
  '<tr>'+
    '<td class="permission">Max Search Position</td>'+
	(User.plan ==FREEPLAN ? '<td><span style="font-weight:bold">30</span> results</td>' : '')+
    '<td><span style="font-weight:bold">30</span> results</td>'+
    '<td><span style="font-weight:bold">30</span> results</td>'+
    '<td><span  style="font-weight:bold">30</span> results</td>'+
	'<td><span  style="font-weight:bold">30</span> results</td>'+
	'<td><span  style="font-weight:bold">30</span> results</td>'+
	'<td><span  style="font-weight:bold">30</span> results</td>'+
	'<td><span  style="font-weight:bold">30</span> results</td>'+
  '</tr>'+
  '</table><div style="font-size:11px;color:#999999;text-align:left;margin-bottom:2px;">* - one keyword/search engine/URL is considered as one monitor, as well as each SE/URL in backlinks, index pages, pageranks, ranking</div><div style="padding-top:5px;font-weight:bold;">';
if(User.expire != 'Jan 1, 1970' && User.plan != FREEPLAN)
inner += 'Your account will be active till <span style="background-color:#FFCD55">'+ User.expire +'</span>.  If you keep your account open past that time you\'ll be charged <span style=background-color:#FFCD55">'+  (User.cycle!='Y' ? prices[2*User.plan] : '100$/year') +'</span> for the service. If you don\'t want to continue using monitis, just cancel before you\'re billed on <span style="background-color:#FFCD55">'+ User.expire + '</span> and you won\'t be charged.';
else
inner += 'Note: All paid plans include 30-days FREE trial';
inner += '</div>';
return inner;
}
function getProfile(){
	var outer = '<div id="profileDiv">' +
	getProfileInner() + '</div>';

	/*var inner = "<div style='color:#495DC8;padding-left:5px'>";
	inner += "<div style='padding-bottom:3px;border-bottom:1px solid #EEEEEE'>Profile</div>";
	inner += "<div style='padding-top:3px;height:25px;border-bottom:1px solid #EEEEEE'>" + User.username + "</div>";
	inner += "<div align='right' style='padding-right:10px;padding-top:4px;'><input type='button' value='Membership plan' />&nbsp;&nbsp;<input type='button' value='Update profile' /></div></div>";*/
	return outer;
}
function showSkins() {
	$("general").className = "";
	$("skins").className = "selected";
	var formData = DialogWindow.getFormData();
      	onlycurtabload = ( formData["onlycurtabload"] == "on" );

      	$("settings_content").innerHTML = getSkinsList();

		$(OPTIONS.theme+"_skin").className = "selected";

}
function getSMSContent(){
	var content='<div id="smscontent"><div><b>Current Balance:</b> You have used '+ User.smsUsed +' out of  ' + User.smsLimit +  ' available SMS messages</div>';
	content+='<div>---------------------------------------------------------------------------------</div>';
	content+='<div style="margin-top: 20px"><b>Purchase SMSs</b></div>';
	/*if(User.plan > PERSONALPLAN && User.plan != FREEPLAN)
	content += 'You have used '+ User.smsUsed +' out of  ' + User.smsLimit +  ' available SMS messages';
	else
	content += 'Please upgrade your plan in order to use this feature';*/
	
	//content += "</div><div>";
	var str = "<form action=''><table  cellpadding='2' cellspacing='5' class='text'><tbody>"+
						"<tr>"+
							"<td colspan='3'><div id='buysmserror' style='color:red'></div></td>"+
						"</tr>" +
						"<tr>" +
							"<td class='formLabel' nowrap>Payment provider :</td>" +
							"<td><table border=\"0\" cellpadding=\"10\" cellspacing=\"0\" align=\"center\"><tr><td align=\"center\"></td></tr><tr><td align=\"center\"><a href=\"#\" onclick=\"javascript:window.open('https://www.paypal.com/us/cgi-bin/webscr?cmd=xpt/cps/popup/OLCWhatIsPayPal-outside','olcwhatispaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=400, height=350');\"><img  src=\"https://www.paypal.com/en_US/i/bnr/horizontal_solution_PPeCheck.gif\" border=\"0\" alt=\"Solution Graphics\"></a></td></tr></table></td>" +
							"<td></td>" +
						"</tr>" +
						"<tr>" +
							"<td class='formLabel' nowrap>SMSs:</td>" +
							"<td colspan='2' style='padding-left: 15px;'><input style='width:53%;' id='smscount' value='50' onkeyup='calculateSMSPrice()' onblur='calculateSMSPrice()'/> (Min 20 SMSs)</td>" +
							"<td></td>" +
						"</tr>"+
					/*	"<tr>"+
							"<td class='formLabel'>Password :</td>"+
							"<td><input type='password' allowBlank=false id='smspass' value='' style='width:96%' /></td>"+
							"<td id='passwordImg'>*</td>"+
						"</tr>"+*/
						"<tr>" +
							"<td class='formLabel' nowrap>Price per SMS:</td>" +
							"<td style='padding-left: 15px;' id='smsprice'>$"+SMSPRICE+"</td>" +
							"<td></td>" +
						"</tr>" +
						"<tr>" +
							"<td class='formLabel' nowrap>Total price:</td>" +
							"<td style='padding-left: 15px;' id='smstotalprice'>$" + 50*SMSPRICE + "</td>" +
							"<td></td>" +
						"<tr>" +
							"<td></td>" +
							"<td colspan='2' style='padding-left: 15px;'><table><tr><td><input type='button' value='"+Framework.Lang.order+"' onclick='javascript:buySMSButtonClicked()'/></td></tr></table></td>"+
						"</tr>"+
						
						"</tbody></table></form>";
						content += str + "</div></div>";
	return content;
}
/*function enablesmscountkey(){
	var inp = $("smscount");
	if(!inp.keyMap){
		inp.keyMap = new Ext.KeyMap(inp, { key:"0123456789",    fn: calculateSMSPrice, scope:inp, correctScope:true } );
		 inp.keyMap.enable();
	}
	  
	
}*/

function calculateSMSPrice(){
	$('buysmserror').innerHTML = "";
	var smscount = parseInt($("smscount").value);
		if(isNaN(smscount)){
			$('buysmserror').innerHTML = Framework.Lang.invalidSMSCount;
			return;
			}
		if(smscount < 20){
			$('buysmserror').innerHTML = Framework.Lang.minSMSNumber;
			return;
		}
		$("smstotalprice").innerHTML = "$" + smscount*SMSPRICE;
		return "ok";
} 
function buySMSButtonClicked(){
	if(calculateSMSPrice() !="ok") return;
	//var password = $("smspass").value;
	//$("smspass").value = "";
	var smscount = parseInt($("smscount").value);
	var data = "type=buysms&id=" + User.userId + "&count="+smscount;
	$('buysmserror').innerHTML =  Framework.Lang.waitForPayPal+"...";
	Request.sendPOST(Framework.userURL, data, buysmsResponse);
}

function buysmsResponse(response){
				var responseChildNodes = response.responseXML.documentElement.childNodes;
				var res = responseChildNodes[0].firstChild.nodeValue;
				switch(res) {
				case "success":
						if(responseChildNodes.length > 1){
						$("paypalsignupform").innerHTML = responseChildNodes[1].firstChild.nodeValue;
						$("paypalsignupform").firstChild.submit();
						}
					break;
					default: $('buysmserror').innerHTML = res;
					}
				}
SMSPRICE=0.25;
