function serializeForm(form, options) {
    var elements=Form.getElements(form);
    
    if (typeof options != 'object') options = { hash: !!options };
    else if (Object.isUndefined(options.hash)) options.hash = true;
    var key, value, submitted = false, submit = options.submit;
    
    var data = elements.inject({ }, function(result, element) {
        if (!element.disabled && element.name) {
            key = element.name; value = $(element).getValue();
            if (value != null && (element.type != 'submit' || (!submitted &&
                submit !== false && (!submit || key == submit) && (submitted = true)))) {
                if (key in result) {
                    if (!Object.isArray(result[key])) result[key] = [result[key]];
                    result[key].push(value);
                }
              else result[key] = value;
            }
        }
        return result;
    });
    
    return options.hash ? data : Object.toQueryString(data);
}

var formHandler= Class.create({
    form: null,
    identifier: null,
    updater: null,
    submitButton: null,
    submitText: null,
	requiredText: 'required',
    
    initialize: function(name,options) {
        if(typeof name=='object'){
            Element.extend(name);
            
            this.form=name;
        }else{
            this.form=$(name);
        }
        
		if( typeof(requiredText) != "undefined" ){
			this.requiredText=requiredText;
		}
		
        if( options ){
            //options=options.evalJSON();
        }
        
        options = Object.clone(options);
        
        this.options=options;
        
        var el, i = 0;
        while (el = this.form.elements[i++]){
            if( el.name=='submit' && el.type!='submit' ){
                alert('error: form has field called submit which is not a submit button');
                continue;
            }else if( el.name=='action' ){
                alert('error: form has field called action');
                continue;
            }else if( el.name=='target' ){
                alert('error: form has field called target');
                continue;
            }else if( el.name=='reset' ){
                alert('error: form has field called reset');
                continue;
            }
            //alert(el.type);
            if( el.type != 'hidden' && el.type!='submit' && el.type!='button' && el.type!='image' && el.type!=undefined && el.type!='fieldset' ){
                //el.observe('change', reset_field.bindAsEventListener(el)); //doesn't work in ie!
                new Form.Element.EventObserver(el, this.reset_field.bindAsEventListener(el));
            }else if( el.type=='submit' || el.type=='image' ){
                this.submitButton=el;
            }
        }
        
        this.form.observe('submit', this.onSubmit.bindAsEventListener(this));

        if (this.form.select('input[name="UPLOAD_IDENTIFIER"]')[0]) {
            this.identifier = this.form.select('input[name="UPLOAD_IDENTIFIER"]')[0].value;
        
            var iframe = document.createElement('iframe');
            iframe.setAttribute('id', 'upload');
            iframe.setAttribute('name', 'upload'); 
            iframe.id='upload'; //IE
            iframe.name='upload'; //IE
            iframe.setAttribute('style', 'display: none; width: 0; height: 0;');
            iframe.setAttribute('src', 'about:blank');
            iframe.style.display='none'; //IE
            iframe.style.width='0'; //IE
            iframe.style.height='0'; //IE
            
            this.form.appendChild(iframe);
            
            
            //alert($('upload'));
            //alert($('upload').name);
            
            //alert(this.form.targer);
            
            if( self.frames['upload'] ){
                if(self.frames['upload'].name != 'upload') {
                    self.frames['upload'].name = 'upload';
                }
            }
            
            this.form.target='upload';
        }
    },
    
    reset_field: function(e)
    {
        //this.style.backgroundColor='#FFFFFF';
    },
    
    onSubmit: function(evt)
    {
        if( evt ){
            Event.stop(evt);
        }
        
        if( this.submitButton ){
            submitText=this.submitButton.innerHTML;
        
            this.submitButton.disabled=true;
            this.submitButton.innerHTML='Saving...';
        }
    
        var url = location.href;
        
        var pars = serializeForm(this.form);
            pars=pars+'&validate=1';
            
    
        $$('div.error').each(function(name, index) {
            name.parentNode.removeChild(name);
        });
        
        var myAjax = new Ajax.Request(
                url, 
                {
                    method: 'post', 
                    parameters: pars, 
                    onComplete: this.submitResponse.bindAsEventListener(this)
        });
        
        if( typeof(Ext)!=='undefined' ){
            Ext.MessageBox.show({                
                msg: 'Saving your data, please wait...',
                progressText: 'Saving...',
                width:300,
                wait:true,
                waitConfig: {interval:200},
                animEl: 'mb7'
            });
        }
                
        return false;    
    },
    
    submitResponse: function(originalRequest)
    {
        
        options = this.options;

        if( options.errorMethod==undefined ){
            options.errorMethod='inline'
        }
        
        result = originalRequest.responseText;
        debug(result);
        
        try {
            returned=result.evalJSON();
        } catch(ex) {
            alert(result);
        }
    
        if( this.submitButton ){
            this.submitButton.disabled=false;
            this.submitButton.innerHTML=submitText;
        }
    
        if( parseInt(returned)!=returned-0 ){
            if( typeof(Ext)!=='undefined' ){
                Ext.MessageBox.hide();
            }
            
            if( returned.length>0 ){
                var errors='';
                
                for( i=0;i<returned.length;i++ ){
                    var pos=returned[i].indexOf(' ');
                    
                    if( pos==-1 ){
                        var field=returned[i];
                        var error=this.requiredText;
                    }else{
                        var field=returned[i].substring(0,pos);
                        var error=returned[i].substring(pos+1);
                    }
                    
                    var parent='';
                    
                    if( this.form[field] ){
                        if( this.form[field].style ){
                            if( !firstError ){
                                var firstError=field;
                            }
                            
                            parent=this.form[field].parentNode;
                        }else if( this.form[field][0] ){
                            parent=this.form[field][0].parentNode.parentNode;
                        }
                        errors+=field+'\n';
                    }else if( this.form[field+'[]'] ){
                        if( this.form[field+'[]'].style ){
                            if( !firstError ){
                                var firstError=field;
                            }
                            
                            parent=this.form[field+'[]'].parentNode;
                        }else if( this.form[field+'[]'][0] ){
                            
                            parent=this.form[field+'[]'][0].parentNode.parentNode;
                        }
                        
                        errors+=field+'\n';
                    }else{
                        errors+=error+'\n';
                    }
                                            
                    if( parent && options.errorMethod=='inline' ){
                        div = document.createElement("div");
                        div.innerHTML=error;
                        div.style.color='red';
                        div.className='error';
                        
                        parent.appendChild(div);
                    }
                }
                
                if( options.errorMethod=='alert' ){
                    alert('Please check the required fields\n'+errors);
                }
				
				var tab, node;
				
				node=this.form[firstError];
				
				while( node=node.parentNode ){					
					if( node.style.display=='none' ){
						tab=node.id;
						break;
					}
					
					if( node.nodeName=='BODY' ){
						break;
					}
				}
				
				if( tab && set_tab ){
					debug('switch tab: '+tab);
					
					set_tab(tab);					
				}
				
                this.form[firstError].focus();

				if( Recaptcha ){
					Recaptcha.reload();
				}
            }
        }else{
            if( this.identifier ){
                this.onCreate();
            }
            
            window.onbeforeunload = null;
            
            this.form.submit();
        }
    },

    onCreate: function() {
        $('upload').observe('load', this.onComplete.bindAsEventListener(this));
        
        if( typeof(Ext)!=='undefined' ){
            Ext.MessageBox.show({
                title: 'Please wait - Uploading',
                msg: 'Uploading..',
                progressText: 'Initializing...',
                width:400,
                progress:true,
                closable:false
            });
            updater = new PeriodicalExecuter(this.__tick.bind(this), 1);
        }
    },

    // Timer function
    __tick: function(identifier) {
        new Ajax.Request('/_lib/ajax/upload_progress.php', { 
            method: 'post', 
            parameters: { 'uniq': this.identifier }, 
            onComplete: function(result){
               // console.log(result.responseText);
                var data=eval('('+result.responseText+')');
                //alert(data);
                if( data.perc ){
                    Ext.MessageBox.updateProgress((data.perc/100), data.perc+'% completed');
                    Ext.MessageBox.updateText(data.status);
                }else{
                    /*
                    this.failCount++;
                    
                    if( this.failCount == 10 ){
                        Ext.MessageBox.hide();
                        //updater.stop();
                        //window.stop();
                        //document.execCommand('Stop')
                        alert('Upload has stopped. Please check file size.');
                        window.location.href=window.location.href
                    }
                    */
                }
            }
        });
    },

    onComplete: function() {
        updater.stop();
        window.location.href=this.form.select('input[name="redirect"]')[0].value
    }
});






var cms_lists=new Array();

function debug(log_txt) {
    if (window.console != undefined) {
        console.log(log_txt);
    }
}

function updateOrder()
{
	//alert(Sortable.serialize('tbody_list'));
	var options = {
					method : 'post',
					postBody : 'section='+section+'&'+Sortable.serialize('items')
				  };

	//location.href='_lib/cms/_ajax/update_order.php?'+options['postBody'];
	new Ajax.Request('_lib/cms/_ajax/update_order.php', options);
}

function toggle_advanced(on)
{
	if( $('csv') ){
		$('csv').style.display="none"; 
	}

	var field=$('search_form');

	if( !on ){ 
		for (i = 0; i < field.length; i++){
			if( field[i].type!='hidden' && field[i].type!='submit' && field[i].type!='button' ){
				if( field[i].name!='s' ){
					field[i].disabled = true;
				}else{
					field[i].disabled = false;
				}
			}
		}
		
		Effect.toggle('advanced', 'blind');
		Effect.toggle('basic', 'appear');
	}else{ 
		for (i = 0; i < field.length; i++){
			if( field[i].type!='hidden' && field[i].type!='submit' && field[i].type!='button' ){
				if( field[i].name=='s' ){
					field[i].disabled = true;
				}else{
					field[i].disabled = false;
				}
			}
		}
		
		Effect.toggle('advanced', 'blind');
		Effect.toggle('basic', 'appear');
	}
}

function toggle_import()
{ 	
	if( $('advanced') ){
		$('advanced').style.display="none"; 
	}
	if( $('basic') ){
		$('basic').style.display="block"; 
	}
	
	Effect.toggle('csv', 'blind');	
}

function checkForm()
{
	var url = '/_lib/cms/_ajax/import.php';
	var pars = Form.serialize($('theForm'));
	
	showProgress();
		
	var myAjax = new Ajax.Request(
		url, 
		{
			method: 'post', 
			parameters: pars, 
			onComplete: function(result){
				//errors= new Array();
				//alert(result.responseText);
				var returned=result.responseText;
				
				debug(returned);
				
				o=returned.evalJSON();
			
				if( o.success ){
					alert(o.info);
					location.href=location.href;
				}else{
					//refresh page
					Ext.MessageBox.hide();					
					alert(returned);
				}
			}
		}
	);
			
	return false;
}

function remove_options(option)
{	
	//remove options
	for( i=option.options.length; i>0; i-- ){
		option.options[i]=null;
	}
	
	option.disabled=true;
	
	return true;
}

function add_options(originalRequest,target_option, value)
{
	result = originalRequest.responseText;

	models=eval('('+result+')');

	var mod=target_option;
	
	var selectedIndex=0;

	if( !models )
	{
		optval="";
		opttext="Not Applicable"
		mod.options[0]=new Option(opttext,optval, true,true);
	}else{
		for( i=0;i<models.length;i++ ){
			mod.options[i+1]=new Option(models[i],i, true,true);
			
			if( models[i].replace(/-/,'').toLowerCase()==value.replace(/-/,'').toLowerCase() ){
				selectedIndex=i+1;	
			}
		}
		
		mod.options[0].value=""
		mod.options[0].text=""
		mod.disabled=false;
	}
	mod.options.selectedIndex=selectedIndex;
}

function changeFile()
{
	$('csv_preview').innerHTML='';

	for( j in fields ){
		if( typeof(fields[j])=='string' ){
			remove_options($('field_'+fields[j]));
		}
	}
	
	$('csv_loaded').style.display='none';
	
	$('file_field').innerHTML=file_field_html;

	
	Event.observe('file','change',postForm);
}

var updater;
var upload;

var fN = function callBack(result) {
	updater.stop();
	Ext.MessageBox.hide();

	//alert(result.responseText);

	//open preview
	result=eval('('+result.responseText+')');
	
	if( result.error ){
		alert( result.error )
	}else{
		loadFile(result.file);
	}
}
var callback = { success:fN, upload:fN }

function showUploadProgress(){
	Ext.MessageBox.show({
		title: 'Please wait - Uploading',
		msg: 'Uploading..',
		progressText: 'Initializing...',
		width:400,
		progress:true,
		closable:false
	});
}

function updateUploadProgress(upload)
{
	Ext.MessageBox.updateProgress((upload.perc/100), upload.perc+'% completed');
	Ext.MessageBox.updateText(upload.status);
}

function checkUploadProgress() {
	var myAjax = new Ajax.Request(
		'/_lib/ajax/upload_progress.php', 
		{
			method: 'POST', 
			parameters: { 'uniq': $F['uniq'] }, 
			onComplete: function(result){
				if(result.responseText){
					upload=eval('(' + result.responseText + ')');
					updateUploadProgress(upload);
				}
			}
		});
}

function postForm()
{
	var target='/_lib/cms/_ajax/csv_upload.php';
	var formName=$('theForm');
	var up=1;

	showUploadProgress();
	updater = new PeriodicalExecuter(checkUploadProgress, 1);
	
	YAHOO.util.Connect.setForm(formName,up);
	YAHOO.util.Connect.asyncRequest('POST',target,callback);
}

function showProgress(){
	Ext.MessageBox.show({
		title: 'Please wait - Importing',
		msg: 'Importing..',
		progressText: 'Initializing...',
		width:400,
		progress:true,
		closable:false
	});
}

var file_field_html;

function loadFile(file)
{
	var url = '/_lib/cms/_ajax/csv_fields.php';
	var pars = 'csv='+file;
			
	var myAjax = new Ajax.Request(
		url, 
		{


			method: 'post', 
			parameters: pars, 
			onComplete: function(result){
				//errors= new Array();
				//alert(result.responseText);
				
				file_field_html=$('file_field').innerHTML;
				
				if( result.responseText=='null' ){
					alert('Error: can\'t read file. Try converting to CSV.');
					changeFile();
					return false;
				}
				
				
				var url = '/_lib/cms/_ajax/csv_preview.php';
				var pars = 'csv='+file;
				
				var myAjax = new Ajax.Updater(
					'csv_preview', 
					url, 
					{
						method: 'post', 
						parameters: pars
					});
				
				for( j in fields ){
					if( typeof(fields[j])=='string' ){
						remove_options($('field_'+fields[j]));
						add_options(result,$('field_'+fields[j]),fields[j]);
					}
				}
				$('csv_loaded').style.display='block';

				$('file_field').innerHTML='<strong>'+file+'</strong> <a href="#" onclick="changeFile();">change</a><input type="hidden" name="csv" value="'+file+'">';
				
			}
		}
	);
}

















function setRows(textarea)
{
	//var textarea = _gel("stickyText12");
	var cols = textarea.cols;
	var str = textarea.value;
	str = str.replace(/\r\n?/, "\n");
	var lines = 2;
	var chars = 0;
	for (i = 0; i < str.length; i++) {
		var c = str.charAt(i);
		chars++;
		if (c == "\n" || chars == cols) {
			lines ++;
			chars = 0;
		}
	}
	
	if( textarea.rows>lines ){
		lines=textarea.rows;	
	}
	
	//textarea.setAttribute("rows", lines);
	textarea.style.height = lines*14 + "px";
}

function initForms()
{
	var forms=$$('form.validate');
	
	forms.each(function(name, index) {		
		new formHandler(name, name.readAttribute('validateoptions') );
	});
}

function initAutoGrows()
{
	var tas=$$('textarea.autogrow');
	
	tas.each(function(name, index) {
		name.style.overflow = "hidden";
		name.style.fontSize = 12 + "px";
		setRows(name);
		
		Event.observe(name, 'keyup', function() { setRows(name) });
	});
}

function initComboBoxes()
{
	var fields=$$('select.combobox');
	
	fields.each(function(name, index) {
		new Ext.form.ComboBox({
			typeAhead: true,
			triggerAction: 'all',
			transform:name,
			width:350,
			forceSelection:true
		});
	});
}

function initDateFields()
{
	/*
	var inputs=$$('input.date');
	
	inputs.each(function(name, index) {
		new Ext.form.DateField({
			applyTo: name,
			format: 'd-m-Y',
			width: 100
		});
	});
	*/

	jQuery('input.date').each(function() {
		jQuery(this).datepicker({
			dateFormat: 'dd/mm/yy',
			altFormat: 'dd/mm/yy'
		});
	});
}

function initTimeFields()
{
	var inputs=$$('input.time');
	
	inputs.each(function(name, index) {
		new Ext.form.TimeField({
			applyTo: name,
			format: 'H:i',
			width: 100
		});
	});
}

function initMaps()
{
	var inputs=$$('input.map');
	
	if( inputs.length==0 ){
		return;
	}
	
	google.load("maps", "3", {other_params: "sensor=false", "callback" : function(){
		var inputs=$$('input.map');
		
		inputs.each(function(name, index) {		
			div = document.createElement("div");
			div.style.width='600px';
			div.style.height='400px';
			
			name.parentNode.appendChild(div);
			
			var coords=null;
			
			if( name.value ){
				coords = name.value.split(',');
			}else{
				coords=[51.8100844,-0.02911359999995966];
			}
			
			var lat=coords[0];
			var lng=coords[1];
			
			var latlng = new google.maps.LatLng(lat, lng);
			var myOptions = {
				zoom: 15,
				center: latlng,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			}
			map = new google.maps.Map(div, myOptions);
			
			var marker = new google.maps.Marker({
				map: map,
				position: latlng,
				draggable:true
			});

			google.maps.event.addListener(marker, "dragend", function() {				
				var latlng=marker.getPosition();
				name.value=latlng.lat()+','+latlng.lng();
			});	
		});
	}});
}

function initRatingFields()
{
	jQuery('select.rating').each(function() {
		jQuery(this.parentNode).stars({
			inputType: "select"
		});
	});
}

function numbersonly(e){

	var unicode=e.charCode? e.charCode : e.keyCode
	
	if (unicode!=8 && unicode!=46 && unicode!=9){ //if the key isn't the backspace key or dot or tab (which we should allow)
		if (unicode<48||unicode>57){ //if not a number
			return false //disable key press
		}
	}
}
function addItem(aList,aField) {
	rows++;

	var ul = document.getElementById(aList);
	li = document.createElement("li");
	li.setAttribute('id', 'item-' + rows);
	
	var itemHTML='<input type="hidden" id="image'+rows+'" name="'+aField+'[]" value="" size="5"> ';
	itemHTML+='<img src="images/thumb.php?width=100&height=100&image=" id="image'+rows+'_thumb" width="100" height="100" /><br /> ';
	itemHTML+='<label id="image'+rows+'_label">No file selected</label> ';
	//itemHTML+='<span class="link" onClick="phpUpload(\'image'+rows+'\')">Choose</span> ';
	itemHTML+='<a href="javascript:void(0)" class="link" onClick="delItem(\'item-'+rows+'\')">Delete</a>';
	
	li.innerHTML=itemHTML;
	
	ul.appendChild(li); 
	
	Sortable.create(aField+'_files');
	
	phpUpload('image'+rows);
}

function delItem(aItem,aField) {
	rows--;
	
    var obj = document.getElementById(aItem);
    obj.parentNode.removeChild(obj);
	
	Sortable.create(aField+'_files');
}

function addFile(aList,aField) {
	rows++;

	var ul = document.getElementById(aList);
	li = document.createElement("li");
	li.setAttribute('id', 'item-' + rows);
	
	var itemHTML='<input type="file" name="'+aField+'[]" /> ';
	itemHTML+='<a href="javascript:;" onClick="delFile(\'item-'+rows+'\')">Delete</a>';
	
	li.innerHTML=itemHTML;
	
	ul.appendChild(li); 
	
	Sortable.create(aField+'_files');
	
	//phpUpload('image'+rows);
}

function delFile(aItem,aField) {
	rows--;
	
    var obj = document.getElementById(aItem);
    obj.parentNode.removeChild(obj);
	
	Sortable.create(aField+'_files');
}


function clearFile(field)
{
	var inputHidden = document.getElementById(field);
	inputFile = document.createElement("input");
	inputFile.setAttribute('name', field);
	inputFile.setAttribute('type', 'file');
	
	var cell=inputHidden.parentNode;
	
    while ( cell.childNodes.length >= 1 )
    {
        cell.removeChild( cell.firstChild );       
    } 
	
	cell.appendChild(inputFile);
}

function clearItem(aField) {
    var field = document.getElementById(aField);
	var thumb = document.getElementById(aField+'_thumb');
	var label = document.getElementById(aField+'_label');

	field.value='';
	thumb.src='_lib/phpupload/?func=preview&file=';
	label.innerHTML='';
}

function selectAll(field){
	$$('input').each(function(name, index) {		
		if( name.name==field+'[]' ){
			name.checked=true;
		}
	});
}

function selectNone(field){
	$$('input').each(function(name, index) {		
		if( name.name==field+'[]' ){
			name.checked=false;
		}
	});
}

function addRowrelated(aTable) {
	rows++;

	aRow = aTable.insertRow(aTable.rows.length);

	aCell = aRow.insertCell(0);
	aCell.innerHTML= '<select name="related[]" id="related'+rows+'"></select>					<!--<button type="button" onclick="choose_product(\'related'+rows+'\')">Choose</button>-->';
	
	aCell = aRow.insertCell(1);
	aCell.innerHTML= '<a href="javascript:;" onClick="delRow(this)">Delete</a>';
}

function delRow(row) {
	rows--;
	row.parentNode.parentNode.parentNode.deleteRow(row.parentNode.parentNode.rowIndex);
}


function phpUpload(field)
{
	var file;
	
	if( field ){
		file=document.getElementById(field).value;
	}
	
	window.open('_lib/phpupload/?field='+field+'&file='+file,'Insert','width=700,height=450,screenX=100,screenY=100,left=100,top=100,status,dependent,alwaysRaised,resizable,scrollbars')
}


_editor_url = "_lib/js/xinha-0.96.1/";

xinha_editors = null;
xinha_init    = null;
xinha_config  = null;
xinha_plugins = null;
custom_css=false;

// This contains the names of textareas we will make into Xinha editors
xinha_init = function()
{

	xinha_plugins = xinha_plugins ? xinha_plugins :
	[
		'Phpupload',
		'PasteText',
		'Linker',
		'Stylist',
		'TableOperations',
		'InsertAnchor'
	];
	// THIS BIT OF JAVASCRIPT LOADS THE PLUGINS, NO TOUCHING  :)
	if(!Xinha.loadPlugins(xinha_plugins, xinha_init)) return;

	xinha_editors = xinha_editors ? xinha_editors :
	[
		'copy'
	];

   xinha_config = xinha_config ? xinha_config : new Xinha.Config();
   
//	xinha_config.pageStyle = "@import url(/style/xinha.css);";
	
	xinha_config.toolbar = [
	["popupeditor"],
	[ "formatblock", "space",
	  "bold", "italic", "underline" ],
			
	[ "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator",
	  "insertorderedlist", "insertunorderedlist","outdent","indent", "separator",
	  "forecolor", "hilitecolor", "separator",
	  'inserthorizontalrule', "createlink", 'insertimage', "killword", "htmlmode"
	   ]
	];
	
	xinha_config.Events.onGenerateOnce = function ()
	{
		setTimeout( function(){	
			var editor;
		
			editors.each(function(item) {
				var editor=item;
				
				if( $('language') ){
					if( $F('language')!=='en' ){
						editor=$F('language')+'_'+item;
					}
					

				}
				
				xinha_editors[editor].setEditorContent(xinha_content[editor]);
			} );
		 }, 100);
	}
	
	xinha_config.stripBaseHref=false;
	
	xinha_config.stripScripts=false;
	
	xinha_config.killWordOnPaste=true; //not supported by FF
	
	if( custom_css ){
		xinha_config.stylistLoadStylesheet('/css/cms.css');
	}


	xinha_editors   = Xinha.makeEditors(xinha_editors, xinha_config, xinha_plugins);
	
	// Xinha.startEditors(xinha_editors);
		
	editors.each(function(item) {
		xinha_editors[item].generate();
		generated_editors[item]=true;
	});
}

editors=new Array;
generated_editors=new Array;


function set_language()
{
	var option=$('language');

	for( j=0; j<option.options.length; j++ ){;
		if( $('language_'+option.options[j].value).style.display!='none' ){
			editors.each(function(item) {
				if( option.options[j].value=='en' ){
					xinha_editors[item].deactivateEditor();
				}else{
					xinha_editors[option.options[j].value+'_'+item].deactivateEditor();
				}
			});
			$('language_'+option.options[j].value).style.display='none';
		}
	}

	$('language_'+$F('language')).style.display='block';
	
	editors.each(function(item) {
		if( $F('language')=='en' ){
			xinha_editors[item].activateEditor();
		}else if(!generated_editors[$F('language')+'_'+item]){
			xinha_editors[$F('language')+'_'+item].generate();
			generated_editors[$F('language')+'_'+item]=true;
		}else{
			xinha_editors[$F('language')+'_'+item].activateEditor();
		}
	});
}

function init_tabs()
{
	var tabs=$$('.tab');
	
	tabs.each(function(name, index) {
		if( index==0 ){
			set_tab(name.target);
		}
					   
		name.observe('mousedown', function(e){ set_tab(e.target.target) });
	});
}

function set_tab(target)
{
	var tabs=$$('.tab');
	
	tabs.each(function(name, index) {
		if( target==name.target ){
			$(name.target).style.display='block';
			name.addClassName('current')
		}else{
			$(name.target).style.display='none';
			name.removeClassName('current')
		}
	});
}






var cms_list= Class.create({
	cms_list: null,
	select_all_row: null,
	clear_all_row: null,
	rows: null,
	select_all_pages: null,
	items: null,
	sortable: false,
	section: null,
	
	initialize: function(name) {
		this.form=$(name);
		
		//this.form.select('a[class="select_all"]')[0].observe('click', this.select_all.bindAsEventListener(this));
		//this.form.select('a[class="select_none"]')[0].observe('click', this.select_none.bindAsEventListener(this));
		
		this.form.select('input[class="toggle_select"]')[0].observe('change', this.toggle_select_all.bindAsEventListener(this));
		
		this.form.select('a[class="select_all_pages"]')[0].observe('click', this.select_all_pages.bindAsEventListener(this));
		this.form.select('a[class="clear_all_pages"]')[0].observe('click', this.select_none.bindAsEventListener(this));
		

		if( this.form.select('a[class="toggle_import"]')[0] ){
			this.form.select('a[class="toggle_import"]')[0].observe('click', toggle_import);
		}		
		
		this.select_all_row=this.form.select('tr[class="select_all_row"]')[0];
		
		this.clear_all_row=this.form.select('tr[class="clear_all_row"]')[0];
		this.select_all_pages=this.form.select('input[name="select_all_pages"]')[0];
		
		var checkboxes=this.form.select('input[name="items[]"]');
		
		for( i=0; i<checkboxes.length; i++ ){
			checkboxes[i].observe('click', this.select_row.bindAsEventListener(this));
		}
		
		var rows=this.form.select('tr[class="draggable row"]');	
		for( i=0; i<rows.length; i++ ){
			rows[i].observe('click', this.select_row.bindAsEventListener(this));
		}
		
		if (this.form.select('input[name="sortable"]')[0]) {
			this.sortable=true;			
			
			//this.items=this.form.select('tbody[class="items"]')[0];			
			this.section = this.form.select('input[name="section"]')[0].value;
			

			Sortable.create('items_'+this.section, { handle:'handle', onUpdate:this.update_order.bindAsEventListener(this), only : 'draggable', tag:'TR' });
		}
		
		
		//allow clicking table-cell to select - break in IE7
		/*
		for (i = 0; i < this.form.length; i++){
			if( this.form[i].type=='checkbox' && this.form[i].className!='toggle_select'  ){
				this.form[i].parentNode.observe('click', this.toggle_select.bindAsEventListener(this));
			}
		}*/
	},
	
	select_row: function(e) {
		var target=e.target
		
		if( target.tagName=='TD' ){
			var input=target.parentNode.childNodes[1].childNodes[0];
			
			if( !input.checked ){
				input.checked=true;
				input.parentNode.parentNode.addClassName('result_selected');
			}else{
				input.checked=false;
				input.parentNode.parentNode.removeClassName('result_selected');
			}
		}else{		
			if( target.checked ){
				target.parentNode.parentNode.addClassName('result_selected');
			}else{
				target.parentNode.parentNode.removeClassName('result_selected');
			}
		}
	},
	
	toggle_select: function(e) {
		var row=e.target;
		
		while(row.nodeName!='TR'){
			row=row.parentNode;
		}
			
		if( row.hasClassName('result_selected') ){
			row.removeClassName('result_selected');
			row.select('input[type="checkbox"]')[0].checked=false;
		}else{
			row.addClassName('result_selected');
			row.select('input[type="checkbox"]')[0].checked=true;
		}
		
		this.clear_all_pages();
	},
	
	select_all: function() {
		this.select_none();
		
		for (i = 0; i < this.form.length; i++){
			if( this.form[i].type=='checkbox' ){
				this.form[i].checked = true;
				this.form[i].parentNode.parentNode.addClassName('result_selected');
				//toggle_select(field[i].id);
			}
		}
		
		this.select_all_row.style.display='table-row';
	},
	
	select_none: function() {
		for (i = 0; i < this.form.length; i++){
			if( this.form[i].type=='checkbox' ){
				this.form[i].checked = false;
				this.form[i].parentNode.parentNode.removeClassName('result_selected');
				//toggle_select(field[i].id);
			}
		}
		
		this.clear_all_pages();
	},
	
	toggle_select_all: function() {
		if( this.form.select('input[class="toggle_select"]')[0].checked ){
			this.select_all();
		}else{
			this.select_none();
		}
	},
	
	select_all_pages: function() {
		this.select_all_pages.value=1;
		
		this.select_all_row.style.display='none';
		this.clear_all_row.style.display='table-row';
	},
	
	clear_all_pages: function() {
		this.select_all_pages.value=0;
		
		this.select_all_row.style.display='none';
		this.clear_all_row.style.display='none';
	},
	
	update_order: function() {
		//alert(Sortable.serialize('tbody_list'));
		var options = {
						method : 'post',
						postBody : this.form.serialize()+'&'+Sortable.serialize('items_'+this.section)
					  };
	
		//location.href='_lib/cms/_ajax/update_order.php?'+options['postBody'];
		new Ajax.Request('_lib/cms/_ajax/update_order.php', options);
	}
});


Event.observe(window, 'load', function() {
	initForms();
	initDateFields();
	initMaps();
	initRatingFields();	
});
