advertiser_on = new Image;
advertiser_on.src = '../images/front_page/button_green_92_over.png';
advertiser_off = new Image;
advertiser_off.src = '../images/front_page/button_green_92.png';

publisher_on = new Image;
publisher_on.src = '../images/front_page/button_blue_92_over.png';

publisher_off = new Image;
publisher_off.src = '../images/front_page/button_blue_92.png';

visitor_on = new Image;
visitor_on.src = '../images/front_page/button_gray_162_over.png';

visitor_off = new Image;
visitor_off.src = '../images/front_page/button_gray_162.png';

function turn_on( type,obj ) {
	switch( type ) {
		case 'visitor':
			obj.style.backgroundImage ="url('"+ visitor_on.src+ "')";
			break;
		case 'advertiser':
			obj.style.backgroundImage = "url('"+ advertiser_on.src+ "')";
			break;
		case 'publisher':
			obj.style.backgroundImage ="url('"+ publisher_on.src + "')";
			break;
	}
}

function turn_off( type,obj ) {
	switch( type ) {
		case 'visitor':
			obj.style.backgroundImage ="url('"+ visitor_off.src+ "')";
			break;
		case 'advertiser':
			obj.style.backgroundImage = "url('"+ advertiser_off.src+ "')";
			break;
		case 'publisher':
			obj.style.backgroundImage ="url('"+ publisher_off.src + "')";
			break;
	}
}

function switch_image( plus_image, colaps ) {
	if ( colaps ) {
		if(plus_image.length) {
			if ( plus_image[0].src.match( 'green' ) ) {
				plus_image[0].src = "/images/front_page/button_colaps_green.gif";
				plus_image[0].alt = "Collapse";
			} else if ( plus_image[0].src.match( 'blue' ) ) {
				plus_image[0].src = "/images/front_page/button_colaps_blue.gif";
				plus_image[0].alt = "Collapse";
			}
		}
	} else {
		if(plus_image.length) {
			if ( plus_image[0].src.match( 'green' ) ) {
				plus_image[0].src = "/images/front_page/button_expand_green.gif";
				plus_image[0].alt = "Expand";
			} else if ( plus_image[0].src.match( 'blue' ) ) {
				plus_image[0].src = "/images/front_page/button_expand_blue.gif";
				plus_image[0].alt = "Expand";
			}
		}
	}
}

function expand( obj, expand_class, collapse_class ) {
	var trs = getElementRegexp( obj.id, 'tr' );
	var plus_image = obj.getElementsByTagName( 'img' );

	if ( trs.length > 0 ) {
		switch_image( plus_image, IsHidden( trs[0] ) );
	}

	for( var i=0; i<trs.length; i++ ) {
		if ( trs[i].className.match( expand_class ) || ( !IsHidden( trs[i] ) && trs[i].className.match( collapse_class ) ) ) {
			if ( !ShowHide( trs[i] ) ) {
				plus_image = trs[i].getElementsByTagName( 'img' );
				if(plus_image.length) {
					if ( plus_image[0].src.match( 'green' ) )
						plus_image[0].src = "/images/front_page/button_expand_green.gif";
					else if ( plus_image[0].src.match( 'grey' ) )
						plus_image[0].src = "/images/front_page/button_expand_grey.gif";
					else
						plus_image[0].src = "/images/front_page/button_expand_blue.gif";
				}
			}
		}
	}
}

function ShowHide( obj ) {
	var display_type;
	if ( BrowserDetect.browser == 'Explorer') {
		display_type = 'block';
	}
	else { 
		display_type = 'table-row';
	}

	if ( obj.style ) {
		obj.style.display = IsHidden( obj ) ? display_type : 'none';
		return obj.style.display != 'none';
	}
	return true;
}

function hideShowTDClass( parent, hide_class_name, show_class_name, tag_name ) {

	var hide_classes = getElementsByClassName( parent, hide_class_name, tag_name );
	var show_classes = getElementsByClassName( parent, show_class_name, tag_name );
	var display_type;

	if ( BrowserDetect.browser == 'Explorer') {
		display_type = 'inline';
	}
	else { 
		display_type = 'table-cell';
	}


	for (var i = 0; i < hide_classes.length; i++ ) {
		hide_classes[i].style.display = 'none';
	}

	for (var i = 0; i < show_classes.length; i++ ) {
		show_classes[i].style.display = display_type;		
	}
}

function IsHidden( obj ) {
	if ( obj.style ) {
		return ( obj.style.display == 'none' || obj.style.display == '' );
	}
	return false;
}

function signOut() {
	if( confirm( "Are you sure you want to Sign out?" ) ) {
		location = "/user/logout";
	}
}

function insertAfter(newElement,targetElement) {

	//target is what you want it to go after. Look for this elements parent.

	var parent = targetElement.parentNode;


	//if the parents lastchild is the targetElement...

	if(parent.lastchild == targetElement) {

		//add the newElement after the target element.

		parent.appendChild(newElement);

	} else {

		// else the target has siblings, insert the new element between the target and it's next sibling.

		parent.insertBefore(newElement, targetElement.nextSibling);

	}

}

function getElementRegexp( regexp, element ) {
	var elements = document.getElementsByTagName( element );
	var element_arr = new Array();
	for( i=0; i<elements.length; i++ ) {
		if ( elements[i].id.match( regexp ) && elements[i].id != regexp ) {
			element_arr.push( elements[i] );
		}

	}

	return element_arr;
}

function getElementsByClassName( element, cls, tag_name ) {
	var elements = element.getElementsByTagName( tag_name );
	var element_arr = new Array();
	for( var i=0; i<elements.length; i++ ) {
		if ( elements[i].className.match( cls ) ) {
			element_arr.push( elements[i] );
		}
	}

	return element_arr;
}



/** constructor 

  @param duration integer seconds
  @param <optional> function to run while waiting.

 */
function Pause(duration, busy){
	this.duration= duration * 1000;
	this.busywork = null; // function to call while waiting.
	this.runner = 0;

	if (arguments.length == 2) {
		this.busywork = busy;
	}

	this.pause(this.duration);

} // Pause class

/** pause method 

  @param duration: integer in seconds

 */
Pause.prototype.pause = function(duration){
	if ( (duration == null) || (duration < 0)) {return;}

	var later = (new Date()).getTime() + duration;

	while(true){
		if ((new Date()).getTime() > later) {
			break;
		}

		this.runner++;

		if (this.busywork != null) {
			this.busywork(this.runner);
		}

	} // while

} // pause method

//Text functions:


	function Left(str, n){
		if (n <= 0)
			return "";
		else if (n > String(str).length)
			return str;
		else
			return String(str).substring(0,n);
	}
	function Right(str, n){
		if (n <= 0)
			return "";
		else if (n > String(str).length)
			return str;
		else {
			var iLen = String(str).length;
			return String(str).substring(iLen, iLen - n);
		}
	}

function return_x( e ) {
	if( e ) {
		return e.layerX;
	} else {
		return window.event.x;
	}
}

/////////////////////////////// Edit Menu ////////////////////////////////////

function showEditMenu( obj ){ 
	var menu = obj.childNodes[1];
	menu.style.display = ( menu.style.display == 'none' || menu.style.display == '' )? 'block' :'none';
	menu.style.position = 'absolute';
	if ( BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 7) {
		pos = findPosElement(obj);
		menu.style.top =  pos[1] + 15 + "px"
			menu.style.left = pos[0] + "px";
	}
}

function hideMenu( obj ) {
	if ( on_the_menu == 1 ) {
		doHide(obj);
	}
}

function doHide( obj ) {
	obj.style.display='none';
	obj.style.position = '';
	on_the_menu=0;
}

//////////////////////////////// DURATION //////////////////////////////////

function timestr2secs( str ) {
	var arr = new String(str).split(":");
	return arr[0] * 3600 + arr[1] * 60 + arr[2] * 1;
}

function round2_0digits( num ) {
	return ( num + "" ).length == 1 ? "0" + num : num;
}

function sec2timestr( secs ) {
	secs = Math.round(secs);
	return round2_0digits( Math.floor( secs / 3600 ) ) + ":" + round2_0digits( Math.floor( ( secs % 3600 ) / 60 ) ) + ":" + round2_0digits( ( secs % 60 ) );
}

function fill_durations() {
	var arr = getElementsByClassName( document, "minutes", "select" );
	for( var s = 0; s < arr.length; s++ ) {
		for( var i = 1; i < 60; i++ ) {
			var opt = document.createElement( "option" );
			opt.value = i;
			opt.innerHTML = round2_0digits( i );
			arr[s].appendChild( opt );
		}
	}
}

function get_O_table_ajax(obj, url) {
	if( checkIfOpen( obj ) ) {
		ajax_get_data_async( url,
				function(data, obj) {
					var inner = obj.parentNode.nextSibling.firstChild.firstChild;
					var res = data.firstChild.attributes.getNamedItem( "item" ).value;
					if ( inner.outerHTML ) {
						inner.outerHTML = "<table style=\"width:100%\">" + res + "</table>";
					} else {
						inner.innerHTML = res;
					}
					if ( obj.firstChild.nextSibling.nextSibling ) {
						markAllnums( obj.firstChild.nextSibling.nextSibling.nextSibling.nextSibling );
					}
				},
				obj );
	}
}

function TriStateImgClicked( obj ) {
	if(obj.src.match(/checked_checkbox/)) {
		obj.nextSibling.nextSibling.checked = false;
	} else {
		obj.nextSibling.nextSibling.checked = true;
	}
	obj.nextSibling.nextSibling.onclick();
}

function change_check_image(obj) {
	obj.previousSibling.previousSibling.src = obj.checked ? "/images/checked_checkbox.png" : "/images/empty_checkbox.png"; 
}

function check_parents(obj) {
	if (obj.parentNode) {
		var parentTable = obj.parentNode.parentNode.parentNode.parentNode;
		var all_inputs = parentTable.getElementsByTagName( 'input' );
		var checked = "";
		for ( var i=0; i < all_inputs.length; i++ ) {
			if ( all_inputs[i].checked ) {
				if ( checked == "" ) {
					checked = "checked";
				} else if ( checked == "empty" ) {
					checked = "half";
				}
			} else {
				if ( checked == "" ) {
					checked = "empty";
				} else if ( checked == "checked" ) {
					checked = "half";
				}
			}
		}
		if (parentTable.parentNode.parentNode.previousSibling) {
			var TrParentTable = parentTable.parentNode.parentNode.previousSibling.childNodes[1];
			if (!TrParentTable) {
				TrParentTable = parentTable.parentNode.parentNode.previousSibling.childNodes[0];
			}
			// Checking if it's not the top cat tr
			if ( TrParentTable ) {
				// NOTE BORIS: It's a quick hack as if it's the top cat tr the edit element is the 4th child, if it's one of the inner cat trs the edit is the 5th
				// TODO BORIS: Change the tables structure so it will be always the same child number
				var n = 4;
				if ( !TrParentTable.childNodes[n].tagName ) {
					n++;
				}

				if( checked == "checked" ) {
					TrParentTable.childNodes[n].checked = true;
					change_check_image(TrParentTable.childNodes[n]);
				} else if ( checked == "half" ) {
					TrParentTable.childNodes[n-2].src ='/images/half_checked_checkbox.png';
				} else if ( checked == "empty" ) {
					TrParentTable.childNodes[n].checked = false;
					change_check_image(TrParentTable.childNodes[n]);
				}
				check_parents(TrParentTable.childNodes[n]);
			}
		}
	}
}

function markAllnums( caller ) {
	if ( caller.parentNode.parentNode.nextSibling && caller.parentNode.parentNode.nextSibling.getElementsByTagName && caller.parentNode.parentNode.nextSibling.firstChild.firstChild.tagName == "TABLE" ) {
		var objs = caller.parentNode.parentNode.nextSibling.getElementsByTagName( 'input' );
		for ( var i=0; i < objs.length; i++ ) {
			objs[i].checked = caller.checked;
			change_check_image(objs[i]);
		}
	}
}

function set_start_date () {
	var start_date = document.getElementById( 'start_Date' );
	var date_var = new Date();
	var day = date_var.getDate();
	if ( day < 10 ) {
		day = "0" + day;
	}
	var month = date_var.getMonth() + 1;
	if ( month < 10 ) {
		month = "0" + month;
	}
	start_date.value = month + "/" + day + "/" + date_var.getFullYear();
}

function colorTables() {
	for( var i=0; i<my_tables.length; i++ ) {
		var tbl = document.getElementById( my_tables[i] );
		addShadow( tbl );
	}
}

function on_load( func ) {
	if ( mandatory ) {
		for ( var i = 0; i < mandatory.length; i++ ) {
			var elem = document.getElementById( mandatory[i] );
			elem.className = elem.className + ' mandatory';
			
			if(mandatory[i]!='week_days_table' && mandatory[i]!='categories_table' && 
			   mandatory[i]!='prod_categories_table' && mandatory[i]!='audience_table' && mandatory[i]!='countries' &&
			   mandatory[i]!='audio_language' && mandatory[i]!='subtitle_language' && mandatory[i]!='company_country' &&
			   mandatory[i]!='country' && mandatory[i]!='title_selector' && mandatory[i]!='type_Of_Ad' && mandatory[i]!='campaign_ID')
			{
				var newNode = document.createElement('span'); 
				var parent = elem.parentNode; 
				newNode.appendChild(elem.cloneNode(true)); 
				parent.replaceChild(newNode, elem); 
				
				var star = document.createElement('span');
				star.style.color = "red";
				star.appendChild(document.createTextNode("*"));
				newNode.appendChild(star);
			}
		}
	}
	if ( func ) {
		return func();
	} else {
		return true;
	}
}

function submit_form( form_id, func ) {
	var mand_select = getElementsByClassName( document.body, 'mandatory', 'select' );

	var mandatory = getElementsByClassName( document.body, 'mandatory', 'input' );
	mandatory = mandatory.concat( getElementsByClassName( document.body, 'mandatory_empty', 'input' ) );
	mandatory = mandatory.concat( getElementsByClassName( document.body, 'mandatory', 'table' ) );
	mandatory = mandatory.concat( getElementsByClassName( document.body, 'mandatory_empty', 'table' ) );
	var flag = true;
	for ( var i = 0; i < mandatory.length; i++ ) {
		var thisflag = false;
		if ( mandatory[i].tagName.toLowerCase() == 'table' ) {
			var elems = mandatory[i].getElementsByTagName( 'input' );
			var chckbx_flag = false;
			var chckboxs = false;
			for ( var j = 0; j < elems.length; j++ ) {
				if ( elems[j].type == 'checkbox' || elems[j].type == 'radio' ) {
					chckboxs = true;
					if ( elems[j].checked ) {
						chckbx_flag = true;
					}
				} else if ( !elems[j].value ) {
					thisflag = true;
				}
			}
			if ( chckboxs && !chckbx_flag ) {
				thisflag = true;
			}
		} else if ( !mandatory[i].value ) {
			thisflag = true;
		}
		if ( thisflag ) {
			flag = false;
			mandatory[i].className = mandatory[i].className.replace( /mandatory_empty/, "" );
			mandatory[i].className = mandatory[i].className.replace( /mandatory/, "" );
			mandatory[i].className = mandatory[i].className + " mandatory_empty";
		} else {
			mandatory[i].className = mandatory[i].className.replace( /mandatory_empty/, "" );
			mandatory[i].className = mandatory[i].className.replace( /mandatory/, "" );
			mandatory[i].className = mandatory[i].className + " mandatory";
		}
	}
	var bothZero = 0;
	for(var i = 0; i < mand_select.length; i++) {
		//alert(mand_select[i].id+" "+mand_select[i].value);		
		if(mand_select[i].value == '00' && (mand_select[i].id == 'duration_minutes' || mand_select[i].id == 'duration_seconds')) {
			bothZero++;
		}
	}
	if(bothZero == 2) {
		flag = false;
		document.getElementById('duration_minutes').style.color = 'red';
        document.getElementById('duration_seconds').style.color = 'red';
	}
	else {
		//make black only in edit_ad, otherwise do nothing like before
		if(document.getElementById('duration_minutes')) {
			document.getElementById('duration_minutes').style.color = 'black';
	        document.getElementById('duration_seconds').style.color = 'black';
		}
	}
	if ( !flag ) {
		alert( "Please fill all the mandatory fields" );
		return false;
	}

	if ( func && !func() ) {
		return false;
	}
	var form = document.getElementById( form_id );
	form.submit();
}

function checkIfOpen( obj ) {
	if ( obj.outerHTML ) {
		if ( !(obj.parentNode.nextSibling.firstChild.firstChild.firstChild && obj.parentNode.nextSibling.firstChild.firstChild.firstChild.firstChild ) )
			return true;
		else 
			return false;
	} else {
		if ( !( obj.parentNode.nextSibling.firstChild.firstChild && obj.parentNode.nextSibling.firstChild.firstChild.firstChild ) )
			return true;
		else 
			return false;
	}
}
